{
    "name": "digitalocean",
    "displayName": "DigitalOcean",
    "description": "A Pulumi package for creating and managing DigitalOcean cloud resources.",
    "keywords": [
        "pulumi",
        "digitalocean"
    ],
    "homepage": "https://pulumi.io",
    "license": "Apache-2.0",
    "attribution": "This Pulumi package is based on the [`digitalocean` Terraform Provider](https://github.com/digitalocean/terraform-provider-digitalocean).",
    "repository": "https://github.com/pulumi/pulumi-digitalocean",
    "meta": {
        "moduleFormat": "(.*)(?:/[^/]*)"
    },
    "language": {
        "csharp": {
            "packageReferences": {
                "Pulumi": "3.*"
            },
            "namespaces": {
                "digitalocean": "DigitalOcean"
            },
            "compatibility": "tfbridge20",
            "respectSchemaVersion": true
        },
        "go": {
            "importBasePath": "github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean",
            "generateResourceContainerTypes": true,
            "generateExtraInputTypes": true,
            "respectSchemaVersion": true
        },
        "nodejs": {
            "packageDescription": "A Pulumi package for creating and managing DigitalOcean cloud resources.",
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/digitalocean/terraform-provider-digitalocean)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-digitalocean` repo](https://github.com/pulumi/pulumi-digitalocean/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-digitalocean` repo](https://github.com/digitalocean/terraform-provider-digitalocean/issues).",
            "devDependencies": {
                "@types/node": "^10.0.0"
            },
            "compatibility": "tfbridge20",
            "disableUnionOutputTypes": true,
            "respectSchemaVersion": true
        },
        "python": {
            "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/digitalocean/terraform-provider-digitalocean)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-digitalocean` repo](https://github.com/pulumi/pulumi-digitalocean/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-digitalocean` repo](https://github.com/digitalocean/terraform-provider-digitalocean/issues).",
            "compatibility": "tfbridge20",
            "respectSchemaVersion": true,
            "pyproject": {
                "enabled": true
            }
        }
    },
    "config": {
        "variables": {
            "apiEndpoint": {
                "type": "string",
                "description": "The URL to use for the DigitalOcean API.",
                "default": "https://api.digitalocean.com",
                "defaultInfo": {
                    "environment": [
                        "DIGITALOCEAN_API_URL"
                    ]
                }
            },
            "httpRetryMax": {
                "type": "integer",
                "description": "The maximum number of retries on a failed API request."
            },
            "httpRetryWaitMax": {
                "type": "number",
                "description": "The maximum wait time (in seconds) between failed API requests."
            },
            "httpRetryWaitMin": {
                "type": "number",
                "description": "The minimum wait time (in seconds) between failed API requests."
            },
            "requestsPerSecond": {
                "type": "number",
                "description": "The rate of requests per second to limit the HTTP client."
            },
            "spacesAccessId": {
                "type": "string",
                "description": "The access key ID for Spaces API operations."
            },
            "spacesEndpoint": {
                "type": "string",
                "description": "The URL to use for the DigitalOcean Spaces API.",
                "defaultInfo": {
                    "environment": [
                        "SPACES_ENDPOINT_URL"
                    ]
                }
            },
            "spacesSecretKey": {
                "type": "string",
                "description": "The secret access key for Spaces API operations."
            },
            "token": {
                "type": "string",
                "description": "The token key for API operations."
            }
        },
        "defaults": [
            "apiEndpoint"
        ]
    },
    "types": {
        "digitalocean:index/AppDedicatedIp:AppDedicatedIp": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the app.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IP address of the dedicated egress IP.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the dedicated egress IP: 'UNKNOWN', 'ASSIGNING', 'ASSIGNED', or 'REMOVED'\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "ip",
                        "status"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpec:AppSpec": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecAlert:AppSpecAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "databases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecDatabase:AppSpecDatabase"
                    }
                },
                "disableEdgeCache": {
                    "type": "boolean",
                    "description": "A boolean indicating whether to disable the edge cache for this app. 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. Available only for non-static sites. Requires custom domains and applies to all the domains of the app.\n"
                },
                "disableEmailObfuscation": {
                    "type": "boolean",
                    "description": "A boolean indicating whether to disable email obfuscation for this app. 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 custom domains and applies to all the domains of the app.\n"
                },
                "domainNames": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecDomainName:AppSpecDomainName"
                    },
                    "description": "Describes a domain where the application will be made available.\n"
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "deprecationMessage": "This attribute has been replaced by \u003cspan pulumi-lang-nodejs=\"`domain`\" pulumi-lang-dotnet=\"`Domain`\" pulumi-lang-go=\"`domain`\" pulumi-lang-python=\"`domain`\" pulumi-lang-yaml=\"`domain`\" pulumi-lang-java=\"`domain`\"\u003e`domain`\u003c/span\u003e which supports additional functionality."
                },
                "egresses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecEgress:AppSpecEgress"
                    },
                    "description": "Specification for app egress configurations.\n"
                },
                "enhancedThreatControlEnabled": {
                    "type": "boolean",
                    "description": "A boolean, when set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, enables enhanced analyzing of incoming traffic to prevent layer 7 DDoS attacks. 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 custom domains and applies to all the domains of the app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecEnv:AppSpecEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "features": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the features applied to the app. The default buildpack can be overridden here. List of available buildpacks can be found using the [doctl CLI](https://docs.digitalocean.com/reference/doctl/reference/apps/list-buildpacks/)\n"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecFunction:AppSpecFunction"
                    }
                },
                "ingress": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngress:AppSpecIngress",
                    "description": "Specification for component routing, rewrites, and redirects.\n"
                },
                "jobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecJob:AppSpecJob"
                    }
                },
                "maintenance": {
                    "$ref": "#/types/digitalocean:index/AppSpecMaintenance:AppSpecMaintenance",
                    "description": "Specification to configure maintenance settings for the app, such as maintenance mode and archiving the app.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The slug for the DigitalOcean data center region hosting the app.\n"
                },
                "services": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecService:AppSpecService"
                    }
                },
                "staticSites": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecStaticSite:AppSpecStaticSite"
                    }
                },
                "vpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecVpc:AppSpecVpc"
                    },
                    "description": "Specification for VPC.\n"
                },
                "workers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecWorker:AppSpecWorker"
                    }
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "domainNames",
                        "domains",
                        "features",
                        "ingress",
                        "name"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecAlert:AppSpecAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/AppSpecAlertDestinations:AppSpecAlertDestinations",
                    "description": "Specification for alert destination.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                }
            },
            "type": "object",
            "required": [
                "rule"
            ]
        },
        "digitalocean:index/AppSpecAlertDestinations:AppSpecAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Determines which emails receive alerts. The emails must be team members. If not set, the team's email is used by default.\n"
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecAlertDestinationsSlackWebhook:AppSpecAlertDestinationsSlackWebhook"
                    },
                    "description": "Determines which slack channels or users receive alerts.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecAlertDestinationsSlackWebhook:AppSpecAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ]
        },
        "digitalocean:index/AppSpecDatabase:AppSpecDatabase": {
            "properties": {
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "dbName": {
                    "type": "string",
                    "description": "The name of the MySQL or PostgreSQL database to configure.\n"
                },
                "dbUser": {
                    "type": "string",
                    "description": "The name of the MySQL or PostgreSQL user to configure.\n\nThis resource supports customized create timeouts. The default timeout is 30 minutes.\n"
                },
                "engine": {
                    "type": "string",
                    "description": "The database engine to use (`MYSQL`, `PG`, `REDIS`, `MONGODB`, `KAFKA`, or `OPENSEARCH`).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "production": {
                    "type": "boolean",
                    "description": "Whether this is a production or dev database.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the database engine.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecDomainName:AppSpecDomainName": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The hostname for the domain.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The domain type, which can be one of the following:\n- `DEFAULT`: The default .ondigitalocean.app domain assigned to this app.\n- `PRIMARY`: The primary domain for this app that is displayed as the default in the control panel, used in bindable environment variables, and any other places that reference an app's live URL. Only one domain may be set as primary.\n- `ALIAS`: A non-primary domain.\n"
                },
                "wildcard": {
                    "type": "boolean",
                    "description": "A boolean indicating whether the domain includes all sub-domains, in addition to the given domain.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "If the domain uses DigitalOcean DNS and you would like App Platform to automatically manage it for you, set this to the name of the domain on your account.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "type",
                        "wildcard"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecEgress:AppSpecEgress": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "The app egress type: `AUTOASSIGN`, `DEDICATED_IP`\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecEnv:AppSpecEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the environment variable.\n",
                    "secret": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecFunction:AppSpecFunction": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecFunctionAlert:AppSpecFunctionAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionBitbucket:AppSpecFunctionBitbucket",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "cors": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionCors:AppSpecFunctionCors",
                    "description": "The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.\n",
                    "deprecationMessage": "Service level CORS rules are deprecated in favor of ingresses"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecFunctionEnv:AppSpecFunctionEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionGit:AppSpecFunctionGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionGithub:AppSpecFunctionGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionGitlab:AppSpecFunctionGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "logDestinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecFunctionLogDestination:AppSpecFunctionLogDestination"
                    },
                    "description": "Describes a log forwarding destination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecFunctionRoute:AppSpecFunctionRoute"
                    },
                    "description": "An HTTP paths that should be routed to this component.\n",
                    "deprecationMessage": "Service level routes are deprecated in favor of ingresses"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "routes"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecFunctionAlert:AppSpecFunctionAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionAlertDestinations:AppSpecFunctionAlertDestinations",
                    "description": "Specification for alert destination.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The threshold for the type of the warning.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.\n"
                }
            },
            "type": "object",
            "required": [
                "operator",
                "rule",
                "value",
                "window"
            ]
        },
        "digitalocean:index/AppSpecFunctionAlertDestinations:AppSpecFunctionAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Determines which emails receive alerts. The emails must be team members. If not set, the team's email is used by default.\n"
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecFunctionAlertDestinationsSlackWebhook:AppSpecFunctionAlertDestinationsSlackWebhook"
                    },
                    "description": "Determines which slack channels or users receive alerts.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecFunctionAlertDestinationsSlackWebhook:AppSpecFunctionAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ]
        },
        "digitalocean:index/AppSpecFunctionBitbucket:AppSpecFunctionBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecFunctionCors:AppSpecFunctionCors": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e. This configures the Access-Control-Allow-Credentials header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.\n"
                },
                "allowOrigins": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionCorsAllowOrigins:AppSpecFunctionCorsAllowOrigins",
                    "description": "The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "string",
                    "description": "An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: \u003cspan pulumi-lang-nodejs=\"`5h30m`\" pulumi-lang-dotnet=\"`5h30m`\" pulumi-lang-go=\"`5h30m`\" pulumi-lang-python=\"`5h30m`\" pulumi-lang-yaml=\"`5h30m`\" pulumi-lang-java=\"`5h30m`\"\u003e`5h30m`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecFunctionCorsAllowOrigins:AppSpecFunctionCorsAllowOrigins": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "Exact string match.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "Prefix-based match.\n",
                    "deprecationMessage": "Prefix-based matching has been deprecated in favor of regex-based matching."
                },
                "regex": {
                    "type": "string",
                    "description": "RE2 style regex-based match.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecFunctionEnv:AppSpecFunctionEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the environment variable.\n",
                    "secret": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecFunctionGit:AppSpecFunctionGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecFunctionGithub:AppSpecFunctionGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecFunctionGitlab:AppSpecFunctionGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecFunctionLogDestination:AppSpecFunctionLogDestination": {
            "properties": {
                "datadog": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionLogDestinationDatadog:AppSpecFunctionLogDestinationDatadog",
                    "description": "Datadog configuration.\n"
                },
                "logtail": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionLogDestinationLogtail:AppSpecFunctionLogDestinationLogtail",
                    "description": "Logtail configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the log destination. Minimum length: 2. Maximum length: 42.\n"
                },
                "openSearch": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionLogDestinationOpenSearch:AppSpecFunctionLogDestinationOpenSearch",
                    "description": "OpenSearch configuration.\n"
                },
                "papertrail": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionLogDestinationPapertrail:AppSpecFunctionLogDestinationPapertrail",
                    "description": "Papertrail configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "digitalocean:index/AppSpecFunctionLogDestinationDatadog:AppSpecFunctionLogDestinationDatadog": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Datadog HTTP log intake endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ]
        },
        "digitalocean:index/AppSpecFunctionLogDestinationLogtail:AppSpecFunctionLogDestinationLogtail": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "Logtail token.\n"
                }
            },
            "type": "object",
            "required": [
                "token"
            ]
        },
        "digitalocean:index/AppSpecFunctionLogDestinationOpenSearch:AppSpecFunctionLogDestinationOpenSearch": {
            "properties": {
                "basicAuth": {
                    "$ref": "#/types/digitalocean:index/AppSpecFunctionLogDestinationOpenSearchBasicAuth:AppSpecFunctionLogDestinationOpenSearchBasicAuth",
                    "description": "Basic authentication details.\n"
                },
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch endpoint.\n"
                },
                "indexName": {
                    "type": "string",
                    "description": "OpenSearch index name.\n"
                }
            },
            "type": "object",
            "required": [
                "basicAuth"
            ]
        },
        "digitalocean:index/AppSpecFunctionLogDestinationOpenSearchBasicAuth:AppSpecFunctionLogDestinationOpenSearchBasicAuth": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for basic authentication.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "user for basic authentication.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecFunctionLogDestinationPapertrail:AppSpecFunctionLogDestinationPapertrail": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "Papertrail syslog endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ]
        },
        "digitalocean:index/AppSpecFunctionRoute:AppSpecFunctionRoute": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Paths must start with `/` and must be unique within the app.\n"
                },
                "preservePathPrefix": {
                    "type": "boolean",
                    "description": "An optional flag to preserve the path that is forwarded to the backend service.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecIngress:AppSpecIngress": {
            "properties": {
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecIngressRule:AppSpecIngressRule"
                    },
                    "description": "Rules for configuring HTTP ingress for component routes, CORS, rewrites, and redirects.\n"
                },
                "secureHeader": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngressSecureHeader:AppSpecIngressSecureHeader"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "secureHeader"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecIngressRule:AppSpecIngressRule": {
            "properties": {
                "component": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngressRuleComponent:AppSpecIngressRuleComponent",
                    "description": "The component to route to. Only one of \u003cspan pulumi-lang-nodejs=\"`component`\" pulumi-lang-dotnet=\"`Component`\" pulumi-lang-go=\"`component`\" pulumi-lang-python=\"`component`\" pulumi-lang-yaml=\"`component`\" pulumi-lang-java=\"`component`\"\u003e`component`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e may be set.\n"
                },
                "cors": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngressRuleCors:AppSpecIngressRuleCors",
                    "description": "The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.\n"
                },
                "match": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngressRuleMatch:AppSpecIngressRuleMatch",
                    "description": "The match configuration for the rule\n"
                },
                "redirect": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngressRuleRedirect:AppSpecIngressRuleRedirect",
                    "description": "The redirect configuration for the rule. Only one of \u003cspan pulumi-lang-nodejs=\"`component`\" pulumi-lang-dotnet=\"`Component`\" pulumi-lang-go=\"`component`\" pulumi-lang-python=\"`component`\" pulumi-lang-yaml=\"`component`\" pulumi-lang-java=\"`component`\"\u003e`component`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`redirect`\" pulumi-lang-dotnet=\"`Redirect`\" pulumi-lang-go=\"`redirect`\" pulumi-lang-python=\"`redirect`\" pulumi-lang-yaml=\"`redirect`\" pulumi-lang-java=\"`redirect`\"\u003e`redirect`\u003c/span\u003e may be set.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "component",
                        "cors",
                        "match"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecIngressRuleComponent:AppSpecIngressRuleComponent": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the component to route to.\n"
                },
                "preservePathPrefix": {
                    "type": "boolean",
                    "description": "An optional boolean flag to preserve the path that is forwarded to the backend service. By default, the HTTP request path will be trimmed from the left when forwarded to the component.\n"
                },
                "rewrite": {
                    "type": "string",
                    "description": "An optional field that will rewrite the path of the component to be what is specified here. This is mutually exclusive with \u003cspan pulumi-lang-nodejs=\"`preservePathPrefix`\" pulumi-lang-dotnet=\"`PreservePathPrefix`\" pulumi-lang-go=\"`preservePathPrefix`\" pulumi-lang-python=\"`preserve_path_prefix`\" pulumi-lang-yaml=\"`preservePathPrefix`\" pulumi-lang-java=\"`preservePathPrefix`\"\u003e`preserve_path_prefix`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "preservePathPrefix",
                        "rewrite"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecIngressRuleCors:AppSpecIngressRuleCors": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e. This configures the `Access-Control-Allow-Credentials` header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.\n"
                },
                "allowOrigins": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngressRuleCorsAllowOrigins:AppSpecIngressRuleCorsAllowOrigins",
                    "description": "The `Access-Control-Allow-Origin` can be\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.\n"
                },
                "maxAge": {
                    "type": "string",
                    "description": "An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: \u003cspan pulumi-lang-nodejs=\"`5h30m`\" pulumi-lang-dotnet=\"`5h30m`\" pulumi-lang-go=\"`5h30m`\" pulumi-lang-python=\"`5h30m`\" pulumi-lang-yaml=\"`5h30m`\" pulumi-lang-java=\"`5h30m`\"\u003e`5h30m`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecIngressRuleCorsAllowOrigins:AppSpecIngressRuleCorsAllowOrigins": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.\n",
                    "deprecationMessage": "Prefix-based matching has been deprecated in favor of regex-based matching."
                },
                "regex": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecIngressRuleMatch:AppSpecIngressRuleMatch": {
            "properties": {
                "authority": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngressRuleMatchAuthority:AppSpecIngressRuleMatchAuthority",
                    "description": "The authority (domain) to match on.\n"
                },
                "path": {
                    "$ref": "#/types/digitalocean:index/AppSpecIngressRuleMatchPath:AppSpecIngressRuleMatchPath",
                    "description": "The path to match on.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "authority",
                        "path"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecIngressRuleMatchAuthority:AppSpecIngressRuleMatchAuthority": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "Exact match.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "exact"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecIngressRuleMatchPath:AppSpecIngressRuleMatchPath": {
            "properties": {
                "prefix": {
                    "type": "string",
                    "description": "Prefix-based match.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "prefix"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecIngressRuleRedirect:AppSpecIngressRuleRedirect": {
            "properties": {
                "authority": {
                    "type": "string",
                    "description": "The authority/host to redirect to. This can be a hostname or IP address.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port to redirect to.\n"
                },
                "redirectCode": {
                    "type": "integer",
                    "description": "The redirect code to use. Supported values are \u003cspan pulumi-lang-nodejs=\"`300`\" pulumi-lang-dotnet=\"`300`\" pulumi-lang-go=\"`300`\" pulumi-lang-python=\"`300`\" pulumi-lang-yaml=\"`300`\" pulumi-lang-java=\"`300`\"\u003e`300`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`303`\" pulumi-lang-dotnet=\"`303`\" pulumi-lang-go=\"`303`\" pulumi-lang-python=\"`303`\" pulumi-lang-yaml=\"`303`\" pulumi-lang-java=\"`303`\"\u003e`303`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`304`\" pulumi-lang-dotnet=\"`304`\" pulumi-lang-go=\"`304`\" pulumi-lang-python=\"`304`\" pulumi-lang-yaml=\"`304`\" pulumi-lang-java=\"`304`\"\u003e`304`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e.\n"
                },
                "scheme": {
                    "type": "string",
                    "description": "The scheme to redirect to. Supported values are \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e\n"
                },
                "uri": {
                    "type": "string",
                    "description": "An optional URI path to redirect to.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecIngressSecureHeader:AppSpecIngressSecureHeader": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "value": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "key",
                        "value"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecJob:AppSpecJob": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecJobAlert:AppSpecJobAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobBitbucket:AppSpecJobBitbucket",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "buildCommand": {
                    "type": "string",
                    "description": "An optional build command to run while building this component from source.\n"
                },
                "dockerfilePath": {
                    "type": "string",
                    "description": "The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.\n"
                },
                "environmentSlug": {
                    "type": "string",
                    "description": "An environment slug describing the type of this app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecJobEnv:AppSpecJobEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobGit:AppSpecJobGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobGithub:AppSpecJobGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobGitlab:AppSpecJobGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "image": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobImage:AppSpecJobImage",
                    "description": "An image to use as the component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "instanceCount": {
                    "type": "integer",
                    "description": "The amount of instances that this component should be scaled to.\n"
                },
                "instanceSizeSlug": {
                    "type": "string",
                    "description": "The instance size to use for this component. This determines the plan (basic or professional) and the available CPU and memory. The list of available instance sizes can be [found with the API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Apps/operation/apps_list_instanceSizes) or using the [doctl CLI](https://docs.digitalocean.com/reference/doctl/) (`doctl apps tier instance-size list`). Default: `basic-xxs`\n"
                },
                "kind": {
                    "type": "string",
                    "description": "The type of job and when it will be run during the deployment process. It may be one of:\n- `UNSPECIFIED`: Default job type, will auto-complete to POST_DEPLOY kind.\n- `PRE_DEPLOY`: Indicates a job that runs before an app deployment.\n- `POST_DEPLOY`: Indicates a job that runs after an app deployment.\n- `FAILED_DEPLOY`: Indicates a job that runs after a component fails to deploy.\n"
                },
                "logDestinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecJobLogDestination:AppSpecJobLogDestination"
                    },
                    "description": "Describes a log forwarding destination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "runCommand": {
                    "type": "string",
                    "description": "An optional run command to override the component's default.\n"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                },
                "termination": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobTermination:AppSpecJobTermination",
                    "description": "Contains a component's termination parameters.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "digitalocean:index/AppSpecJobAlert:AppSpecJobAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobAlertDestinations:AppSpecJobAlertDestinations",
                    "description": "Specification for alert destination.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The threshold for the type of the warning.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.\n"
                }
            },
            "type": "object",
            "required": [
                "operator",
                "rule",
                "value",
                "window"
            ]
        },
        "digitalocean:index/AppSpecJobAlertDestinations:AppSpecJobAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Determines which emails receive alerts. The emails must be team members. If not set, the team's email is used by default.\n"
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecJobAlertDestinationsSlackWebhook:AppSpecJobAlertDestinationsSlackWebhook"
                    },
                    "description": "Determines which slack channels or users receive alerts.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecJobAlertDestinationsSlackWebhook:AppSpecJobAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ]
        },
        "digitalocean:index/AppSpecJobBitbucket:AppSpecJobBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecJobEnv:AppSpecJobEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the environment variable.\n",
                    "secret": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecJobGit:AppSpecJobGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecJobGithub:AppSpecJobGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecJobGitlab:AppSpecJobGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecJobImage:AppSpecJobImage": {
            "properties": {
                "deployOnPushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecJobImageDeployOnPush:AppSpecJobImageDeployOnPush"
                    },
                    "description": "Configures automatically deploying images pushed to DOCR.\n"
                },
                "digest": {
                    "type": "string",
                    "description": "The image digest. Cannot be specified if \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e is provided.\n"
                },
                "registry": {
                    "type": "string",
                    "description": "The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.\n"
                },
                "registryCredentials": {
                    "type": "string",
                    "description": "The credentials required to access a private Docker Hub or GitHub registry, in the following syntax `\u003cusername\u003e:\u003ctoken\u003e`.\n",
                    "secret": true
                },
                "registryType": {
                    "type": "string",
                    "description": "The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The repository name.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The repository tag. Defaults to \u003cspan pulumi-lang-nodejs=\"`latest`\" pulumi-lang-dotnet=\"`Latest`\" pulumi-lang-go=\"`latest`\" pulumi-lang-python=\"`latest`\" pulumi-lang-yaml=\"`latest`\" pulumi-lang-java=\"`latest`\"\u003e`latest`\u003c/span\u003e if not provided.\n"
                }
            },
            "type": "object",
            "required": [
                "registryType",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deployOnPushes",
                        "registryType",
                        "repository"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecJobImageDeployOnPush:AppSpecJobImageDeployOnPush": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy images pushed to DOCR.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecJobLogDestination:AppSpecJobLogDestination": {
            "properties": {
                "datadog": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobLogDestinationDatadog:AppSpecJobLogDestinationDatadog",
                    "description": "Datadog configuration.\n"
                },
                "logtail": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobLogDestinationLogtail:AppSpecJobLogDestinationLogtail",
                    "description": "Logtail configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the log destination. Minimum length: 2. Maximum length: 42.\n"
                },
                "openSearch": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobLogDestinationOpenSearch:AppSpecJobLogDestinationOpenSearch",
                    "description": "OpenSearch configuration.\n"
                },
                "papertrail": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobLogDestinationPapertrail:AppSpecJobLogDestinationPapertrail",
                    "description": "Papertrail configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "digitalocean:index/AppSpecJobLogDestinationDatadog:AppSpecJobLogDestinationDatadog": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Datadog HTTP log intake endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ]
        },
        "digitalocean:index/AppSpecJobLogDestinationLogtail:AppSpecJobLogDestinationLogtail": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "Logtail token.\n"
                }
            },
            "type": "object",
            "required": [
                "token"
            ]
        },
        "digitalocean:index/AppSpecJobLogDestinationOpenSearch:AppSpecJobLogDestinationOpenSearch": {
            "properties": {
                "basicAuth": {
                    "$ref": "#/types/digitalocean:index/AppSpecJobLogDestinationOpenSearchBasicAuth:AppSpecJobLogDestinationOpenSearchBasicAuth",
                    "description": "Basic authentication details.\n"
                },
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch endpoint.\n"
                },
                "indexName": {
                    "type": "string",
                    "description": "OpenSearch index name.\n"
                }
            },
            "type": "object",
            "required": [
                "basicAuth"
            ]
        },
        "digitalocean:index/AppSpecJobLogDestinationOpenSearchBasicAuth:AppSpecJobLogDestinationOpenSearchBasicAuth": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for basic authentication.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "user for basic authentication.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecJobLogDestinationPapertrail:AppSpecJobLogDestinationPapertrail": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "Papertrail syslog endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ]
        },
        "digitalocean:index/AppSpecJobTermination:AppSpecJobTermination": {
            "properties": {
                "gracePeriodSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.\n\nA \u003cspan pulumi-lang-nodejs=\"`function`\" pulumi-lang-dotnet=\"`Function`\" pulumi-lang-go=\"`function`\" pulumi-lang-python=\"`function`\" pulumi-lang-yaml=\"`function`\" pulumi-lang-java=\"`function`\"\u003e`function`\u003c/span\u003e component can contain:\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecMaintenance:AppSpecMaintenance": {
            "properties": {
                "archive": {
                    "type": "boolean",
                    "description": "Indicates whether the app should be archived. Setting this to true implies that enabled is set to true.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Indicates whether maintenance mode should be enabled for the app.\n"
                },
                "offlinePageUrl": {
                    "type": "string",
                    "description": "A custom offline page to display when maintenance mode is enabled or the app is archived.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecService:AppSpecService": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecServiceAlert:AppSpecServiceAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "autoscaling": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceAutoscaling:AppSpecServiceAutoscaling",
                    "description": "Configuration for automatically scaling this component based on metrics.\n"
                },
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceBitbucket:AppSpecServiceBitbucket",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "buildCommand": {
                    "type": "string",
                    "description": "An optional build command to run while building this component from source.\n"
                },
                "cors": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceCors:AppSpecServiceCors",
                    "description": "The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.\n",
                    "deprecationMessage": "Service level CORS rules are deprecated in favor of ingresses"
                },
                "dockerfilePath": {
                    "type": "string",
                    "description": "The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.\n"
                },
                "environmentSlug": {
                    "type": "string",
                    "description": "An environment slug describing the type of this app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecServiceEnv:AppSpecServiceEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceGit:AppSpecServiceGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceGithub:AppSpecServiceGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceGitlab:AppSpecServiceGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "healthCheck": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceHealthCheck:AppSpecServiceHealthCheck",
                    "description": "A health check to determine the availability of this component.\n"
                },
                "httpPort": {
                    "type": "integer",
                    "description": "The internal port on which this service's run command will listen.\n"
                },
                "image": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceImage:AppSpecServiceImage",
                    "description": "An image to use as the component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "instanceCount": {
                    "type": "integer",
                    "description": "The amount of instances that this component should be scaled to.\n"
                },
                "instanceSizeSlug": {
                    "type": "string",
                    "description": "The instance size to use for this component. This determines the plan (basic or professional) and the available CPU and memory. The list of available instance sizes can be [found with the API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Apps/operation/apps_list_instanceSizes) or using the [doctl CLI](https://docs.digitalocean.com/reference/doctl/) (`doctl apps tier instance-size list`). Default: `basic-xxs`\n"
                },
                "internalPorts": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "A list of ports on which this service will listen for internal traffic.\n"
                },
                "logDestinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecServiceLogDestination:AppSpecServiceLogDestination"
                    },
                    "description": "Describes a log forwarding destination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecServiceRoute:AppSpecServiceRoute"
                    },
                    "description": "An HTTP paths that should be routed to this component.\n",
                    "deprecationMessage": "Service level routes are deprecated in favor of ingresses"
                },
                "runCommand": {
                    "type": "string",
                    "description": "An optional run command to override the component's default.\n"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                },
                "termination": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceTermination:AppSpecServiceTermination",
                    "description": "Contains a component's termination parameters.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "httpPort",
                        "internalPorts",
                        "name",
                        "routes",
                        "runCommand"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecServiceAlert:AppSpecServiceAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceAlertDestinations:AppSpecServiceAlertDestinations",
                    "description": "Specification for alert destination.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The threshold for the type of the warning.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.\n"
                }
            },
            "type": "object",
            "required": [
                "operator",
                "rule",
                "value",
                "window"
            ]
        },
        "digitalocean:index/AppSpecServiceAlertDestinations:AppSpecServiceAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Determines which emails receive alerts. The emails must be team members. If not set, the team's email is used by default.\n"
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecServiceAlertDestinationsSlackWebhook:AppSpecServiceAlertDestinationsSlackWebhook"
                    },
                    "description": "Determines which slack channels or users receive alerts.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceAlertDestinationsSlackWebhook:AppSpecServiceAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ]
        },
        "digitalocean:index/AppSpecServiceAutoscaling:AppSpecServiceAutoscaling": {
            "properties": {
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "The maximum amount of instances for this component. Must be more than min_instance_count.\n"
                },
                "metrics": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceAutoscalingMetrics:AppSpecServiceAutoscalingMetrics",
                    "description": "The metrics that the component is scaled on.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "The minimum amount of instances for this component. Must be less than max_instance_count.\n"
                }
            },
            "type": "object",
            "required": [
                "maxInstanceCount",
                "metrics",
                "minInstanceCount"
            ]
        },
        "digitalocean:index/AppSpecServiceAutoscalingMetrics:AppSpecServiceAutoscalingMetrics": {
            "properties": {
                "cpu": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceAutoscalingMetricsCpu:AppSpecServiceAutoscalingMetricsCpu",
                    "description": "Settings for scaling the component based on CPU utilization.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceAutoscalingMetricsCpu:AppSpecServiceAutoscalingMetricsCpu": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "The average target CPU utilization for the component.\n"
                }
            },
            "type": "object",
            "required": [
                "percent"
            ]
        },
        "digitalocean:index/AppSpecServiceBitbucket:AppSpecServiceBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceCors:AppSpecServiceCors": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e. This configures the Access-Control-Allow-Credentials header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.\n"
                },
                "allowOrigins": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceCorsAllowOrigins:AppSpecServiceCorsAllowOrigins",
                    "description": "The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "string",
                    "description": "An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: \u003cspan pulumi-lang-nodejs=\"`5h30m`\" pulumi-lang-dotnet=\"`5h30m`\" pulumi-lang-go=\"`5h30m`\" pulumi-lang-python=\"`5h30m`\" pulumi-lang-yaml=\"`5h30m`\" pulumi-lang-java=\"`5h30m`\"\u003e`5h30m`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceCorsAllowOrigins:AppSpecServiceCorsAllowOrigins": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "Exact string match.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "Prefix-based match.\n",
                    "deprecationMessage": "Prefix-based matching has been deprecated in favor of regex-based matching."
                },
                "regex": {
                    "type": "string",
                    "description": "RE2 style regex-based match.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceEnv:AppSpecServiceEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the environment variable.\n",
                    "secret": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecServiceGit:AppSpecServiceGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceGithub:AppSpecServiceGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceGitlab:AppSpecServiceGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceHealthCheck:AppSpecServiceHealthCheck": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "The number of failed health checks before considered unhealthy.\n"
                },
                "httpPath": {
                    "type": "string",
                    "description": "The route path used for the HTTP health check ping.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait before beginning health checks.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between health checks.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The health check will be performed on this port instead of component's HTTP port.\n"
                },
                "successThreshold": {
                    "type": "integer",
                    "description": "The number of successful health checks before considered healthy.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "The number of seconds after which the check times out.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceImage:AppSpecServiceImage": {
            "properties": {
                "deployOnPushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecServiceImageDeployOnPush:AppSpecServiceImageDeployOnPush"
                    },
                    "description": "Configures automatically deploying images pushed to DOCR.\n"
                },
                "digest": {
                    "type": "string",
                    "description": "The image digest. Cannot be specified if \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e is provided.\n"
                },
                "registry": {
                    "type": "string",
                    "description": "The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.\n"
                },
                "registryCredentials": {
                    "type": "string",
                    "description": "The credentials required to access a private Docker Hub or GitHub registry, in the following syntax `\u003cusername\u003e:\u003ctoken\u003e`.\n",
                    "secret": true
                },
                "registryType": {
                    "type": "string",
                    "description": "The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The repository name.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The repository tag. Defaults to \u003cspan pulumi-lang-nodejs=\"`latest`\" pulumi-lang-dotnet=\"`Latest`\" pulumi-lang-go=\"`latest`\" pulumi-lang-python=\"`latest`\" pulumi-lang-yaml=\"`latest`\" pulumi-lang-java=\"`latest`\"\u003e`latest`\u003c/span\u003e if not provided.\n"
                }
            },
            "type": "object",
            "required": [
                "registryType",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deployOnPushes",
                        "registryType",
                        "repository"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecServiceImageDeployOnPush:AppSpecServiceImageDeployOnPush": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy images pushed to DOCR.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceLogDestination:AppSpecServiceLogDestination": {
            "properties": {
                "datadog": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceLogDestinationDatadog:AppSpecServiceLogDestinationDatadog",
                    "description": "Datadog configuration.\n"
                },
                "logtail": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceLogDestinationLogtail:AppSpecServiceLogDestinationLogtail",
                    "description": "Logtail configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the log destination. Minimum length: 2. Maximum length: 42.\n"
                },
                "openSearch": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceLogDestinationOpenSearch:AppSpecServiceLogDestinationOpenSearch",
                    "description": "OpenSearch configuration.\n"
                },
                "papertrail": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceLogDestinationPapertrail:AppSpecServiceLogDestinationPapertrail",
                    "description": "Papertrail configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "digitalocean:index/AppSpecServiceLogDestinationDatadog:AppSpecServiceLogDestinationDatadog": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Datadog HTTP log intake endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ]
        },
        "digitalocean:index/AppSpecServiceLogDestinationLogtail:AppSpecServiceLogDestinationLogtail": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "Logtail token.\n"
                }
            },
            "type": "object",
            "required": [
                "token"
            ]
        },
        "digitalocean:index/AppSpecServiceLogDestinationOpenSearch:AppSpecServiceLogDestinationOpenSearch": {
            "properties": {
                "basicAuth": {
                    "$ref": "#/types/digitalocean:index/AppSpecServiceLogDestinationOpenSearchBasicAuth:AppSpecServiceLogDestinationOpenSearchBasicAuth",
                    "description": "Basic authentication details.\n"
                },
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch endpoint.\n"
                },
                "indexName": {
                    "type": "string",
                    "description": "OpenSearch index name.\n"
                }
            },
            "type": "object",
            "required": [
                "basicAuth"
            ]
        },
        "digitalocean:index/AppSpecServiceLogDestinationOpenSearchBasicAuth:AppSpecServiceLogDestinationOpenSearchBasicAuth": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for basic authentication.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "user for basic authentication.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceLogDestinationPapertrail:AppSpecServiceLogDestinationPapertrail": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "Papertrail syslog endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ]
        },
        "digitalocean:index/AppSpecServiceRoute:AppSpecServiceRoute": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Paths must start with `/` and must be unique within the app.\n"
                },
                "preservePathPrefix": {
                    "type": "boolean",
                    "description": "An optional flag to preserve the path that is forwarded to the backend service.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecServiceTermination:AppSpecServiceTermination": {
            "properties": {
                "drainSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between selecting a container instance for termination and issuing the TERM signal. Selecting a container instance for termination begins an asynchronous drain of new requests on upstream load-balancers. Default: 15 seconds, Minimum 1, Maximum 110.\n\nA \u003cspan pulumi-lang-nodejs=\"`staticSite`\" pulumi-lang-dotnet=\"`StaticSite`\" pulumi-lang-go=\"`staticSite`\" pulumi-lang-python=\"`static_site`\" pulumi-lang-yaml=\"`staticSite`\" pulumi-lang-java=\"`staticSite`\"\u003e`static_site`\u003c/span\u003e can contain:\n"
                },
                "gracePeriodSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.\n\nA \u003cspan pulumi-lang-nodejs=\"`function`\" pulumi-lang-dotnet=\"`Function`\" pulumi-lang-go=\"`function`\" pulumi-lang-python=\"`function`\" pulumi-lang-yaml=\"`function`\" pulumi-lang-java=\"`function`\"\u003e`function`\u003c/span\u003e component can contain:\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecStaticSite:AppSpecStaticSite": {
            "properties": {
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/AppSpecStaticSiteBitbucket:AppSpecStaticSiteBitbucket",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "buildCommand": {
                    "type": "string",
                    "description": "An optional build command to run while building this component from source.\n"
                },
                "catchallDocument": {
                    "type": "string",
                    "description": "The name of the document to use as the fallback for any requests to documents that are not found when serving this static site.\n"
                },
                "cors": {
                    "$ref": "#/types/digitalocean:index/AppSpecStaticSiteCors:AppSpecStaticSiteCors",
                    "description": "The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.\n",
                    "deprecationMessage": "Service level CORS rules are deprecated in favor of ingresses"
                },
                "dockerfilePath": {
                    "type": "string",
                    "description": "The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.\n"
                },
                "environmentSlug": {
                    "type": "string",
                    "description": "An environment slug describing the type of this app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecStaticSiteEnv:AppSpecStaticSiteEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "errorDocument": {
                    "type": "string",
                    "description": "The name of the error document to use when serving this static site.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/AppSpecStaticSiteGit:AppSpecStaticSiteGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/AppSpecStaticSiteGithub:AppSpecStaticSiteGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/AppSpecStaticSiteGitlab:AppSpecStaticSiteGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "indexDocument": {
                    "type": "string",
                    "description": "The name of the index document to use when serving this static site.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "outputDir": {
                    "type": "string",
                    "description": "An optional path to where the built assets will be located, relative to the build context. If not set, App Platform will automatically scan for these directory names: `_static`, \u003cspan pulumi-lang-nodejs=\"`dist`\" pulumi-lang-dotnet=\"`Dist`\" pulumi-lang-go=\"`dist`\" pulumi-lang-python=\"`dist`\" pulumi-lang-yaml=\"`dist`\" pulumi-lang-java=\"`dist`\"\u003e`dist`\u003c/span\u003e, \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.\n"
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecStaticSiteRoute:AppSpecStaticSiteRoute"
                    },
                    "description": "An HTTP paths that should be routed to this component.\n",
                    "deprecationMessage": "Service level routes are deprecated in favor of ingresses"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "name",
                        "routes"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecStaticSiteBitbucket:AppSpecStaticSiteBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecStaticSiteCors:AppSpecStaticSiteCors": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e. This configures the Access-Control-Allow-Credentials header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.\n"
                },
                "allowOrigins": {
                    "$ref": "#/types/digitalocean:index/AppSpecStaticSiteCorsAllowOrigins:AppSpecStaticSiteCorsAllowOrigins",
                    "description": "The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.\n"
                },
                "maxAge": {
                    "type": "string",
                    "description": "An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: \u003cspan pulumi-lang-nodejs=\"`5h30m`\" pulumi-lang-dotnet=\"`5h30m`\" pulumi-lang-go=\"`5h30m`\" pulumi-lang-python=\"`5h30m`\" pulumi-lang-yaml=\"`5h30m`\" pulumi-lang-java=\"`5h30m`\"\u003e`5h30m`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecStaticSiteCorsAllowOrigins:AppSpecStaticSiteCorsAllowOrigins": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "Exact string match.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "Prefix-based match.\n",
                    "deprecationMessage": "Prefix-based matching has been deprecated in favor of regex-based matching."
                },
                "regex": {
                    "type": "string",
                    "description": "RE2 style regex-based match.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecStaticSiteEnv:AppSpecStaticSiteEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the environment variable.\n",
                    "secret": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecStaticSiteGit:AppSpecStaticSiteGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecStaticSiteGithub:AppSpecStaticSiteGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecStaticSiteGitlab:AppSpecStaticSiteGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecStaticSiteRoute:AppSpecStaticSiteRoute": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Paths must start with `/` and must be unique within the app.\n"
                },
                "preservePathPrefix": {
                    "type": "boolean",
                    "description": "An optional flag to preserve the path that is forwarded to the backend service.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecVpc:AppSpecVpc": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the VPC.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ]
        },
        "digitalocean:index/AppSpecWorker:AppSpecWorker": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecWorkerAlert:AppSpecWorkerAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "autoscaling": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerAutoscaling:AppSpecWorkerAutoscaling",
                    "description": "Configuration for automatically scaling this component based on metrics.\n"
                },
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerBitbucket:AppSpecWorkerBitbucket",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/bitbucket/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "buildCommand": {
                    "type": "string",
                    "description": "An optional build command to run while building this component from source.\n"
                },
                "dockerfilePath": {
                    "type": "string",
                    "description": "The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.\n"
                },
                "environmentSlug": {
                    "type": "string",
                    "description": "An environment slug describing the type of this app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecWorkerEnv:AppSpecWorkerEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerGit:AppSpecWorkerGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerGithub:AppSpecWorkerGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerGitlab:AppSpecWorkerGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "image": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerImage:AppSpecWorkerImage",
                    "description": "An image to use as the component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "instanceCount": {
                    "type": "integer",
                    "description": "The amount of instances that this component should be scaled to.\n"
                },
                "instanceSizeSlug": {
                    "type": "string",
                    "description": "The instance size to use for this component. This determines the plan (basic or professional) and the available CPU and memory. The list of available instance sizes can be [found with the API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Apps/operation/apps_list_instanceSizes) or using the [doctl CLI](https://docs.digitalocean.com/reference/doctl/) (`doctl apps tier instance-size list`). Default: `basic-xxs`\n"
                },
                "logDestinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecWorkerLogDestination:AppSpecWorkerLogDestination"
                    },
                    "description": "Describes a log forwarding destination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "runCommand": {
                    "type": "string",
                    "description": "An optional run command to override the component's default.\n"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                },
                "termination": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerTermination:AppSpecWorkerTermination",
                    "description": "Contains a component's termination parameters.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "digitalocean:index/AppSpecWorkerAlert:AppSpecWorkerAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerAlertDestinations:AppSpecWorkerAlertDestinations",
                    "description": "Specification for alert destination.\n"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The threshold for the type of the warning.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.\n"
                }
            },
            "type": "object",
            "required": [
                "operator",
                "rule",
                "value",
                "window"
            ]
        },
        "digitalocean:index/AppSpecWorkerAlertDestinations:AppSpecWorkerAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Determines which emails receive alerts. The emails must be team members. If not set, the team's email is used by default.\n"
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecWorkerAlertDestinationsSlackWebhook:AppSpecWorkerAlertDestinationsSlackWebhook"
                    },
                    "description": "Determines which slack channels or users receive alerts.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecWorkerAlertDestinationsSlackWebhook:AppSpecWorkerAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ]
        },
        "digitalocean:index/AppSpecWorkerAutoscaling:AppSpecWorkerAutoscaling": {
            "properties": {
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "The maximum amount of instances for this component. Must be more than min_instance_count.\n"
                },
                "metrics": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerAutoscalingMetrics:AppSpecWorkerAutoscalingMetrics",
                    "description": "The metrics that the component is scaled on.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "The minimum amount of instances for this component. Must be less than max_instance_count.\n"
                }
            },
            "type": "object",
            "required": [
                "maxInstanceCount",
                "metrics",
                "minInstanceCount"
            ]
        },
        "digitalocean:index/AppSpecWorkerAutoscalingMetrics:AppSpecWorkerAutoscalingMetrics": {
            "properties": {
                "cpu": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerAutoscalingMetricsCpu:AppSpecWorkerAutoscalingMetricsCpu",
                    "description": "Settings for scaling the component based on CPU utilization.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecWorkerAutoscalingMetricsCpu:AppSpecWorkerAutoscalingMetricsCpu": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "The average target CPU utilization for the component.\n"
                }
            },
            "type": "object",
            "required": [
                "percent"
            ]
        },
        "digitalocean:index/AppSpecWorkerBitbucket:AppSpecWorkerBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecWorkerEnv:AppSpecWorkerEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the environment variable.\n",
                    "secret": true
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "type"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecWorkerGit:AppSpecWorkerGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecWorkerGithub:AppSpecWorkerGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecWorkerGitlab:AppSpecWorkerGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecWorkerImage:AppSpecWorkerImage": {
            "properties": {
                "deployOnPushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppSpecWorkerImageDeployOnPush:AppSpecWorkerImageDeployOnPush"
                    },
                    "description": "Configures automatically deploying images pushed to DOCR.\n"
                },
                "digest": {
                    "type": "string",
                    "description": "The image digest. Cannot be specified if \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e is provided.\n"
                },
                "registry": {
                    "type": "string",
                    "description": "The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.\n"
                },
                "registryCredentials": {
                    "type": "string",
                    "description": "The credentials required to access a private Docker Hub or GitHub registry, in the following syntax `\u003cusername\u003e:\u003ctoken\u003e`.\n",
                    "secret": true
                },
                "registryType": {
                    "type": "string",
                    "description": "The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The repository name.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The repository tag. Defaults to \u003cspan pulumi-lang-nodejs=\"`latest`\" pulumi-lang-dotnet=\"`Latest`\" pulumi-lang-go=\"`latest`\" pulumi-lang-python=\"`latest`\" pulumi-lang-yaml=\"`latest`\" pulumi-lang-java=\"`latest`\"\u003e`latest`\u003c/span\u003e if not provided.\n"
                }
            },
            "type": "object",
            "required": [
                "registryType",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "deployOnPushes",
                        "registryType",
                        "repository"
                    ]
                }
            }
        },
        "digitalocean:index/AppSpecWorkerImageDeployOnPush:AppSpecWorkerImageDeployOnPush": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy images pushed to DOCR.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecWorkerLogDestination:AppSpecWorkerLogDestination": {
            "properties": {
                "datadog": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerLogDestinationDatadog:AppSpecWorkerLogDestinationDatadog",
                    "description": "Datadog configuration.\n"
                },
                "logtail": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerLogDestinationLogtail:AppSpecWorkerLogDestinationLogtail",
                    "description": "Logtail configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the log destination. Minimum length: 2. Maximum length: 42.\n"
                },
                "openSearch": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerLogDestinationOpenSearch:AppSpecWorkerLogDestinationOpenSearch",
                    "description": "OpenSearch configuration.\n"
                },
                "papertrail": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerLogDestinationPapertrail:AppSpecWorkerLogDestinationPapertrail",
                    "description": "Papertrail configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ]
        },
        "digitalocean:index/AppSpecWorkerLogDestinationDatadog:AppSpecWorkerLogDestinationDatadog": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "Datadog HTTP log intake endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ]
        },
        "digitalocean:index/AppSpecWorkerLogDestinationLogtail:AppSpecWorkerLogDestinationLogtail": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "Logtail token.\n"
                }
            },
            "type": "object",
            "required": [
                "token"
            ]
        },
        "digitalocean:index/AppSpecWorkerLogDestinationOpenSearch:AppSpecWorkerLogDestinationOpenSearch": {
            "properties": {
                "basicAuth": {
                    "$ref": "#/types/digitalocean:index/AppSpecWorkerLogDestinationOpenSearchBasicAuth:AppSpecWorkerLogDestinationOpenSearchBasicAuth",
                    "description": "Basic authentication details.\n"
                },
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch endpoint.\n"
                },
                "indexName": {
                    "type": "string",
                    "description": "OpenSearch index name.\n"
                }
            },
            "type": "object",
            "required": [
                "basicAuth"
            ]
        },
        "digitalocean:index/AppSpecWorkerLogDestinationOpenSearchBasicAuth:AppSpecWorkerLogDestinationOpenSearchBasicAuth": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for basic authentication.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "user for basic authentication.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/AppSpecWorkerLogDestinationPapertrail:AppSpecWorkerLogDestinationPapertrail": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "Papertrail syslog endpoint.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ]
        },
        "digitalocean:index/AppSpecWorkerTermination:AppSpecWorkerTermination": {
            "properties": {
                "gracePeriodSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.\n\nA \u003cspan pulumi-lang-nodejs=\"`function`\" pulumi-lang-dotnet=\"`Function`\" pulumi-lang-go=\"`function`\" pulumi-lang-python=\"`function`\" pulumi-lang-yaml=\"`function`\" pulumi-lang-java=\"`function`\"\u003e`function`\u003c/span\u003e component can contain:\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/DatabaseClusterBackupRestore:DatabaseClusterBackupRestore": {
            "properties": {
                "backupCreatedAt": {
                    "type": "string",
                    "description": "The timestamp of an existing database cluster backup in ISO8601 combined date and time format. The most recent backup will be used if excluded.\n\nThis resource supports customized create timeouts. The default timeout is 30 minutes.\n"
                },
                "databaseName": {
                    "type": "string",
                    "description": "The name of an existing database cluster from which the backup will be restored.\n"
                }
            },
            "type": "object",
            "required": [
                "databaseName"
            ]
        },
        "digitalocean:index/DatabaseClusterMaintenanceWindow:DatabaseClusterMaintenanceWindow": {
            "properties": {
                "day": {
                    "type": "string",
                    "description": "The day of the week on which to apply maintenance updates. May be one of \u003cspan pulumi-lang-nodejs=\"`monday`\" pulumi-lang-dotnet=\"`Monday`\" pulumi-lang-go=\"`monday`\" pulumi-lang-python=\"`monday`\" pulumi-lang-yaml=\"`monday`\" pulumi-lang-java=\"`monday`\"\u003e`monday`\u003c/span\u003e through \u003cspan pulumi-lang-nodejs=\"`sunday`\" pulumi-lang-dotnet=\"`Sunday`\" pulumi-lang-go=\"`sunday`\" pulumi-lang-python=\"`sunday`\" pulumi-lang-yaml=\"`sunday`\" pulumi-lang-java=\"`sunday`\"\u003e`sunday`\u003c/span\u003e.\n"
                },
                "hour": {
                    "type": "string",
                    "description": "The hour in UTC at which maintenance updates will be applied as a string in 24 hour format, e.g. `13:00`.\n"
                }
            },
            "type": "object",
            "required": [
                "day",
                "hour"
            ]
        },
        "digitalocean:index/DatabaseFirewallRule:DatabaseFirewallRule": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the firewall rule was created.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of resource that the firewall rule allows to access the database cluster. The possible values are: \u003cspan pulumi-lang-nodejs=\"`droplet`\" pulumi-lang-dotnet=\"`Droplet`\" pulumi-lang-go=\"`droplet`\" pulumi-lang-python=\"`droplet`\" pulumi-lang-yaml=\"`droplet`\" pulumi-lang-java=\"`droplet`\"\u003e`droplet`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`k8s`\" pulumi-lang-dotnet=\"`K8s`\" pulumi-lang-go=\"`k8s`\" pulumi-lang-python=\"`k8s`\" pulumi-lang-yaml=\"`k8s`\" pulumi-lang-java=\"`k8s`\"\u003e`k8s`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipAddr`\" pulumi-lang-dotnet=\"`IpAddr`\" pulumi-lang-go=\"`ipAddr`\" pulumi-lang-python=\"`ip_addr`\" pulumi-lang-yaml=\"`ipAddr`\" pulumi-lang-java=\"`ipAddr`\"\u003e`ip_addr`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`app`\" pulumi-lang-dotnet=\"`App`\" pulumi-lang-go=\"`app`\" pulumi-lang-python=\"`app`\" pulumi-lang-yaml=\"`app`\" pulumi-lang-java=\"`app`\"\u003e`app`\u003c/span\u003e.\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "A unique identifier for the firewall rule.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The ID of the specific resource, the name of a tag applied to a group of resources, or the IP address that the firewall rule allows to access the database cluster.\n"
                }
            },
            "type": "object",
            "required": [
                "type",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "type",
                        "uuid",
                        "value"
                    ]
                }
            }
        },
        "digitalocean:index/DatabaseKafkaTopicConfig:DatabaseKafkaTopicConfig": {
            "properties": {
                "cleanupPolicy": {
                    "type": "string",
                    "description": "The topic cleanup policy that describes whether messages should be deleted, compacted, or both when retention policies are violated.\nThis may be one of \"delete\", \"compact\", or \u003cspan pulumi-lang-nodejs=\"\"compactDelete\"\" pulumi-lang-dotnet=\"\"CompactDelete\"\" pulumi-lang-go=\"\"compactDelete\"\" pulumi-lang-python=\"\"compact_delete\"\" pulumi-lang-yaml=\"\"compactDelete\"\" pulumi-lang-java=\"\"compactDelete\"\"\u003e\"compact_delete\"\u003c/span\u003e.\n"
                },
                "compressionType": {
                    "type": "string",
                    "description": "The topic compression codecs used for a given topic.\nThis may be one of \"uncompressed\", \"gzip\", \"snappy\", \"lz4\", \"producer\", \"zstd\". \"uncompressed\" indicates that there is no compression and \"producer\" retains the original compression codec set by the producer.\n"
                },
                "deleteRetentionMs": {
                    "type": "string",
                    "description": "The amount of time, in ms, that deleted records are retained.\n"
                },
                "fileDeleteDelayMs": {
                    "type": "string",
                    "description": "The amount of time, in ms, to wait before deleting a topic log segment from the filesystem.\n"
                },
                "flushMessages": {
                    "type": "string",
                    "description": "The number of messages accumulated on a topic partition before they are flushed to disk.\n"
                },
                "flushMs": {
                    "type": "string",
                    "description": "The maximum time, in ms, that a topic is kept in memory before being flushed to disk.\n"
                },
                "indexIntervalBytes": {
                    "type": "string",
                    "description": "The interval, in bytes, in which entries are added to the offset index.\n"
                },
                "maxCompactionLagMs": {
                    "type": "string",
                    "description": "The maximum time, in ms, that a particular message will remain uncompacted. This will not apply if the \u003cspan pulumi-lang-nodejs=\"`compressionType`\" pulumi-lang-dotnet=\"`CompressionType`\" pulumi-lang-go=\"`compressionType`\" pulumi-lang-python=\"`compression_type`\" pulumi-lang-yaml=\"`compressionType`\" pulumi-lang-java=\"`compressionType`\"\u003e`compression_type`\u003c/span\u003e is set to \"uncompressed\" or it is set to \u003cspan pulumi-lang-nodejs=\"`producer`\" pulumi-lang-dotnet=\"`Producer`\" pulumi-lang-go=\"`producer`\" pulumi-lang-python=\"`producer`\" pulumi-lang-yaml=\"`producer`\" pulumi-lang-java=\"`producer`\"\u003e`producer`\u003c/span\u003e and the producer is not using compression.\n"
                },
                "maxMessageBytes": {
                    "type": "string",
                    "description": "The maximum size, in bytes, of a message.\n"
                },
                "messageDownConversionEnable": {
                    "type": "boolean",
                    "description": "Determines whether down-conversion of message formats for consumers is enabled.\n"
                },
                "messageFormatVersion": {
                    "type": "string",
                    "description": "The version of the inter-broker protocol that will be used. This may be one of \"0.8.0\", \"0.8.1\", \"0.8.2\", \"0.9.0\", \"0.10.0\", \"0.10.0-IV0\", \"0.10.0-IV1\", \"0.10.1\", \"0.10.1-IV0\", \"0.10.1-IV1\", \"0.10.1-IV2\", \"0.10.2\", \"0.10.2-IV0\", \"0.11.0\", \"0.11.0-IV0\", \"0.11.0-IV1\", \"0.11.0-IV2\", \"1.0\", \"1.0-IV0\", \"1.1\", \"1.1-IV0\", \"2.0\", \"2.0-IV0\", \"2.0-IV1\", \"2.1\", \"2.1-IV0\", \"2.1-IV1\", \"2.1-IV2\", \"2.2\", \"2.2-IV0\", \"2.2-IV1\", \"2.3\", \"2.3-IV0\", \"2.3-IV1\", \"2.4\", \"2.4-IV0\", \"2.4-IV1\", \"2.5\", \"2.5-IV0\", \"2.6\", \"2.6-IV0\", \"2.7\", \"2.7-IV0\", \"2.7-IV1\", \"2.7-IV2\", \"2.8\", \"2.8-IV0\", \"2.8-IV1\", \"3.0\", \"3.0-IV0\", \"3.0-IV1\", \"3.1\", \"3.1-IV0\", \"3.2\", \"3.2-IV0\", \"3.3\", \"3.3-IV0\", \"3.3-IV1\", \"3.3-IV2\", \"3.3-IV3\", \"3.4\", \"3.4-IV0\", \"3.5\", \"3.5-IV0\", \"3.5-IV1\", \"3.5-IV2\", \"3.6\", \"3.6-IV0\", \"3.6-IV1\", \"3.6-IV2\".\n"
                },
                "messageTimestampDifferenceMaxMs": {
                    "type": "string",
                    "description": "The maximum difference, in ms, between the timestamp specific in a message and when the broker receives the message.\n"
                },
                "messageTimestampType": {
                    "type": "string",
                    "description": "Specifies which timestamp to use for the message. This may be one of \u003cspan pulumi-lang-nodejs=\"\"createTime\"\" pulumi-lang-dotnet=\"\"CreateTime\"\" pulumi-lang-go=\"\"createTime\"\" pulumi-lang-python=\"\"create_time\"\" pulumi-lang-yaml=\"\"createTime\"\" pulumi-lang-java=\"\"createTime\"\"\u003e\"create_time\"\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"\"logAppendTime\"\" pulumi-lang-dotnet=\"\"LogAppendTime\"\" pulumi-lang-go=\"\"logAppendTime\"\" pulumi-lang-python=\"\"log_append_time\"\" pulumi-lang-yaml=\"\"logAppendTime\"\" pulumi-lang-java=\"\"logAppendTime\"\"\u003e\"log_append_time\"\u003c/span\u003e.\n"
                },
                "minCleanableDirtyRatio": {
                    "type": "number",
                    "description": "A scale between 0.0 and 1.0 which controls the frequency of the compactor. Larger values mean more frequent compactions. This is often paired with \u003cspan pulumi-lang-nodejs=\"`maxCompactionLagMs`\" pulumi-lang-dotnet=\"`MaxCompactionLagMs`\" pulumi-lang-go=\"`maxCompactionLagMs`\" pulumi-lang-python=\"`max_compaction_lag_ms`\" pulumi-lang-yaml=\"`maxCompactionLagMs`\" pulumi-lang-java=\"`maxCompactionLagMs`\"\u003e`max_compaction_lag_ms`\u003c/span\u003e to control the compactor frequency.\n"
                },
                "minCompactionLagMs": {
                    "type": "string"
                },
                "minInsyncReplicas": {
                    "type": "integer",
                    "description": "The number of replicas that must acknowledge a write before it is considered successful. -1 is a special setting to indicate that all nodes must ack a message before a write is considered successful. Default is 1, indicating at least 1 replica must acknowledge a write to be considered successful.\n"
                },
                "preallocate": {
                    "type": "boolean",
                    "description": "Determines whether to preallocate a file on disk when creating a new log segment within a topic.\n"
                },
                "retentionBytes": {
                    "type": "string",
                    "description": "The maximum size, in bytes, of a topic before messages are deleted. -1 is a special setting indicating that this setting has no limit.\n"
                },
                "retentionMs": {
                    "type": "string",
                    "description": "The maximum time, in ms, that a topic log file is retained before deleting it. -1 is a special setting indicating that this setting has no limit.\n"
                },
                "segmentBytes": {
                    "type": "string",
                    "description": "The maximum size, in bytes, of a single topic log file.\n"
                },
                "segmentIndexBytes": {
                    "type": "string",
                    "description": "The maximum size, in bytes, of the offset index.\n"
                },
                "segmentJitterMs": {
                    "type": "string",
                    "description": "The maximum time, in ms, subtracted from the scheduled segment disk flush time to avoid the thundering herd problem for segment flushing.\n"
                },
                "segmentMs": {
                    "type": "string",
                    "description": "The maximum time, in ms, before the topic log will flush to disk.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cleanupPolicy",
                        "compressionType",
                        "deleteRetentionMs",
                        "fileDeleteDelayMs",
                        "flushMessages",
                        "flushMs",
                        "indexIntervalBytes",
                        "maxCompactionLagMs",
                        "maxMessageBytes",
                        "messageDownConversionEnable",
                        "messageFormatVersion",
                        "messageTimestampDifferenceMaxMs",
                        "messageTimestampType",
                        "minCleanableDirtyRatio",
                        "minCompactionLagMs",
                        "preallocate",
                        "retentionBytes",
                        "retentionMs",
                        "segmentBytes",
                        "segmentIndexBytes",
                        "segmentJitterMs",
                        "segmentMs"
                    ]
                }
            }
        },
        "digitalocean:index/DatabaseOnlineMigrationSource:DatabaseOnlineMigrationSource": {
            "properties": {
                "dbName": {
                    "type": "string",
                    "description": "The name of the default database\n"
                },
                "host": {
                    "type": "string",
                    "description": "The FQDN pointing to the database cluster's current primary node.\n"
                },
                "password": {
                    "type": "string",
                    "description": "A randomly generated password for the default user.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port on which the database cluster is listening.\n"
                },
                "username": {
                    "type": "string",
                    "description": "The default user for the database.\n"
                }
            },
            "type": "object",
            "required": [
                "dbName",
                "host",
                "password",
                "port",
                "username"
            ]
        },
        "digitalocean:index/DatabasePostgresqlConfigPgbouncer:DatabasePostgresqlConfigPgbouncer": {
            "properties": {
                "autodbIdleTimeout": {
                    "type": "integer"
                },
                "autodbMaxDbConnections": {
                    "type": "integer"
                },
                "autodbPoolMode": {
                    "type": "string"
                },
                "autodbPoolSize": {
                    "type": "integer"
                },
                "ignoreStartupParameters": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "minPoolSize": {
                    "type": "integer"
                },
                "serverIdleTimeout": {
                    "type": "integer"
                },
                "serverLifetime": {
                    "type": "integer"
                },
                "serverResetQueryAlways": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "autodbIdleTimeout",
                        "autodbMaxDbConnections",
                        "autodbPoolMode",
                        "autodbPoolSize",
                        "ignoreStartupParameters",
                        "minPoolSize",
                        "serverIdleTimeout",
                        "serverLifetime",
                        "serverResetQueryAlways"
                    ]
                }
            }
        },
        "digitalocean:index/DatabasePostgresqlConfigTimescaledb:DatabasePostgresqlConfigTimescaledb": {
            "properties": {
                "maxBackgroundWorkers": {
                    "type": "integer"
                }
            },
            "type": "object"
        },
        "digitalocean:index/DatabaseUserSetting:DatabaseUserSetting": {
            "properties": {
                "acls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseUserSettingAcl:DatabaseUserSettingAcl"
                    },
                    "description": "A set of ACLs (Access Control Lists) specifying permission on topics with a Kafka cluster. The properties of an individual ACL are described below:\n\nAn individual ACL includes the following:\n"
                },
                "opensearchAcls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseUserSettingOpensearchAcl:DatabaseUserSettingOpensearchAcl"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/DatabaseUserSettingAcl:DatabaseUserSettingAcl": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "An identifier for the ACL, this will be automatically assigned when you create an ACL entry\n"
                },
                "permission": {
                    "type": "string",
                    "description": "The permission level applied to the ACL. This includes \"admin\", \"consume\", \"produce\", and \"produceconsume\". \"admin\" allows for producing and consuming as well as add/delete/update permission for topics. \"consume\" allows only for reading topic messages. \"produce\" allows only for writing topic messages. \"produceconsume\" allows for both reading and writing topic messages.\n"
                },
                "topic": {
                    "type": "string",
                    "description": "A regex for matching the topic(s) that this ACL should apply to. The regex can assume one of 3 patterns: \"*\", \"\u003cprefix\u003e*\", or \"\u003cliteral\u003e\". \"*\" is a special value indicating a wildcard that matches on all topics. \"\u003cprefix\u003e*\" defines a regex that matches all topics with the prefix. \"\u003cliteral\u003e\" performs an exact match on a topic name and only applies to that topic.\n"
                }
            },
            "type": "object",
            "required": [
                "permission",
                "topic"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "id",
                        "permission",
                        "topic"
                    ]
                }
            }
        },
        "digitalocean:index/DatabaseUserSettingOpensearchAcl:DatabaseUserSettingOpensearchAcl": {
            "properties": {
                "index": {
                    "type": "string"
                },
                "permission": {
                    "type": "string",
                    "description": "The permission level applied to the ACL. This includes \"admin\", \"consume\", \"produce\", and \"produceconsume\". \"admin\" allows for producing and consuming as well as add/delete/update permission for topics. \"consume\" allows only for reading topic messages. \"produce\" allows only for writing topic messages. \"produceconsume\" allows for both reading and writing topic messages.\n"
                }
            },
            "type": "object",
            "required": [
                "index",
                "permission"
            ]
        },
        "digitalocean:index/DropletAutoscaleConfig:DropletAutoscaleConfig": {
            "properties": {
                "cooldownMinutes": {
                    "type": "integer",
                    "description": "The cooldown duration between scaling events for the Droplet Autoscale pool.\n"
                },
                "maxInstances": {
                    "type": "integer",
                    "description": "The maximum number of instances to maintain in the Droplet Autoscale pool.\n"
                },
                "minInstances": {
                    "type": "integer",
                    "description": "The minimum number of instances to maintain in the Droplet Autoscale pool.\n"
                },
                "targetCpuUtilization": {
                    "type": "number",
                    "description": "The target average CPU load (in range `[0, 1]`) to maintain in the Droplet Autoscale pool.\n"
                },
                "targetMemoryUtilization": {
                    "type": "number",
                    "description": "The target average Memory load (in range `[0, 1]`) to maintain in the Droplet Autoscale \npool.\n"
                },
                "targetNumberInstances": {
                    "type": "integer",
                    "description": "The static number of instances to maintain in the pool Droplet Autoscale pool. This\nargument cannot be used with any other config options.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/DropletAutoscaleCurrentUtilization:DropletAutoscaleCurrentUtilization": {
            "properties": {
                "cpu": {
                    "type": "number",
                    "description": "Average CPU utilization\n"
                },
                "memory": {
                    "type": "number",
                    "description": "Average Memory utilization\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "cpu",
                        "memory"
                    ]
                }
            }
        },
        "digitalocean:index/DropletAutoscaleDropletTemplate:DropletAutoscaleDropletTemplate": {
            "properties": {
                "image": {
                    "type": "string",
                    "description": "Image slug of the Droplet Autoscale pool underlying resource(s).\n"
                },
                "ipv6": {
                    "type": "boolean",
                    "description": "Boolean flag to enable IPv6 networking on the Droplet Autoscale pool underlying resource(s).\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project UUID to create the Droplet Autoscale pool underlying resource(s).\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region slug of the Droplet Autoscale pool underlying resource(s).\n"
                },
                "size": {
                    "type": "string",
                    "description": "Size slug of the Droplet Autoscale pool underlying resource(s).\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "SSH fingerprints to add to the Droplet Autoscale pool underlying resource(s).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags to add to the Droplet Autoscale pool underlying resource(s).\n"
                },
                "userData": {
                    "type": "string",
                    "description": "Custom user data that can be added to the Droplet Autoscale pool underlying resource(s). This can be a \ncloud init script that user may configure to setup their application workload.\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "VPC UUID to create the Droplet Autoscale pool underlying resource(s). If not provided, this is inferred\nfrom the specified \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e (default VPC).\n"
                },
                "withDropletAgent": {
                    "type": "boolean",
                    "description": "Boolean flag to enable metric agent on the Droplet Autoscale pool underlying resource(s). The\nmetric agent enables collecting resource utilization metrics, which allows making resource based scaling decisions.\n"
                }
            },
            "type": "object",
            "required": [
                "image",
                "region",
                "size",
                "sshKeys"
            ]
        },
        "digitalocean:index/DropletBackupPolicy:DropletBackupPolicy": {
            "properties": {
                "hour": {
                    "type": "integer",
                    "description": "The hour of the day that the backup window will start (\u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`4`\" pulumi-lang-dotnet=\"`4`\" pulumi-lang-go=\"`4`\" pulumi-lang-python=\"`4`\" pulumi-lang-yaml=\"`4`\" pulumi-lang-java=\"`4`\"\u003e`4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`8`\" pulumi-lang-dotnet=\"`8`\" pulumi-lang-go=\"`8`\" pulumi-lang-python=\"`8`\" pulumi-lang-yaml=\"`8`\" pulumi-lang-java=\"`8`\"\u003e`8`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`12`\" pulumi-lang-dotnet=\"`12`\" pulumi-lang-go=\"`12`\" pulumi-lang-python=\"`12`\" pulumi-lang-yaml=\"`12`\" pulumi-lang-java=\"`12`\"\u003e`12`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`16`\" pulumi-lang-dotnet=\"`16`\" pulumi-lang-go=\"`16`\" pulumi-lang-python=\"`16`\" pulumi-lang-yaml=\"`16`\" pulumi-lang-java=\"`16`\"\u003e`16`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e).\n"
                },
                "plan": {
                    "type": "string",
                    "description": "The backup plan used for the Droplet. The plan can be either \u003cspan pulumi-lang-nodejs=\"`daily`\" pulumi-lang-dotnet=\"`Daily`\" pulumi-lang-go=\"`daily`\" pulumi-lang-python=\"`daily`\" pulumi-lang-yaml=\"`daily`\" pulumi-lang-java=\"`daily`\"\u003e`daily`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`weekly`\" pulumi-lang-dotnet=\"`Weekly`\" pulumi-lang-go=\"`weekly`\" pulumi-lang-python=\"`weekly`\" pulumi-lang-yaml=\"`weekly`\" pulumi-lang-java=\"`weekly`\"\u003e`weekly`\u003c/span\u003e.\n"
                },
                "weekday": {
                    "type": "string",
                    "description": "The day of the week on which the backup will occur (`SUN`, `MON`, `TUE`, `WED`, `THU`, `FRI`, `SAT`).\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/FirewallInboundRule:FirewallInboundRule": {
            "properties": {
                "portRange": {
                    "type": "string",
                    "description": "The ports on which traffic will be allowed\nspecified as a string containing a single port, a range (e.g. \"8000-9000\"),\nor \"1-65535\" to open all ports for a protocol. Required for when protocol is\n\u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The type of traffic to be allowed.\nThis may be one of \"tcp\", \"udp\", or \"icmp\".\n"
                },
                "sourceAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array of strings containing the IPv4\naddresses, IPv6 addresses, IPv4 CIDRs, and/or IPv6 CIDRs from which the\ninbound traffic will be accepted.\n"
                },
                "sourceDropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An array containing the IDs of\nthe Droplets from which the inbound traffic will be accepted.\n"
                },
                "sourceKubernetesIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the IDs of\nthe Kubernetes clusters from which the inbound traffic will be accepted.\n"
                },
                "sourceLoadBalancerUids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the IDs\nof the Load Balancers from which the inbound traffic will be accepted.\n"
                },
                "sourceTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the names of Tags\ncorresponding to groups of Droplets from which the inbound traffic\nwill be accepted.\n"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ]
        },
        "digitalocean:index/FirewallOutboundRule:FirewallOutboundRule": {
            "properties": {
                "destinationAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array of strings containing the IPv4\naddresses, IPv6 addresses, IPv4 CIDRs, and/or IPv6 CIDRs to which the\noutbound traffic will be allowed.\n"
                },
                "destinationDropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An array containing the IDs of\nthe Droplets to which the outbound traffic will be allowed.\n"
                },
                "destinationKubernetesIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the IDs of\nthe Kubernetes clusters to which the outbound traffic will be allowed.\n"
                },
                "destinationLoadBalancerUids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the IDs\nof the Load Balancers to which the outbound traffic will be allowed.\n"
                },
                "destinationTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the names of Tags\ncorresponding to groups of Droplets to which the outbound traffic will\nbe allowed.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "The ports on which traffic will be allowed\nspecified as a string containing a single port, a range (e.g. \"8000-9000\"),\nor \"1-65535\" to open all ports for a protocol. Required for when protocol is\n\u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The type of traffic to be allowed.\nThis may be one of \"tcp\", \"udp\", or \"icmp\".\n"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ]
        },
        "digitalocean:index/FirewallPendingChange:FirewallPendingChange": {
            "properties": {
                "dropletId": {
                    "type": "integer"
                },
                "removing": {
                    "type": "boolean"
                },
                "status": {
                    "type": "string",
                    "description": "A status string indicating the current state of the Firewall.\nThis can be \"waiting\", \"succeeded\", or \"failed\".\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentAgentGuardrail:GenaiAgentAgentGuardrail": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "Agent UUID for the Guardrail\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Guardrail\n"
                },
                "defaultResponse": {
                    "type": "string",
                    "description": "Default response for the Guardrail\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Guardrail\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                },
                "isAttached": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is attached\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is default\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of Guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of the Guardrail\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Guardrail\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Guardrail\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "isAttached",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentAnthropicApiKey:GenaiAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentApiKey:GenaiAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentApiKeyInfo:GenaiAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentChatbot:GenaiAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentChatbotIdentifier:GenaiAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "chatbotId"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentChildAgent:GenaiAgentChildAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChildAgentAnthropicApiKey:GenaiAgentChildAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChildAgentApiKeyInfo:GenaiAgentChildAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChildAgentApiKey:GenaiAgentChildAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChildAgentChatbotIdentifier:GenaiAgentChildAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChildAgentChatbot:GenaiAgentChildAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChildAgentDeployment:GenaiAgentChildAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agentId",
                        "instruction",
                        "modelUuid",
                        "name",
                        "projectId",
                        "region"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentChildAgentAnthropicApiKey:GenaiAgentChildAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentChildAgentApiKey:GenaiAgentChildAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentChildAgentApiKeyInfo:GenaiAgentChildAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentChildAgentChatbot:GenaiAgentChildAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentChildAgentChatbotIdentifier:GenaiAgentChildAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "chatbotId"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentChildAgentDeployment:GenaiAgentChildAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentDeployment:GenaiAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentFunction:GenaiAgentFunction": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Function\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Function\n"
                },
                "faasname": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "faasnamespace": {
                    "type": "string",
                    "description": "Namespace of function\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID for the Function\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentKnowledgeBase:GenaiAgentKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/GenaiAgentKnowledgeBaseLastIndexingJob:GenaiAgentKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "addedToAgentAt",
                        "createdAt",
                        "updatedAt",
                        "uuid"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentKnowledgeBaseLastIndexingJob:GenaiAgentKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "finishedAt",
                        "knowledgeBaseUuid",
                        "startedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentModel:GenaiAgentModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentModelAgreement:GenaiAgentModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentModelVersion:GenaiAgentModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentModelAgreement:GenaiAgentModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentModelVersion:GenaiAgentModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentOpenAiApiKey:GenaiAgentOpenAiApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentParentAgent:GenaiAgentParentAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentParentAgentAnthropicApiKey:GenaiAgentParentAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentParentAgentApiKeyInfo:GenaiAgentParentAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentParentAgentApiKey:GenaiAgentParentAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentParentAgentChatbotIdentifier:GenaiAgentParentAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentParentAgentChatbot:GenaiAgentParentAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentParentAgentDeployment:GenaiAgentParentAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agentId",
                        "instruction",
                        "modelUuid",
                        "name",
                        "projectId",
                        "region"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentParentAgentAnthropicApiKey:GenaiAgentParentAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentParentAgentApiKey:GenaiAgentParentAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentParentAgentApiKeyInfo:GenaiAgentParentAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentParentAgentChatbot:GenaiAgentParentAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentParentAgentChatbotIdentifier:GenaiAgentParentAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "chatbotId"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentParentAgentDeployment:GenaiAgentParentAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentTemplate:GenaiAgentTemplate": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Template\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Template\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentTemplateKnowledgeBase:GenaiAgentTemplateKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentTemplateModel:GenaiAgentTemplateModel"
                    },
                    "description": "Model of the Agent Template\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent Template\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent Template\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "uuid of the Agent Template\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentTemplateKnowledgeBase:GenaiAgentTemplateKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/GenaiAgentTemplateKnowledgeBaseLastIndexingJob:GenaiAgentTemplateKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "addedToAgentAt",
                        "createdAt",
                        "updatedAt",
                        "uuid"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentTemplateKnowledgeBaseLastIndexingJob:GenaiAgentTemplateKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "finishedAt",
                        "knowledgeBaseUuid",
                        "startedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentTemplateModel:GenaiAgentTemplateModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentTemplateModelAgreement:GenaiAgentTemplateModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentTemplateModelVersion:GenaiAgentTemplateModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiAgentTemplateModelAgreement:GenaiAgentTemplateModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiAgentTemplateModelVersion:GenaiAgentTemplateModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiKnowledgeBaseDataSourceSpacesDataSource:GenaiKnowledgeBaseDataSourceSpacesDataSource": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the Spaces bucket\n"
                },
                "itemPath": {
                    "type": "string",
                    "description": "The path to the item in the bucket\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region of the Spaces bucket\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiKnowledgeBaseDataSourceWebCrawlerDataSource:GenaiKnowledgeBaseDataSourceWebCrawlerDataSource": {
            "properties": {
                "baseUrl": {
                    "type": "string",
                    "description": "The base URL to crawl\n"
                },
                "crawlingOption": {
                    "type": "string",
                    "description": "Options for specifying how URLs found on pages should be handled. \n- UNKNOWN: Default unknown value\n- SCOPED: Only include the base URL.\n- PATH: Crawl the base URL and linked pages within the URL path.\n- DOMAIN: Crawl the base URL and linked pages within the same domain.\n- SUBDOMAINS: Crawl the base URL and linked pages for any subdomain.\n"
                },
                "embedMedia": {
                    "type": "boolean",
                    "description": "Whether to embed media content\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiKnowledgeBaseLastIndexingJob:GenaiKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "finishedAt",
                        "knowledgeBaseUuid",
                        "startedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiOpenaiApiKeyModel:GenaiOpenaiApiKeyModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiOpenaiApiKeyModelAgreement:GenaiOpenaiApiKeyModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiOpenaiApiKeyModelVersion:GenaiOpenaiApiKeyModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GenaiOpenaiApiKeyModelAgreement:GenaiOpenaiApiKeyModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GenaiOpenaiApiKeyModelVersion:GenaiOpenaiApiKeyModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentAgentGuardrail:GradientaiAgentAgentGuardrail": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "Agent UUID for the Guardrail\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Guardrail\n"
                },
                "defaultResponse": {
                    "type": "string",
                    "description": "Default response for the Guardrail\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Guardrail\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                },
                "isAttached": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is attached\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is default\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of Guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of the Guardrail\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Guardrail\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Guardrail\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "isAttached",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentAnthropicApiKey:GradientaiAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentApiKey:GradientaiAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentApiKeyInfo:GradientaiAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentChatbot:GradientaiAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentChatbotIdentifier:GradientaiAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "chatbotId"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentChildAgent:GradientaiAgentChildAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgentAnthropicApiKey:GradientaiAgentChildAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgentApiKeyInfo:GradientaiAgentChildAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgentApiKey:GradientaiAgentChildAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgentChatbotIdentifier:GradientaiAgentChildAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgentChatbot:GradientaiAgentChildAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgentDeployment:GradientaiAgentChildAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agentId",
                        "instruction",
                        "modelUuid",
                        "name",
                        "projectId",
                        "region"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentChildAgentAnthropicApiKey:GradientaiAgentChildAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentChildAgentApiKey:GradientaiAgentChildAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentChildAgentApiKeyInfo:GradientaiAgentChildAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentChildAgentChatbot:GradientaiAgentChildAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentChildAgentChatbotIdentifier:GradientaiAgentChildAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "chatbotId"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentChildAgentDeployment:GradientaiAgentChildAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentDeployment:GradientaiAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentFunction:GradientaiAgentFunction": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Function\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Function\n"
                },
                "faasname": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "faasnamespace": {
                    "type": "string",
                    "description": "Namespace of function\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID for the Function\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentKnowledgeBase:GradientaiAgentKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/GradientaiAgentKnowledgeBaseLastIndexingJob:GradientaiAgentKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "addedToAgentAt",
                        "createdAt",
                        "updatedAt",
                        "uuid"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentKnowledgeBaseLastIndexingJob:GradientaiAgentKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "finishedAt",
                        "knowledgeBaseUuid",
                        "startedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentModel:GradientaiAgentModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentModelAgreement:GradientaiAgentModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentModelVersion:GradientaiAgentModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentModelAgreement:GradientaiAgentModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentModelVersion:GradientaiAgentModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentOpenAiApiKey:GradientaiAgentOpenAiApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentParentAgent:GradientaiAgentParentAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgentAnthropicApiKey:GradientaiAgentParentAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgentApiKeyInfo:GradientaiAgentParentAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgentApiKey:GradientaiAgentParentAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgentChatbotIdentifier:GradientaiAgentParentAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgentChatbot:GradientaiAgentParentAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgentDeployment:GradientaiAgentParentAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "agentId",
                        "instruction",
                        "modelUuid",
                        "name",
                        "projectId",
                        "region"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentParentAgentAnthropicApiKey:GradientaiAgentParentAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentParentAgentApiKey:GradientaiAgentParentAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentParentAgentApiKeyInfo:GradientaiAgentParentAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "deletedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentParentAgentChatbot:GradientaiAgentParentAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentParentAgentChatbotIdentifier:GradientaiAgentParentAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "chatbotId"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentParentAgentDeployment:GradientaiAgentParentAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentTemplate:GradientaiAgentTemplate": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Template\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Template\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentTemplateKnowledgeBase:GradientaiAgentTemplateKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentTemplateModel:GradientaiAgentTemplateModel"
                    },
                    "description": "Model of the Agent Template\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent Template\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent Template\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "uuid of the Agent Template\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentTemplateKnowledgeBase:GradientaiAgentTemplateKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/GradientaiAgentTemplateKnowledgeBaseLastIndexingJob:GradientaiAgentTemplateKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "addedToAgentAt",
                        "createdAt",
                        "updatedAt",
                        "uuid"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentTemplateKnowledgeBaseLastIndexingJob:GradientaiAgentTemplateKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "finishedAt",
                        "knowledgeBaseUuid",
                        "startedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentTemplateModel:GradientaiAgentTemplateModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentTemplateModelAgreement:GradientaiAgentTemplateModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentTemplateModelVersion:GradientaiAgentTemplateModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiAgentTemplateModelAgreement:GradientaiAgentTemplateModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiAgentTemplateModelVersion:GradientaiAgentTemplateModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiKnowledgeBaseDataSource:GradientaiKnowledgeBaseDataSource": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "fileUploadDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceFileUploadDataSource:GradientaiKnowledgeBaseDataSourceFileUploadDataSource"
                    },
                    "description": "File upload data source configuration\n"
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceLastIndexingJob:GradientaiKnowledgeBaseDataSourceLastIndexingJob"
                    },
                    "description": "Last indexing job for the data source\n"
                },
                "spacesDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceSpacesDataSource:GradientaiKnowledgeBaseDataSourceSpacesDataSource"
                    },
                    "description": "Spaces data source configuration\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                },
                "webCrawlerDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource:GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource"
                    },
                    "description": "Web crawler data source configuration\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiKnowledgeBaseDataSourceFileUploadDataSource:GradientaiKnowledgeBaseDataSourceFileUploadDataSource": {
            "properties": {
                "originalFileName": {
                    "type": "string",
                    "description": "The original name of the uploaded file\n"
                },
                "sizeInBytes": {
                    "type": "string",
                    "description": "The size of the file in bytes\n"
                },
                "storedObjectKey": {
                    "type": "string",
                    "description": "The stored object key for the file\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiKnowledgeBaseDataSourceLastIndexingJob:GradientaiKnowledgeBaseDataSourceLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "finishedAt",
                        "knowledgeBaseUuid",
                        "startedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiKnowledgeBaseDataSourceSpacesDataSource:GradientaiKnowledgeBaseDataSourceSpacesDataSource": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the Spaces bucket\n"
                },
                "itemPath": {
                    "type": "string",
                    "description": "The path to the item in the bucket\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region of the Spaces bucket\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource:GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource": {
            "properties": {
                "baseUrl": {
                    "type": "string",
                    "description": "The base URL to crawl\n"
                },
                "crawlingOption": {
                    "type": "string",
                    "description": "Options for specifying how URLs found on pages should be handled. \n- UNKNOWN: Default unknown value\n- SCOPED: Only include the base URL.\n- PATH: Crawl the base URL and linked pages within the URL path.\n- DOMAIN: Crawl the base URL and linked pages within the same domain.\n- SUBDOMAINS: Crawl the base URL and linked pages for any subdomain.\n"
                },
                "embedMedia": {
                    "type": "boolean",
                    "description": "Whether to embed media content\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiKnowledgeBaseLastIndexingJob:GradientaiKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "finishedAt",
                        "knowledgeBaseUuid",
                        "startedAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiOpenaiApiKeyModel:GradientaiOpenaiApiKeyModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiOpenaiApiKeyModelAgreement:GradientaiOpenaiApiKeyModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiOpenaiApiKeyModelVersion:GradientaiOpenaiApiKeyModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/GradientaiOpenaiApiKeyModelAgreement:GradientaiOpenaiApiKeyModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/GradientaiOpenaiApiKeyModelVersion:GradientaiOpenaiApiKeyModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/KubernetesClusterAmdGpuDeviceMetricsExporterPlugin:KubernetesClusterAmdGpuDeviceMetricsExporterPlugin": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag whether the component is enabled or not.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "digitalocean:index/KubernetesClusterAmdGpuDevicePlugin:KubernetesClusterAmdGpuDevicePlugin": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag whether the component should be enabled or not.\n\u003cspan pulumi-lang-nodejs=\"`amdGpuDeviceMetricsExporterPlugin`\" pulumi-lang-dotnet=\"`AmdGpuDeviceMetricsExporterPlugin`\" pulumi-lang-go=\"`amdGpuDeviceMetricsExporterPlugin`\" pulumi-lang-python=\"`amd_gpu_device_metrics_exporter_plugin`\" pulumi-lang-yaml=\"`amdGpuDeviceMetricsExporterPlugin`\" pulumi-lang-java=\"`amdGpuDeviceMetricsExporterPlugin`\"\u003e`amd_gpu_device_metrics_exporter_plugin`\u003c/span\u003e - (Optional) Block containing options for the AMD GPU device metrics exporter component. If not specified, the component will not be installed in the cluster.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "digitalocean:index/KubernetesClusterClusterAutoscalerConfiguration:KubernetesClusterClusterAutoscalerConfiguration": {
            "properties": {
                "expanders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "scaleDownUnneededTime": {
                    "type": "string",
                    "description": "String setting how long a node should be unneeded before it's eligible for scale down.\n\nThis resource supports customized create timeouts. The default timeout is 30 minutes.\n"
                },
                "scaleDownUtilizationThreshold": {
                    "type": "number",
                    "description": "Float setting the Node utilization level, defined as sum of requested resources divided by capacity, in which a node can be considered for scale down.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/KubernetesClusterControlPlaneFirewall:KubernetesClusterControlPlaneFirewall": {
            "properties": {
                "allowedAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of addresses allowed (CIDR notation).\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag whether the firewall should be enabled or not.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedAddresses",
                "enabled"
            ]
        },
        "digitalocean:index/KubernetesClusterKubeConfig:KubernetesClusterKubeConfig": {
            "properties": {
                "clientCertificate": {
                    "type": "string",
                    "description": "The base64 encoded public certificate used by clients to access the cluster. Only available if token authentication is not supported on your cluster.\n"
                },
                "clientKey": {
                    "type": "string",
                    "description": "The base64 encoded private key used by clients to access the cluster. Only available if token authentication is not supported on your cluster.\n"
                },
                "clusterCaCertificate": {
                    "type": "string",
                    "description": "The base64 encoded public certificate for the cluster's certificate authority.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The date and time when the credentials will expire and need to be regenerated.\n"
                },
                "host": {
                    "type": "string",
                    "description": "The URL of the API server on the Kubernetes master node.\n"
                },
                "rawConfig": {
                    "type": "string",
                    "description": "The full contents of the Kubernetes cluster's kubeconfig file.\n"
                },
                "token": {
                    "type": "string",
                    "description": "The DigitalOcean API access token used by clients to access the cluster.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "clientCertificate",
                        "clientKey",
                        "clusterCaCertificate",
                        "expiresAt",
                        "host",
                        "rawConfig",
                        "token"
                    ]
                }
            }
        },
        "digitalocean:index/KubernetesClusterMaintenancePolicy:KubernetesClusterMaintenancePolicy": {
            "properties": {
                "day": {
                    "type": "string",
                    "description": "The day of the maintenance window policy. May be one of \"monday\" through \"sunday\", or \"any\" to indicate an arbitrary week day.\n"
                },
                "duration": {
                    "type": "string",
                    "description": "A string denoting the duration of the service window, e.g., \"04:00\".\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "The start time in UTC of the maintenance window policy in 24-hour clock format / HH:MM notation (e.g., 15:00).\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "day",
                        "duration",
                        "startTime"
                    ]
                }
            }
        },
        "digitalocean:index/KubernetesClusterNodePool:KubernetesClusterNodePool": {
            "properties": {
                "actualNodeCount": {
                    "type": "integer",
                    "description": "A computed field representing the actual number of nodes in the node pool, which is especially useful when auto-scaling is enabled.\n"
                },
                "autoScale": {
                    "type": "boolean",
                    "description": "Enable auto-scaling of the number of nodes in the node pool within the given min/max range.\n"
                },
                "id": {
                    "type": "string",
                    "description": "A unique ID that can be used to identify and reference the node.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of key/value pairs to apply to nodes in the pool. The labels are exposed in the Kubernetes API as labels in the metadata of the corresponding [Node resources](https://kubernetes.io/docs/concepts/architecture/nodes/).\n"
                },
                "maxNodes": {
                    "type": "integer",
                    "description": "If auto-scaling is enabled, this represents the maximum number of nodes that the node pool can be scaled up to.\n"
                },
                "minNodes": {
                    "type": "integer",
                    "description": "If auto-scaling is enabled, this represents the minimum number of nodes that the node pool can be scaled down to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the node pool.\n"
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "The number of Droplet instances in the node pool. If auto-scaling is enabled, this should only be set if the desired result is to explicitly reset the number of nodes to this value. If auto-scaling is enabled, and the node count is outside of the given min/max range, it will use the min nodes value.\n"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterNodePoolNode:KubernetesClusterNodePoolNode"
                    },
                    "description": "A list of nodes in the pool. Each node exports the following attributes:\n"
                },
                "size": {
                    "type": "string",
                    "description": "The slug identifier for the type of Droplet to be used as workers in the node pool.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names applied to the node pool.\n"
                },
                "taints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterNodePoolTaint:KubernetesClusterNodePoolTaint"
                    },
                    "description": "A block representing a taint applied to all nodes in the pool. Each taint exports the following attributes (taints must be unique by key and effect pair):\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "size"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "actualNodeCount",
                        "id",
                        "name",
                        "nodes",
                        "size"
                    ]
                }
            }
        },
        "digitalocean:index/KubernetesClusterNodePoolNode:KubernetesClusterNodePoolNode": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the node was created.\n"
                },
                "dropletId": {
                    "type": "string",
                    "description": "The id of the node's droplet\n"
                },
                "id": {
                    "type": "string",
                    "description": "A unique ID that can be used to identify and reference the node.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the Kubernetes cluster.\n"
                },
                "status": {
                    "type": "string",
                    "description": "A string indicating the current status of the individual node.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time when the node was last updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "dropletId",
                        "id",
                        "name",
                        "status",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/KubernetesClusterNodePoolTaint:KubernetesClusterNodePoolTaint": {
            "properties": {
                "effect": {
                    "type": "string",
                    "description": "How the node reacts to pods that it won't tolerate. Available effect values are: \"NoSchedule\", \"PreferNoSchedule\", \"NoExecute\".\n"
                },
                "key": {
                    "type": "string",
                    "description": "An arbitrary string. The \"key\" and \"value\" fields of the \"taint\" object form a key-value pair.\n"
                },
                "value": {
                    "type": "string",
                    "description": "An arbitrary string. The \"key\" and \"value\" fields of the \"taint\" object form a key-value pair.\n"
                }
            },
            "type": "object",
            "required": [
                "effect",
                "key",
                "value"
            ]
        },
        "digitalocean:index/KubernetesClusterNvidiaGpuDevicePlugin:KubernetesClusterNvidiaGpuDevicePlugin": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag whether the component should be enabled or not.\n\u003cspan pulumi-lang-nodejs=\"`rdmaSharedDevicePlugin`\" pulumi-lang-dotnet=\"`RdmaSharedDevicePlugin`\" pulumi-lang-go=\"`rdmaSharedDevicePlugin`\" pulumi-lang-python=\"`rdma_shared_device_plugin`\" pulumi-lang-yaml=\"`rdmaSharedDevicePlugin`\" pulumi-lang-java=\"`rdmaSharedDevicePlugin`\"\u003e`rdma_shared_device_plugin`\u003c/span\u003e - (Optional) Block containing options for the RDMA Shared Device Plugin (k8s-rdma-shared-dev-plugin) component. If not specified, the component will be enabled by default for clusters with GPU nodes connected to a dedicated high-speed networking fabric.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "digitalocean:index/KubernetesClusterRdmaSharedDevicePlugin:KubernetesClusterRdmaSharedDevicePlugin": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag whether the component is enabled or not.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "digitalocean:index/KubernetesClusterRoutingAgent:KubernetesClusterRoutingAgent": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag whether the routing-agent should be enabled or not.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ]
        },
        "digitalocean:index/KubernetesClusterSso:KubernetesClusterSso": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Boolean flag whether the component is enabled or not.\n"
                },
                "required": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "required"
                    ]
                }
            }
        },
        "digitalocean:index/KubernetesNodePoolNode:KubernetesNodePoolNode": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the node was created.\n"
                },
                "dropletId": {
                    "type": "string",
                    "description": "The id of the node's droplet\n"
                },
                "id": {
                    "type": "string",
                    "description": "A unique ID that can be used to identify and reference the node.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the node pool.\n"
                },
                "status": {
                    "type": "string",
                    "description": "A string indicating the current status of the individual node.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time when the node was last updated.\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "createdAt",
                        "dropletId",
                        "id",
                        "name",
                        "status",
                        "updatedAt"
                    ]
                }
            }
        },
        "digitalocean:index/KubernetesNodePoolTaint:KubernetesNodePoolTaint": {
            "properties": {
                "effect": {
                    "type": "string",
                    "description": "How the node reacts to pods that it won't tolerate. Available effect values are: \"NoSchedule\", \"PreferNoSchedule\", \"NoExecute\".\n"
                },
                "key": {
                    "type": "string",
                    "description": "An arbitrary string. The \"key\" and \"value\" fields of the \"taint\" object form a key-value pair.\n"
                },
                "value": {
                    "type": "string",
                    "description": "An arbitrary string. The \"key\" and \"value\" fields of the \"taint\" object form a key-value pair.\n"
                }
            },
            "type": "object",
            "required": [
                "effect",
                "key",
                "value"
            ]
        },
        "digitalocean:index/LoadBalancerDomain:LoadBalancerDomain": {
            "properties": {
                "certificateId": {
                    "type": "string",
                    "description": "**Deprecated** The certificate ID to be used for TLS handshaking.\n"
                },
                "certificateName": {
                    "type": "string",
                    "description": "The certificate name to be used for TLS handshaking.\n"
                },
                "isManaged": {
                    "type": "boolean",
                    "description": "Control flag to specify whether the domain is managed by DigitalOcean.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The domain name to be used for ingressing traffic to a Global Load Balancer.\n"
                },
                "sslValidationErrorReasons": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "list of domain SSL validation errors\n"
                },
                "verificationErrorReasons": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "list of domain verification errors\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "certificateId",
                        "certificateName",
                        "name",
                        "sslValidationErrorReasons",
                        "verificationErrorReasons"
                    ]
                }
            }
        },
        "digitalocean:index/LoadBalancerFirewall:LoadBalancerFirewall": {
            "properties": {
                "allows": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of strings describing allow rules. Must be colon delimited strings of the form `{type}:{source}`\n* Ex. `deny = [\"cidr:1.2.0.0/16\", \"ip:2.3.4.5\"]` or `allow = [\"ip:1.2.3.4\", \"cidr:2.3.4.0/24\"]`\n"
                },
                "denies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of strings describing deny rules. Must be colon delimited strings of the form `{type}:{source}`\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/LoadBalancerForwardingRule:LoadBalancerForwardingRule": {
            "properties": {
                "certificateId": {
                    "type": "string",
                    "description": "**Deprecated** The ID of the TLS certificate to be used for SSL termination. Use \u003cspan pulumi-lang-nodejs=\"`certificateName`\" pulumi-lang-dotnet=\"`CertificateName`\" pulumi-lang-go=\"`certificateName`\" pulumi-lang-python=\"`certificate_name`\" pulumi-lang-yaml=\"`certificateName`\" pulumi-lang-java=\"`certificateName`\"\u003e`certificate_name`\u003c/span\u003e instead.\n",
                    "deprecationMessage": "Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead."
                },
                "certificateName": {
                    "type": "string",
                    "description": "The unique name of the TLS certificate to be used for SSL termination.\n"
                },
                "entryPort": {
                    "type": "integer",
                    "description": "An integer representing the port on which the Load Balancer instance will listen.\n"
                },
                "entryProtocol": {
                    "type": "string",
                    "description": "The protocol used for traffic to the Load Balancer. The possible values are: \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http2`\" pulumi-lang-dotnet=\"`Http2`\" pulumi-lang-go=\"`http2`\" pulumi-lang-python=\"`http2`\" pulumi-lang-yaml=\"`http2`\" pulumi-lang-java=\"`http2`\"\u003e`http2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http3`\" pulumi-lang-dotnet=\"`Http3`\" pulumi-lang-go=\"`http3`\" pulumi-lang-python=\"`http3`\" pulumi-lang-yaml=\"`http3`\" pulumi-lang-java=\"`http3`\"\u003e`http3`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                },
                "targetPort": {
                    "type": "integer",
                    "description": "An integer representing the port on the backend Droplets to which the Load Balancer will send traffic.\n"
                },
                "targetProtocol": {
                    "type": "string",
                    "description": "The protocol used for traffic from the Load Balancer to the backend Droplets. The possible values are: \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http2`\" pulumi-lang-dotnet=\"`Http2`\" pulumi-lang-go=\"`http2`\" pulumi-lang-python=\"`http2`\" pulumi-lang-yaml=\"`http2`\" pulumi-lang-java=\"`http2`\"\u003e`http2`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                },
                "tlsPassthrough": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets. The default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "entryPort",
                "entryProtocol",
                "targetPort",
                "targetProtocol"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "certificateId",
                        "certificateName",
                        "entryPort",
                        "entryProtocol",
                        "targetPort",
                        "targetProtocol"
                    ]
                }
            }
        },
        "digitalocean:index/LoadBalancerGlbSettings:LoadBalancerGlbSettings": {
            "properties": {
                "cdn": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerGlbSettingsCdn:LoadBalancerGlbSettingsCdn",
                    "description": "CDN configuration supporting the following:\n"
                },
                "failoverThreshold": {
                    "type": "integer",
                    "description": "fail-over threshold\n"
                },
                "regionPriorities": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    },
                    "description": "region priority map\n"
                },
                "targetPort": {
                    "type": "integer",
                    "description": "An integer representing the port on the backend Droplets to which the Load Balancer will send traffic. The possible values are: \u003cspan pulumi-lang-nodejs=\"`80`\" pulumi-lang-dotnet=\"`80`\" pulumi-lang-go=\"`80`\" pulumi-lang-python=\"`80`\" pulumi-lang-yaml=\"`80`\" pulumi-lang-java=\"`80`\"\u003e`80`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`443`\" pulumi-lang-dotnet=\"`443`\" pulumi-lang-go=\"`443`\" pulumi-lang-python=\"`443`\" pulumi-lang-yaml=\"`443`\" pulumi-lang-java=\"`443`\"\u003e`443`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"
                },
                "targetProtocol": {
                    "type": "string",
                    "description": "The protocol used for traffic from the Load Balancer to the backend Droplets. The possible values are: \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "targetPort",
                "targetProtocol"
            ]
        },
        "digitalocean:index/LoadBalancerGlbSettingsCdn:LoadBalancerGlbSettingsCdn": {
            "properties": {
                "isEnabled": {
                    "type": "boolean",
                    "description": "Control flag to specify if caching is enabled.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/LoadBalancerHealthcheck:LoadBalancerHealthcheck": {
            "properties": {
                "checkIntervalSeconds": {
                    "type": "integer",
                    "description": "The number of seconds between two consecutive health checks. If not specified, the default value is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e.\n"
                },
                "healthyThreshold": {
                    "type": "integer",
                    "description": "The number of times a health check must pass for a backend Droplet to be marked \"healthy\" and be re-added to the pool. If not specified, the default value is \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e.\n"
                },
                "path": {
                    "type": "string",
                    "description": "The path on the backend Droplets to which the Load Balancer instance will send a request.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "An integer representing the port on the backend Droplets on which the health check will attempt a connection.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The protocol used for health checks sent to the backend Droplets. The possible values are \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e.\n"
                },
                "responseTimeoutSeconds": {
                    "type": "integer",
                    "description": "The number of seconds the Load Balancer instance will wait for a response until marking a health check as failed. If not specified, the default value is \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e.\n"
                },
                "unhealthyThreshold": {
                    "type": "integer",
                    "description": "The number of times a health check must fail for a backend Droplet to be marked \"unhealthy\" and be removed from the pool. If not specified, the default value is \u003cspan pulumi-lang-nodejs=\"`3`\" pulumi-lang-dotnet=\"`3`\" pulumi-lang-go=\"`3`\" pulumi-lang-python=\"`3`\" pulumi-lang-yaml=\"`3`\" pulumi-lang-java=\"`3`\"\u003e`3`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "port",
                "protocol"
            ]
        },
        "digitalocean:index/LoadBalancerStickySessions:LoadBalancerStickySessions": {
            "properties": {
                "cookieName": {
                    "type": "string",
                    "description": "The name to be used for the cookie sent to the client. This attribute is required when using \u003cspan pulumi-lang-nodejs=\"`cookies`\" pulumi-lang-dotnet=\"`Cookies`\" pulumi-lang-go=\"`cookies`\" pulumi-lang-python=\"`cookies`\" pulumi-lang-yaml=\"`cookies`\" pulumi-lang-java=\"`cookies`\"\u003e`cookies`\u003c/span\u003e for the sticky sessions type.\n"
                },
                "cookieTtlSeconds": {
                    "type": "integer",
                    "description": "The number of seconds until the cookie set by the Load Balancer expires. This attribute is required when using \u003cspan pulumi-lang-nodejs=\"`cookies`\" pulumi-lang-dotnet=\"`Cookies`\" pulumi-lang-go=\"`cookies`\" pulumi-lang-python=\"`cookies`\" pulumi-lang-yaml=\"`cookies`\" pulumi-lang-java=\"`cookies`\"\u003e`cookies`\u003c/span\u003e for the sticky sessions type.\n"
                },
                "type": {
                    "type": "string",
                    "description": "An attribute indicating how and if requests from a client will be persistently served by the same backend Droplet. The possible values are \u003cspan pulumi-lang-nodejs=\"`cookies`\" pulumi-lang-dotnet=\"`Cookies`\" pulumi-lang-go=\"`cookies`\" pulumi-lang-python=\"`cookies`\" pulumi-lang-yaml=\"`cookies`\" pulumi-lang-java=\"`cookies`\"\u003e`cookies`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e. If not specified, the default value is \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/MonitorAlertAlerts:MonitorAlertAlerts": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of email addresses to sent notifications to\n"
                },
                "slacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/MonitorAlertAlertsSlack:MonitorAlertAlertsSlack"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/MonitorAlertAlertsSlack:MonitorAlertAlertsSlack": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send alerts to\n"
                },
                "url": {
                    "type": "string",
                    "description": "The webhook URL for Slack\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ]
        },
        "digitalocean:index/PartnerAttachmentBgp:PartnerAttachmentBgp": {
            "properties": {
                "authKey": {
                    "type": "string",
                    "secret": true
                },
                "localRouterIp": {
                    "type": "string"
                },
                "peerRouterAsn": {
                    "type": "integer"
                },
                "peerRouterIp": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "digitalocean:index/SpacesBucketCorsConfigurationCorsRule:SpacesBucketCorsConfigurationCorsRule": {
            "properties": {
                "allowedHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set of Headers that are specified in the Access-Control-Request-Headers header.\n"
                },
                "allowedMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set of HTTP methods that you allow the origin to execute. Valid values are GET, PUT, HEAD, POST, and DELETE.\n"
                },
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set of origins you want customers to be able to access the bucket from.\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Set of headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript XMLHttpRequest object).\n"
                },
                "id": {
                    "type": "string",
                    "description": "Unique identifier for the rule. The value cannot be longer than 255 characters.\n"
                },
                "maxAgeSeconds": {
                    "type": "integer",
                    "description": "Time in seconds that your browser is to cache the preflight response for the specified resource.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedMethods",
                "allowedOrigins"
            ]
        },
        "digitalocean:index/SpacesBucketCorsRule:SpacesBucketCorsRule": {
            "properties": {
                "allowedHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of headers that will be included in the CORS preflight request's `Access-Control-Request-Headers`. A header may contain one wildcard (e.g. `x-amz-*`).\n"
                },
                "allowedMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of HTTP methods (e.g. `GET`) which are allowed from the specified origin.\n"
                },
                "allowedOrigins": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of hosts from which requests using the specified methods are allowed. A host may contain one wildcard (e.g. http://*.example.com).\n"
                },
                "maxAgeSeconds": {
                    "type": "integer",
                    "description": "The time in seconds that browser can cache the response for a preflight request.\n"
                }
            },
            "type": "object",
            "required": [
                "allowedMethods",
                "allowedOrigins"
            ]
        },
        "digitalocean:index/SpacesBucketLifecycleRule:SpacesBucketLifecycleRule": {
            "properties": {
                "abortIncompleteMultipartUploadDays": {
                    "type": "integer",
                    "description": "Specifies the number of days after initiating a multipart\nupload when the multipart upload must be completed or else Spaces will abort the upload.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Specifies lifecycle rule status.\n"
                },
                "expiration": {
                    "$ref": "#/types/digitalocean:index/SpacesBucketLifecycleRuleExpiration:SpacesBucketLifecycleRuleExpiration",
                    "description": "Specifies a time period after which applicable objects expire (documented below).\n"
                },
                "id": {
                    "type": "string",
                    "description": "Unique identifier for the rule.\n"
                },
                "noncurrentVersionExpiration": {
                    "$ref": "#/types/digitalocean:index/SpacesBucketLifecycleRuleNoncurrentVersionExpiration:SpacesBucketLifecycleRuleNoncurrentVersionExpiration",
                    "description": "Specifies when non-current object versions expire (documented below).\n\nAt least one of \u003cspan pulumi-lang-nodejs=\"`expiration`\" pulumi-lang-dotnet=\"`Expiration`\" pulumi-lang-go=\"`expiration`\" pulumi-lang-python=\"`expiration`\" pulumi-lang-yaml=\"`expiration`\" pulumi-lang-java=\"`expiration`\"\u003e`expiration`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`noncurrentVersionExpiration`\" pulumi-lang-dotnet=\"`NoncurrentVersionExpiration`\" pulumi-lang-go=\"`noncurrentVersionExpiration`\" pulumi-lang-python=\"`noncurrent_version_expiration`\" pulumi-lang-yaml=\"`noncurrentVersionExpiration`\" pulumi-lang-java=\"`noncurrentVersionExpiration`\"\u003e`noncurrent_version_expiration`\u003c/span\u003e must be specified.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "Object key prefix identifying one or more objects to which the rule applies.\n"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "enabled",
                        "id"
                    ]
                }
            }
        },
        "digitalocean:index/SpacesBucketLifecycleRuleExpiration:SpacesBucketLifecycleRuleExpiration": {
            "properties": {
                "date": {
                    "type": "string",
                    "description": "Specifies the date/time after which you want applicable objects to expire. The argument uses\nRFC3339 format, e.g. \"2020-03-22T15:03:55Z\" or parts thereof e.g. \"2019-02-28\".\n"
                },
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after object creation when the applicable objects will expire.\n"
                },
                "expiredObjectDeleteMarker": {
                    "type": "boolean",
                    "description": "On a versioned bucket (versioning-enabled or versioning-suspended\nbucket), setting this to true directs Spaces to delete expired object delete markers.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/SpacesBucketLifecycleRuleNoncurrentVersionExpiration:SpacesBucketLifecycleRuleNoncurrentVersionExpiration": {
            "properties": {
                "days": {
                    "type": "integer",
                    "description": "Specifies the number of days after which an object's non-current versions expire.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/SpacesBucketVersioning:SpacesBucketVersioning": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Enable versioning. Once you version-enable a bucket, it can never return to an unversioned\nstate. You can, however, suspend versioning on that bucket.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/SpacesKeyGrant:SpacesKeyGrant": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "Name of the bucket associated with this grant. In case of a \u003cspan pulumi-lang-nodejs=\"`fullaccess`\" pulumi-lang-dotnet=\"`Fullaccess`\" pulumi-lang-go=\"`fullaccess`\" pulumi-lang-python=\"`fullaccess`\" pulumi-lang-yaml=\"`fullaccess`\" pulumi-lang-java=\"`fullaccess`\"\u003e`fullaccess`\u003c/span\u003e permission, this value should be an empty string.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "Permission associated with this grant. Values can be \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`fullaccess`\" pulumi-lang-dotnet=\"`Fullaccess`\" pulumi-lang-go=\"`fullaccess`\" pulumi-lang-python=\"`fullaccess`\" pulumi-lang-yaml=\"`fullaccess`\" pulumi-lang-java=\"`fullaccess`\"\u003e`fullaccess`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "permission"
            ]
        },
        "digitalocean:index/UptimeAlertNotification:UptimeAlertNotification": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of email addresses to sent notifications to.\n"
                },
                "slacks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/UptimeAlertNotificationSlack:UptimeAlertNotificationSlack"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/UptimeAlertNotificationSlack:UptimeAlertNotificationSlack": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send alerts to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The webhook URL for Slack.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ]
        },
        "digitalocean:index/VpcNatGatewayEgress:VpcNatGatewayEgress": {
            "properties": {
                "publicGateways": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/VpcNatGatewayEgressPublicGateway:VpcNatGatewayEgressPublicGateway"
                    },
                    "description": "List of public gateway IPs\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "publicGateways"
                    ]
                }
            }
        },
        "digitalocean:index/VpcNatGatewayEgressPublicGateway:VpcNatGatewayEgressPublicGateway": {
            "properties": {
                "ipv4": {
                    "type": "string",
                    "description": "IPv4 address\n"
                }
            },
            "type": "object",
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "ipv4"
                    ]
                }
            }
        },
        "digitalocean:index/VpcNatGatewayVpc:VpcNatGatewayVpc": {
            "properties": {
                "defaultGateway": {
                    "type": "boolean",
                    "description": "Boolean flag indicating if this should be the default gateway in this VPC\n"
                },
                "gatewayIp": {
                    "type": "string",
                    "description": "The private IP of the VPC NAT Gateway\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The ID of the ingress VPC\n",
                    "willReplaceOnChanges": true
                }
            },
            "type": "object",
            "required": [
                "vpcUuid"
            ],
            "language": {
                "nodejs": {
                    "requiredOutputs": [
                        "gatewayIp",
                        "vpcUuid"
                    ]
                }
            }
        },
        "digitalocean:index/getAppDedicatedIp:getAppDedicatedIp": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the dedicated egress IP.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The IP address of the dedicated egress IP.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the dedicated egress IP.\n"
                }
            },
            "type": "object",
            "required": [
                "id",
                "ip",
                "status"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpec:getAppSpec": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecAlert:getAppSpecAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "databases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecDatabase:getAppSpecDatabase"
                    }
                },
                "disableEdgeCache": {
                    "type": "boolean",
                    "description": "Whether to disable the edge cache for the app. Default is false, which enables the edge cache.\n"
                },
                "disableEmailObfuscation": {
                    "type": "boolean",
                    "description": "Email obfuscation configuration for the app. Default is false, which keeps the email obfuscated.\n"
                },
                "domain": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecDomain:getAppSpecDomain"
                    }
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "deprecationMessage": "This attribute has been replaced by \u003cspan pulumi-lang-nodejs=\"`domain`\" pulumi-lang-dotnet=\"`Domain`\" pulumi-lang-go=\"`domain`\" pulumi-lang-python=\"`domain`\" pulumi-lang-yaml=\"`domain`\" pulumi-lang-java=\"`domain`\"\u003e`domain`\u003c/span\u003e which supports additional functionality."
                },
                "egresses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecEgress:getAppSpecEgress"
                    }
                },
                "enhancedThreatControlEnabled": {
                    "type": "boolean",
                    "description": "Whether to enable enhanced threat control for the app. Default is false. Set to true to enable enhanced threat control, putting additional security measures for Layer 7 DDoS attacks.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecEnv:getAppSpecEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "features": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of features which is applied to the app\n"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecFunction:getAppSpecFunction"
                    }
                },
                "ingress": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngress:getAppSpecIngress"
                },
                "jobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecJob:getAppSpecJob"
                    }
                },
                "maintenance": {
                    "$ref": "#/types/digitalocean:index/getAppSpecMaintenance:getAppSpecMaintenance",
                    "description": "Specification to configure maintenance settings for the app, such as maintenance mode and archiving the app.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The slug for the DigitalOcean data center region hosting the app\n"
                },
                "services": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecService:getAppSpecService"
                    }
                },
                "staticSites": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecStaticSite:getAppSpecStaticSite"
                    }
                },
                "vpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecVpc:getAppSpecVpc"
                    }
                },
                "workers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecWorker:getAppSpecWorker"
                    }
                }
            },
            "type": "object",
            "required": [
                "domain",
                "domains",
                "features",
                "ingress",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecAlert:getAppSpecAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/getAppSpecAlertDestinations:getAppSpecAlertDestinations"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                }
            },
            "type": "object",
            "required": [
                "rule"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecAlertDestinations:getAppSpecAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecAlertDestinationsSlackWebhook:getAppSpecAlertDestinationsSlackWebhook"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecAlertDestinationsSlackWebhook:getAppSpecAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecDatabase:getAppSpecDatabase": {
            "properties": {
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "dbName": {
                    "type": "string",
                    "description": "The name of the MySQL or PostgreSQL database to configure.\n"
                },
                "dbUser": {
                    "type": "string",
                    "description": "The name of the MySQL or PostgreSQL user to configure.\n"
                },
                "engine": {
                    "type": "string",
                    "description": "The database engine to use (`MYSQL`, `PG`, `REDIS`, or `MONGODB`).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "production": {
                    "type": "boolean",
                    "description": "Whether this is a production or dev database.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The version of the database engine.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecDomain:getAppSpecDomain": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "wildcard": {
                    "type": "boolean",
                    "description": "Indicates whether the domain includes all sub-domains, in addition to the given domain.\n"
                },
                "zone": {
                    "type": "string",
                    "description": "If the domain uses DigitalOcean DNS and you would like App Platform to automatically manage it for you, set this to the name of the domain on your account.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "type",
                "wildcard"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecEgress:getAppSpecEgress": {
            "properties": {
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecEnv:getAppSpecEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The threshold for the type of the warning.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunction:getAppSpecFunction": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecFunctionAlert:getAppSpecFunctionAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionBitbucket:getAppSpecFunctionBitbucket",
                    "description": "A Bitbucket repo to use as component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set. To read your repo, App Platform must be authorized to access your Bitbucket account. Go to this URL to link App Platform to your Bitbucket account: `https://cloud.digitalocean.com/apps/bitbucket/install`.\n"
                },
                "cors": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionCors:getAppSpecFunctionCors",
                    "description": "The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.\n",
                    "deprecationMessage": "Service level CORS rules are deprecated in favor of ingresses"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecFunctionEnv:getAppSpecFunctionEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionGit:getAppSpecFunctionGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e  may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionGithub:getAppSpecFunctionGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionGitlab:getAppSpecFunctionGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "logDestinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecFunctionLogDestination:getAppSpecFunctionLogDestination"
                    },
                    "description": "Describes a log forwarding destination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecFunctionRoute:getAppSpecFunctionRoute"
                    },
                    "deprecationMessage": "Service level routes are deprecated in favor of ingresses"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "routes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionAlert:getAppSpecFunctionAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionAlertDestinations:getAppSpecFunctionAlertDestinations"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The threshold for the type of the warning.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.\n"
                }
            },
            "type": "object",
            "required": [
                "operator",
                "rule",
                "value",
                "window"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionAlertDestinations:getAppSpecFunctionAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecFunctionAlertDestinationsSlackWebhook:getAppSpecFunctionAlertDestinationsSlackWebhook"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecFunctionAlertDestinationsSlackWebhook:getAppSpecFunctionAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionBitbucket:getAppSpecFunctionBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecFunctionCors:getAppSpecFunctionCors": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e. This configures the `Access-Control-Allow-Credentials` header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.\n"
                },
                "allowOrigins": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionCorsAllowOrigins:getAppSpecFunctionCorsAllowOrigins",
                    "description": "The `Access-Control-Allow-Origin` can be\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.\n"
                },
                "maxAge": {
                    "type": "string",
                    "description": "An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: \u003cspan pulumi-lang-nodejs=\"`5h30m`\" pulumi-lang-dotnet=\"`5h30m`\" pulumi-lang-go=\"`5h30m`\" pulumi-lang-python=\"`5h30m`\" pulumi-lang-yaml=\"`5h30m`\" pulumi-lang-java=\"`5h30m`\"\u003e`5h30m`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecFunctionCorsAllowOrigins:getAppSpecFunctionCorsAllowOrigins": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.\n",
                    "deprecationMessage": "Prefix-based matching has been deprecated in favor of regex-based matching."
                },
                "regex": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecFunctionEnv:getAppSpecFunctionEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The threshold for the type of the warning.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionGit:getAppSpecFunctionGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecFunctionGithub:getAppSpecFunctionGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecFunctionGitlab:getAppSpecFunctionGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecFunctionLogDestination:getAppSpecFunctionLogDestination": {
            "properties": {
                "datadog": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionLogDestinationDatadog:getAppSpecFunctionLogDestinationDatadog",
                    "description": "Datadog configuration.\n"
                },
                "logtail": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionLogDestinationLogtail:getAppSpecFunctionLogDestinationLogtail",
                    "description": "Logtail configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "openSearch": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionLogDestinationOpenSearch:getAppSpecFunctionLogDestinationOpenSearch",
                    "description": "OpenSearch configuration.\n"
                },
                "papertrail": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionLogDestinationPapertrail:getAppSpecFunctionLogDestinationPapertrail",
                    "description": "Papertrail configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionLogDestinationDatadog:getAppSpecFunctionLogDestinationDatadog": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionLogDestinationLogtail:getAppSpecFunctionLogDestinationLogtail": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "Logtail token.\n"
                }
            },
            "type": "object",
            "required": [
                "token"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionLogDestinationOpenSearch:getAppSpecFunctionLogDestinationOpenSearch": {
            "properties": {
                "basicAuth": {
                    "$ref": "#/types/digitalocean:index/getAppSpecFunctionLogDestinationOpenSearchBasicAuth:getAppSpecFunctionLogDestinationOpenSearchBasicAuth",
                    "description": "OpenSearch basic auth\n"
                },
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                },
                "indexName": {
                    "type": "string",
                    "description": "The index name to use for the logs. If not set, the default index name is \u003cspan pulumi-lang-nodejs=\"`logs`\" pulumi-lang-dotnet=\"`Logs`\" pulumi-lang-go=\"`logs`\" pulumi-lang-python=\"`logs`\" pulumi-lang-yaml=\"`logs`\" pulumi-lang-java=\"`logs`\"\u003e`logs`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "basicAuth"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionLogDestinationOpenSearchBasicAuth:getAppSpecFunctionLogDestinationOpenSearchBasicAuth": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for user defined in User. Is required when endpoint is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username to authenticate with. Only required when endpoint is set. Defaults to doadmin when\u003cspan pulumi-lang-nodejs=\" clusterName \" pulumi-lang-dotnet=\" ClusterName \" pulumi-lang-go=\" clusterName \" pulumi-lang-python=\" cluster_name \" pulumi-lang-yaml=\" clusterName \" pulumi-lang-java=\" clusterName \"\u003e cluster_name \u003c/span\u003eis set.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecFunctionLogDestinationPapertrail:getAppSpecFunctionLogDestinationPapertrail": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecFunctionRoute:getAppSpecFunctionRoute": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Paths must start with `/` and must be unique within the app.\n"
                },
                "preservePathPrefix": {
                    "type": "boolean",
                    "description": "An optional flag to preserve the path that is forwarded to the backend service.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecIngress:getAppSpecIngress": {
            "properties": {
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecIngressRule:getAppSpecIngressRule"
                    },
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "secureHeader": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngressSecureHeader:getAppSpecIngressSecureHeader"
                }
            },
            "type": "object",
            "required": [
                "secureHeader"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecIngressRule:getAppSpecIngressRule": {
            "properties": {
                "component": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngressRuleComponent:getAppSpecIngressRuleComponent"
                },
                "cors": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngressRuleCors:getAppSpecIngressRuleCors",
                    "description": "The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.\n"
                },
                "match": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngressRuleMatch:getAppSpecIngressRuleMatch"
                },
                "redirect": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngressRuleRedirect:getAppSpecIngressRuleRedirect"
                }
            },
            "type": "object",
            "required": [
                "component",
                "cors",
                "match"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecIngressRuleComponent:getAppSpecIngressRuleComponent": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "preservePathPrefix": {
                    "type": "boolean",
                    "description": "An optional flag to preserve the path that is forwarded to the backend service.\n"
                },
                "rewrite": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "name",
                "preservePathPrefix",
                "rewrite"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecIngressRuleCors:getAppSpecIngressRuleCors": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e. This configures the `Access-Control-Allow-Credentials` header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.\n"
                },
                "allowOrigins": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngressRuleCorsAllowOrigins:getAppSpecIngressRuleCorsAllowOrigins",
                    "description": "The `Access-Control-Allow-Origin` can be\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.\n"
                },
                "maxAge": {
                    "type": "string",
                    "description": "An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: \u003cspan pulumi-lang-nodejs=\"`5h30m`\" pulumi-lang-dotnet=\"`5h30m`\" pulumi-lang-go=\"`5h30m`\" pulumi-lang-python=\"`5h30m`\" pulumi-lang-yaml=\"`5h30m`\" pulumi-lang-java=\"`5h30m`\"\u003e`5h30m`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecIngressRuleCorsAllowOrigins:getAppSpecIngressRuleCorsAllowOrigins": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.\n",
                    "deprecationMessage": "Prefix-based matching has been deprecated in favor of regex-based matching."
                },
                "regex": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecIngressRuleMatch:getAppSpecIngressRuleMatch": {
            "properties": {
                "authority": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngressRuleMatchAuthority:getAppSpecIngressRuleMatchAuthority"
                },
                "path": {
                    "$ref": "#/types/digitalocean:index/getAppSpecIngressRuleMatchPath:getAppSpecIngressRuleMatchPath",
                    "description": "Paths must start with `/` and must be unique within the app.\n"
                }
            },
            "type": "object",
            "required": [
                "authority",
                "path"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecIngressRuleMatchAuthority:getAppSpecIngressRuleMatchAuthority": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.\n"
                }
            },
            "type": "object",
            "required": [
                "exact"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecIngressRuleMatchPath:getAppSpecIngressRuleMatchPath": {
            "properties": {
                "prefix": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.\n"
                }
            },
            "type": "object",
            "required": [
                "prefix"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecIngressRuleRedirect:getAppSpecIngressRuleRedirect": {
            "properties": {
                "authority": {
                    "type": "string"
                },
                "port": {
                    "type": "integer"
                },
                "redirectCode": {
                    "type": "integer"
                },
                "scheme": {
                    "type": "string"
                },
                "uri": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecIngressSecureHeader:getAppSpecIngressSecureHeader": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The threshold for the type of the warning.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJob:getAppSpecJob": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecJobAlert:getAppSpecJobAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobBitbucket:getAppSpecJobBitbucket",
                    "description": "A Bitbucket repo to use as component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set. To read your repo, App Platform must be authorized to access your Bitbucket account. Go to this URL to link App Platform to your Bitbucket account: `https://cloud.digitalocean.com/apps/bitbucket/install`.\n"
                },
                "buildCommand": {
                    "type": "string",
                    "description": "An optional build command to run while building this component from source.\n"
                },
                "dockerfilePath": {
                    "type": "string",
                    "description": "The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.\n"
                },
                "environmentSlug": {
                    "type": "string",
                    "description": "An environment slug describing the type of this app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecJobEnv:getAppSpecJobEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobGit:getAppSpecJobGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e  may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobGithub:getAppSpecJobGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobGitlab:getAppSpecJobGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "image": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobImage:getAppSpecJobImage",
                    "description": "An image to use as the component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "instanceCount": {
                    "type": "integer",
                    "description": "The amount of instances that this component should be scaled to.\n"
                },
                "instanceSizeSlug": {
                    "type": "string",
                    "description": "The instance size to use for this component.\n"
                },
                "kind": {
                    "type": "string",
                    "description": "The type of job and when it will be run during the deployment process. It may be one of:\n- `UNSPECIFIED`: Default job type, will auto-complete to POST_DEPLOY kind.\n- `PRE_DEPLOY`: Indicates a job that runs before an app deployment.\n- `POST_DEPLOY`: Indicates a job that runs after an app deployment.\n- `FAILED_DEPLOY`: Indicates a job that runs after a component fails to deploy.\n"
                },
                "logDestinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecJobLogDestination:getAppSpecJobLogDestination"
                    },
                    "description": "Describes a log forwarding destination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "runCommand": {
                    "type": "string",
                    "description": "An optional run command to override the component's default.\n"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                },
                "termination": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobTermination:getAppSpecJobTermination",
                    "description": "Contains a component's termination parameters.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobAlert:getAppSpecJobAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobAlertDestinations:getAppSpecJobAlertDestinations"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The threshold for the type of the warning.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.\n"
                }
            },
            "type": "object",
            "required": [
                "operator",
                "rule",
                "value",
                "window"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobAlertDestinations:getAppSpecJobAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecJobAlertDestinationsSlackWebhook:getAppSpecJobAlertDestinationsSlackWebhook"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecJobAlertDestinationsSlackWebhook:getAppSpecJobAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobBitbucket:getAppSpecJobBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecJobEnv:getAppSpecJobEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The threshold for the type of the warning.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobGit:getAppSpecJobGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecJobGithub:getAppSpecJobGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecJobGitlab:getAppSpecJobGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecJobImage:getAppSpecJobImage": {
            "properties": {
                "deployOnPushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecJobImageDeployOnPush:getAppSpecJobImageDeployOnPush"
                    },
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "digest": {
                    "type": "string",
                    "description": "The image digest. Cannot be specified if \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e is provided.\n"
                },
                "registry": {
                    "type": "string",
                    "description": "The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.\n"
                },
                "registryCredentials": {
                    "type": "string",
                    "description": "Access credentials for third-party registries\n",
                    "secret": true
                },
                "registryType": {
                    "type": "string",
                    "description": "The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The repository name.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The repository tag. Defaults to \u003cspan pulumi-lang-nodejs=\"`latest`\" pulumi-lang-dotnet=\"`Latest`\" pulumi-lang-go=\"`latest`\" pulumi-lang-python=\"`latest`\" pulumi-lang-yaml=\"`latest`\" pulumi-lang-java=\"`latest`\"\u003e`latest`\u003c/span\u003e if not provided.\n"
                }
            },
            "type": "object",
            "required": [
                "deployOnPushes",
                "registryType",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobImageDeployOnPush:getAppSpecJobImageDeployOnPush": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy images pushed to DOCR.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecJobLogDestination:getAppSpecJobLogDestination": {
            "properties": {
                "datadog": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobLogDestinationDatadog:getAppSpecJobLogDestinationDatadog",
                    "description": "Datadog configuration.\n"
                },
                "logtail": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobLogDestinationLogtail:getAppSpecJobLogDestinationLogtail",
                    "description": "Logtail configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "openSearch": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobLogDestinationOpenSearch:getAppSpecJobLogDestinationOpenSearch",
                    "description": "OpenSearch configuration.\n"
                },
                "papertrail": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobLogDestinationPapertrail:getAppSpecJobLogDestinationPapertrail",
                    "description": "Papertrail configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobLogDestinationDatadog:getAppSpecJobLogDestinationDatadog": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobLogDestinationLogtail:getAppSpecJobLogDestinationLogtail": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "Logtail token.\n"
                }
            },
            "type": "object",
            "required": [
                "token"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobLogDestinationOpenSearch:getAppSpecJobLogDestinationOpenSearch": {
            "properties": {
                "basicAuth": {
                    "$ref": "#/types/digitalocean:index/getAppSpecJobLogDestinationOpenSearchBasicAuth:getAppSpecJobLogDestinationOpenSearchBasicAuth",
                    "description": "OpenSearch basic auth\n"
                },
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                },
                "indexName": {
                    "type": "string",
                    "description": "The index name to use for the logs. If not set, the default index name is \u003cspan pulumi-lang-nodejs=\"`logs`\" pulumi-lang-dotnet=\"`Logs`\" pulumi-lang-go=\"`logs`\" pulumi-lang-python=\"`logs`\" pulumi-lang-yaml=\"`logs`\" pulumi-lang-java=\"`logs`\"\u003e`logs`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "basicAuth"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobLogDestinationOpenSearchBasicAuth:getAppSpecJobLogDestinationOpenSearchBasicAuth": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for user defined in User. Is required when endpoint is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username to authenticate with. Only required when endpoint is set. Defaults to doadmin when\u003cspan pulumi-lang-nodejs=\" clusterName \" pulumi-lang-dotnet=\" ClusterName \" pulumi-lang-go=\" clusterName \" pulumi-lang-python=\" cluster_name \" pulumi-lang-yaml=\" clusterName \" pulumi-lang-java=\" clusterName \"\u003e cluster_name \u003c/span\u003eis set.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecJobLogDestinationPapertrail:getAppSpecJobLogDestinationPapertrail": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecJobTermination:getAppSpecJobTermination": {
            "properties": {
                "gracePeriodSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecMaintenance:getAppSpecMaintenance": {
            "properties": {
                "archive": {
                    "type": "boolean",
                    "description": "Indicates whether the app should be archived. Setting this to true implies that enabled is set to true.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy images pushed to DOCR.\n"
                },
                "offlinePageUrl": {
                    "type": "string",
                    "description": "A custom offline page to display when maintenance mode is enabled or the app is archived.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecService:getAppSpecService": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecServiceAlert:getAppSpecServiceAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "autoscaling": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceAutoscaling:getAppSpecServiceAutoscaling",
                    "description": "Configuration for automatically scaling this component based on metrics.\n"
                },
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceBitbucket:getAppSpecServiceBitbucket",
                    "description": "A Bitbucket repo to use as component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set. To read your repo, App Platform must be authorized to access your Bitbucket account. Go to this URL to link App Platform to your Bitbucket account: `https://cloud.digitalocean.com/apps/bitbucket/install`.\n"
                },
                "buildCommand": {
                    "type": "string",
                    "description": "An optional build command to run while building this component from source.\n"
                },
                "cors": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceCors:getAppSpecServiceCors",
                    "description": "The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.\n",
                    "deprecationMessage": "Service level CORS rules are deprecated in favor of ingresses"
                },
                "dockerfilePath": {
                    "type": "string",
                    "description": "The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.\n"
                },
                "environmentSlug": {
                    "type": "string",
                    "description": "An environment slug describing the type of this app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecServiceEnv:getAppSpecServiceEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceGit:getAppSpecServiceGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e  may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceGithub:getAppSpecServiceGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceGitlab:getAppSpecServiceGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "healthCheck": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceHealthCheck:getAppSpecServiceHealthCheck",
                    "description": "A health check to determine the availability of this component.\n"
                },
                "httpPort": {
                    "type": "integer",
                    "description": "The internal port on which this service's run command will listen.\n"
                },
                "image": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceImage:getAppSpecServiceImage",
                    "description": "An image to use as the component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "instanceCount": {
                    "type": "integer",
                    "description": "The amount of instances that this component should be scaled to.\n"
                },
                "instanceSizeSlug": {
                    "type": "string",
                    "description": "The instance size to use for this component.\n"
                },
                "internalPorts": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "A list of ports on which this service will listen for internal traffic.\n"
                },
                "logDestinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecServiceLogDestination:getAppSpecServiceLogDestination"
                    },
                    "description": "Describes a log forwarding destination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecServiceRoute:getAppSpecServiceRoute"
                    },
                    "deprecationMessage": "Service level routes are deprecated in favor of ingresses"
                },
                "runCommand": {
                    "type": "string",
                    "description": "An optional run command to override the component's default.\n"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                },
                "termination": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceTermination:getAppSpecServiceTermination",
                    "description": "Contains a component's termination parameters.\n"
                }
            },
            "type": "object",
            "required": [
                "httpPort",
                "internalPorts",
                "name",
                "routes",
                "runCommand"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceAlert:getAppSpecServiceAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceAlertDestinations:getAppSpecServiceAlertDestinations"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The threshold for the type of the warning.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.\n"
                }
            },
            "type": "object",
            "required": [
                "operator",
                "rule",
                "value",
                "window"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceAlertDestinations:getAppSpecServiceAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecServiceAlertDestinationsSlackWebhook:getAppSpecServiceAlertDestinationsSlackWebhook"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceAlertDestinationsSlackWebhook:getAppSpecServiceAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceAutoscaling:getAppSpecServiceAutoscaling": {
            "properties": {
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "The maximum amount of instances for this component. Must be more than min_instance_count.\n"
                },
                "metrics": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceAutoscalingMetrics:getAppSpecServiceAutoscalingMetrics",
                    "description": "The metrics that the component is scaled on.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "The minimum amount of instances for this component. Must be less than max_instance_count.\n"
                }
            },
            "type": "object",
            "required": [
                "maxInstanceCount",
                "metrics",
                "minInstanceCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceAutoscalingMetrics:getAppSpecServiceAutoscalingMetrics": {
            "properties": {
                "cpu": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceAutoscalingMetricsCpu:getAppSpecServiceAutoscalingMetricsCpu",
                    "description": "Settings for scaling the component based on CPU utilization.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceAutoscalingMetricsCpu:getAppSpecServiceAutoscalingMetricsCpu": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "The average target CPU utilization for the component.\n"
                }
            },
            "type": "object",
            "required": [
                "percent"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceBitbucket:getAppSpecServiceBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceCors:getAppSpecServiceCors": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e. This configures the `Access-Control-Allow-Credentials` header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.\n"
                },
                "allowOrigins": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceCorsAllowOrigins:getAppSpecServiceCorsAllowOrigins",
                    "description": "The `Access-Control-Allow-Origin` can be\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.\n"
                },
                "maxAge": {
                    "type": "string",
                    "description": "An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: \u003cspan pulumi-lang-nodejs=\"`5h30m`\" pulumi-lang-dotnet=\"`5h30m`\" pulumi-lang-go=\"`5h30m`\" pulumi-lang-python=\"`5h30m`\" pulumi-lang-yaml=\"`5h30m`\" pulumi-lang-java=\"`5h30m`\"\u003e`5h30m`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceCorsAllowOrigins:getAppSpecServiceCorsAllowOrigins": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.\n",
                    "deprecationMessage": "Prefix-based matching has been deprecated in favor of regex-based matching."
                },
                "regex": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceEnv:getAppSpecServiceEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The threshold for the type of the warning.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceGit:getAppSpecServiceGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceGithub:getAppSpecServiceGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceGitlab:getAppSpecServiceGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceHealthCheck:getAppSpecServiceHealthCheck": {
            "properties": {
                "failureThreshold": {
                    "type": "integer",
                    "description": "The number of failed health checks before considered unhealthy.\n"
                },
                "httpPath": {
                    "type": "string",
                    "description": "The route path used for the HTTP health check ping.\n"
                },
                "initialDelaySeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait before beginning health checks.\n"
                },
                "periodSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between health checks.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port on which the health check will be performed. If not set, the health check will be performed on the component's http_port.\n"
                },
                "successThreshold": {
                    "type": "integer",
                    "description": "The number of successful health checks before considered healthy.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "The number of seconds after which the check times out.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceImage:getAppSpecServiceImage": {
            "properties": {
                "deployOnPushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecServiceImageDeployOnPush:getAppSpecServiceImageDeployOnPush"
                    },
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "digest": {
                    "type": "string",
                    "description": "The image digest. Cannot be specified if \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e is provided.\n"
                },
                "registry": {
                    "type": "string",
                    "description": "The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.\n"
                },
                "registryCredentials": {
                    "type": "string",
                    "description": "Access credentials for third-party registries\n",
                    "secret": true
                },
                "registryType": {
                    "type": "string",
                    "description": "The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The repository name.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The repository tag. Defaults to \u003cspan pulumi-lang-nodejs=\"`latest`\" pulumi-lang-dotnet=\"`Latest`\" pulumi-lang-go=\"`latest`\" pulumi-lang-python=\"`latest`\" pulumi-lang-yaml=\"`latest`\" pulumi-lang-java=\"`latest`\"\u003e`latest`\u003c/span\u003e if not provided.\n"
                }
            },
            "type": "object",
            "required": [
                "deployOnPushes",
                "registryType",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceImageDeployOnPush:getAppSpecServiceImageDeployOnPush": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy images pushed to DOCR.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceLogDestination:getAppSpecServiceLogDestination": {
            "properties": {
                "datadog": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceLogDestinationDatadog:getAppSpecServiceLogDestinationDatadog",
                    "description": "Datadog configuration.\n"
                },
                "logtail": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceLogDestinationLogtail:getAppSpecServiceLogDestinationLogtail",
                    "description": "Logtail configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "openSearch": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceLogDestinationOpenSearch:getAppSpecServiceLogDestinationOpenSearch",
                    "description": "OpenSearch configuration.\n"
                },
                "papertrail": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceLogDestinationPapertrail:getAppSpecServiceLogDestinationPapertrail",
                    "description": "Papertrail configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceLogDestinationDatadog:getAppSpecServiceLogDestinationDatadog": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceLogDestinationLogtail:getAppSpecServiceLogDestinationLogtail": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "Logtail token.\n"
                }
            },
            "type": "object",
            "required": [
                "token"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceLogDestinationOpenSearch:getAppSpecServiceLogDestinationOpenSearch": {
            "properties": {
                "basicAuth": {
                    "$ref": "#/types/digitalocean:index/getAppSpecServiceLogDestinationOpenSearchBasicAuth:getAppSpecServiceLogDestinationOpenSearchBasicAuth",
                    "description": "OpenSearch basic auth\n"
                },
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                },
                "indexName": {
                    "type": "string",
                    "description": "The index name to use for the logs. If not set, the default index name is \u003cspan pulumi-lang-nodejs=\"`logs`\" pulumi-lang-dotnet=\"`Logs`\" pulumi-lang-go=\"`logs`\" pulumi-lang-python=\"`logs`\" pulumi-lang-yaml=\"`logs`\" pulumi-lang-java=\"`logs`\"\u003e`logs`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "basicAuth"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceLogDestinationOpenSearchBasicAuth:getAppSpecServiceLogDestinationOpenSearchBasicAuth": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for user defined in User. Is required when endpoint is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username to authenticate with. Only required when endpoint is set. Defaults to doadmin when\u003cspan pulumi-lang-nodejs=\" clusterName \" pulumi-lang-dotnet=\" ClusterName \" pulumi-lang-go=\" clusterName \" pulumi-lang-python=\" cluster_name \" pulumi-lang-yaml=\" clusterName \" pulumi-lang-java=\" clusterName \"\u003e cluster_name \u003c/span\u003eis set.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceLogDestinationPapertrail:getAppSpecServiceLogDestinationPapertrail": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecServiceRoute:getAppSpecServiceRoute": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Paths must start with `/` and must be unique within the app.\n"
                },
                "preservePathPrefix": {
                    "type": "boolean",
                    "description": "An optional flag to preserve the path that is forwarded to the backend service.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecServiceTermination:getAppSpecServiceTermination": {
            "properties": {
                "drainSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between selecting a container instance for termination and issuing the TERM signal. Selecting a container instance for termination begins an asynchronous drain of new requests on upstream load-balancers. Default: 15 seconds, Minimum 1, Maximum 110.\n"
                },
                "gracePeriodSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecStaticSite:getAppSpecStaticSite": {
            "properties": {
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/getAppSpecStaticSiteBitbucket:getAppSpecStaticSiteBitbucket",
                    "description": "A Bitbucket repo to use as component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set. To read your repo, App Platform must be authorized to access your Bitbucket account. Go to this URL to link App Platform to your Bitbucket account: `https://cloud.digitalocean.com/apps/bitbucket/install`.\n"
                },
                "buildCommand": {
                    "type": "string",
                    "description": "An optional build command to run while building this component from source.\n"
                },
                "catchallDocument": {
                    "type": "string",
                    "description": "The name of the document to use as the fallback for any requests to documents that are not found when serving this static site.\n"
                },
                "cors": {
                    "$ref": "#/types/digitalocean:index/getAppSpecStaticSiteCors:getAppSpecStaticSiteCors",
                    "description": "The [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies of the app.\n",
                    "deprecationMessage": "Service level CORS rules are deprecated in favor of ingresses"
                },
                "dockerfilePath": {
                    "type": "string",
                    "description": "The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.\n"
                },
                "environmentSlug": {
                    "type": "string",
                    "description": "An environment slug describing the type of this app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecStaticSiteEnv:getAppSpecStaticSiteEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "errorDocument": {
                    "type": "string",
                    "description": "The name of the error document to use when serving this static site.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/getAppSpecStaticSiteGit:getAppSpecStaticSiteGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e  may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/getAppSpecStaticSiteGithub:getAppSpecStaticSiteGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/getAppSpecStaticSiteGitlab:getAppSpecStaticSiteGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "indexDocument": {
                    "type": "string",
                    "description": "The name of the index document to use when serving this static site.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "outputDir": {
                    "type": "string",
                    "description": "An optional path to where the built assets will be located, relative to the build context. If not set, App Platform will automatically scan for these directory names: `_static`, \u003cspan pulumi-lang-nodejs=\"`dist`\" pulumi-lang-dotnet=\"`Dist`\" pulumi-lang-go=\"`dist`\" pulumi-lang-python=\"`dist`\" pulumi-lang-yaml=\"`dist`\" pulumi-lang-java=\"`dist`\"\u003e`dist`\u003c/span\u003e, \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.\n"
                },
                "routes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecStaticSiteRoute:getAppSpecStaticSiteRoute"
                    },
                    "deprecationMessage": "Service level routes are deprecated in favor of ingresses"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "routes"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecStaticSiteBitbucket:getAppSpecStaticSiteBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecStaticSiteCors:getAppSpecStaticSiteCors": {
            "properties": {
                "allowCredentials": {
                    "type": "boolean",
                    "description": "Whether browsers should expose the response to the client-side JavaScript code when the request's credentials mode is \u003cspan pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\"\u003e`include`\u003c/span\u003e. This configures the `Access-Control-Allow-Credentials` header.\n"
                },
                "allowHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP request headers. This configures the `Access-Control-Allow-Headers` header.\n"
                },
                "allowMethods": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of allowed HTTP methods. This configures the `Access-Control-Allow-Methods` header.\n"
                },
                "allowOrigins": {
                    "$ref": "#/types/digitalocean:index/getAppSpecStaticSiteCorsAllowOrigins:getAppSpecStaticSiteCorsAllowOrigins",
                    "description": "The `Access-Control-Allow-Origin` can be\n"
                },
                "exposeHeaders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The set of HTTP response headers that browsers are allowed to access. This configures the `Access-Control-Expose-Headers` header.\n"
                },
                "maxAge": {
                    "type": "string",
                    "description": "An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: \u003cspan pulumi-lang-nodejs=\"`5h30m`\" pulumi-lang-dotnet=\"`5h30m`\" pulumi-lang-go=\"`5h30m`\" pulumi-lang-python=\"`5h30m`\" pulumi-lang-yaml=\"`5h30m`\" pulumi-lang-java=\"`5h30m`\"\u003e`5h30m`\u003c/span\u003e.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecStaticSiteCorsAllowOrigins:getAppSpecStaticSiteCorsAllowOrigins": {
            "properties": {
                "exact": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin only if the client's origin exactly matches the value you provide.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the beginning of the client's origin matches the value you provide.\n",
                    "deprecationMessage": "Prefix-based matching has been deprecated in favor of regex-based matching."
                },
                "regex": {
                    "type": "string",
                    "description": "The `Access-Control-Allow-Origin` header will be set to the client's origin if the client’s origin matches the regex you provide, in [RE2 style syntax](https://github.com/google/re2/wiki/Syntax).\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecStaticSiteEnv:getAppSpecStaticSiteEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The threshold for the type of the warning.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecStaticSiteGit:getAppSpecStaticSiteGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecStaticSiteGithub:getAppSpecStaticSiteGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecStaticSiteGitlab:getAppSpecStaticSiteGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecStaticSiteRoute:getAppSpecStaticSiteRoute": {
            "properties": {
                "path": {
                    "type": "string",
                    "description": "Paths must start with `/` and must be unique within the app.\n"
                },
                "preservePathPrefix": {
                    "type": "boolean",
                    "description": "An optional flag to preserve the path that is forwarded to the backend service.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecVpc:getAppSpecVpc": {
            "properties": {
                "id": {
                    "type": "string",
                    "description": "The ID of the dedicated egress IP.\n"
                }
            },
            "type": "object",
            "required": [
                "id"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorker:getAppSpecWorker": {
            "properties": {
                "alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecWorkerAlert:getAppSpecWorkerAlert"
                    },
                    "description": "Describes an alert policy for the component.\n"
                },
                "autoscaling": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerAutoscaling:getAppSpecWorkerAutoscaling",
                    "description": "Configuration for automatically scaling this component based on metrics.\n"
                },
                "bitbucket": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerBitbucket:getAppSpecWorkerBitbucket",
                    "description": "A Bitbucket repo to use as component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set. To read your repo, App Platform must be authorized to access your Bitbucket account. Go to this URL to link App Platform to your Bitbucket account: `https://cloud.digitalocean.com/apps/bitbucket/install`.\n"
                },
                "buildCommand": {
                    "type": "string",
                    "description": "An optional build command to run while building this component from source.\n"
                },
                "dockerfilePath": {
                    "type": "string",
                    "description": "The path to a Dockerfile relative to the root of the repo. If set, overrides usage of buildpacks.\n"
                },
                "environmentSlug": {
                    "type": "string",
                    "description": "An environment slug describing the type of this app.\n"
                },
                "envs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecWorkerEnv:getAppSpecWorkerEnv"
                    },
                    "description": "Describes an environment variable made available to an app competent.\n"
                },
                "git": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerGit:getAppSpecWorkerGit",
                    "description": "A Git repo to use as the component's source. The repository must be able to be cloned without authentication.  Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e  may be set.\n"
                },
                "github": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerGithub:getAppSpecWorkerGithub",
                    "description": "A GitHub repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/github/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "gitlab": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerGitlab:getAppSpecWorkerGitlab",
                    "description": "A Gitlab repo to use as the component's source. DigitalOcean App Platform must have [access to the repository](https://cloud.digitalocean.com/apps/gitlab/install). Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "image": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerImage:getAppSpecWorkerImage",
                    "description": "An image to use as the component's source. Only one of \u003cspan pulumi-lang-nodejs=\"`git`\" pulumi-lang-dotnet=\"`Git`\" pulumi-lang-go=\"`git`\" pulumi-lang-python=\"`git`\" pulumi-lang-yaml=\"`git`\" pulumi-lang-java=\"`git`\"\u003e`git`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\"\u003e`github`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`bitbucket`\" pulumi-lang-dotnet=\"`Bitbucket`\" pulumi-lang-go=\"`bitbucket`\" pulumi-lang-python=\"`bitbucket`\" pulumi-lang-yaml=\"`bitbucket`\" pulumi-lang-java=\"`bitbucket`\"\u003e`bitbucket`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`gitlab`\" pulumi-lang-dotnet=\"`Gitlab`\" pulumi-lang-go=\"`gitlab`\" pulumi-lang-python=\"`gitlab`\" pulumi-lang-yaml=\"`gitlab`\" pulumi-lang-java=\"`gitlab`\"\u003e`gitlab`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e may be set.\n"
                },
                "instanceCount": {
                    "type": "integer",
                    "description": "The amount of instances that this component should be scaled to.\n"
                },
                "instanceSizeSlug": {
                    "type": "string",
                    "description": "The instance size to use for this component.\n"
                },
                "logDestinations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecWorkerLogDestination:getAppSpecWorkerLogDestination"
                    },
                    "description": "Describes a log forwarding destination.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "runCommand": {
                    "type": "string",
                    "description": "An optional run command to override the component's default.\n"
                },
                "sourceDir": {
                    "type": "string",
                    "description": "An optional path to the working directory to use for the build.\n"
                },
                "termination": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerTermination:getAppSpecWorkerTermination",
                    "description": "Contains a component's termination parameters.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerAlert:getAppSpecWorkerAlert": {
            "properties": {
                "destinations": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerAlertDestinations:getAppSpecWorkerAlertDestinations"
                },
                "disabled": {
                    "type": "boolean",
                    "description": "Determines whether or not the alert is disabled (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).\n"
                },
                "operator": {
                    "type": "string",
                    "description": "The operator to use. This is either of `GREATER_THAN` or `LESS_THAN`.\n"
                },
                "rule": {
                    "type": "string",
                    "description": "The type of the alert to configure. Component app alert policies can be: `CPU_UTILIZATION`, `MEM_UTILIZATION`, or `RESTART_COUNT`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The threshold for the type of the warning.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time before alerts should be triggered. This is may be one of: `FIVE_MINUTES`, `TEN_MINUTES`, `THIRTY_MINUTES`, `ONE_HOUR`.\n"
                }
            },
            "type": "object",
            "required": [
                "operator",
                "rule",
                "value",
                "window"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerAlertDestinations:getAppSpecWorkerAlertDestinations": {
            "properties": {
                "emails": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "slackWebhooks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecWorkerAlertDestinationsSlackWebhook:getAppSpecWorkerAlertDestinationsSlackWebhook"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecWorkerAlertDestinationsSlackWebhook:getAppSpecWorkerAlertDestinationsSlackWebhook": {
            "properties": {
                "channel": {
                    "type": "string",
                    "description": "The Slack channel to send notifications to.\n"
                },
                "url": {
                    "type": "string",
                    "description": "The Slack webhook URL.\n"
                }
            },
            "type": "object",
            "required": [
                "channel",
                "url"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerAutoscaling:getAppSpecWorkerAutoscaling": {
            "properties": {
                "maxInstanceCount": {
                    "type": "integer",
                    "description": "The maximum amount of instances for this component. Must be more than min_instance_count.\n"
                },
                "metrics": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerAutoscalingMetrics:getAppSpecWorkerAutoscalingMetrics",
                    "description": "The metrics that the component is scaled on.\n"
                },
                "minInstanceCount": {
                    "type": "integer",
                    "description": "The minimum amount of instances for this component. Must be less than max_instance_count.\n"
                }
            },
            "type": "object",
            "required": [
                "maxInstanceCount",
                "metrics",
                "minInstanceCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerAutoscalingMetrics:getAppSpecWorkerAutoscalingMetrics": {
            "properties": {
                "cpu": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerAutoscalingMetricsCpu:getAppSpecWorkerAutoscalingMetricsCpu",
                    "description": "Settings for scaling the component based on CPU utilization.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecWorkerAutoscalingMetricsCpu:getAppSpecWorkerAutoscalingMetricsCpu": {
            "properties": {
                "percent": {
                    "type": "integer",
                    "description": "The average target CPU utilization for the component.\n"
                }
            },
            "type": "object",
            "required": [
                "percent"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerBitbucket:getAppSpecWorkerBitbucket": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecWorkerEnv:getAppSpecWorkerEnv": {
            "properties": {
                "key": {
                    "type": "string",
                    "description": "The name of the environment variable.\n"
                },
                "scope": {
                    "type": "string",
                    "description": "The visibility scope of the environment variable. One of `RUN_TIME`, `BUILD_TIME`, or `RUN_AND_BUILD_TIME` (default).\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the environment variable, `GENERAL` or `SECRET`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The threshold for the type of the warning.\n",
                    "secret": true
                }
            },
            "type": "object",
            "required": [
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerGit:getAppSpecWorkerGit": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "repoCloneUrl": {
                    "type": "string",
                    "description": "The clone URL of the repo.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecWorkerGithub:getAppSpecWorkerGithub": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecWorkerGitlab:getAppSpecWorkerGitlab": {
            "properties": {
                "branch": {
                    "type": "string",
                    "description": "The name of the branch to use.\n"
                },
                "deployOnPush": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "repo": {
                    "type": "string",
                    "description": "The name of the repo in the format `owner/repo`.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecWorkerImage:getAppSpecWorkerImage": {
            "properties": {
                "deployOnPushes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getAppSpecWorkerImageDeployOnPush:getAppSpecWorkerImageDeployOnPush"
                    },
                    "description": "Whether to automatically deploy new commits made to the repo.\n"
                },
                "digest": {
                    "type": "string",
                    "description": "The image digest. Cannot be specified if \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e is provided.\n"
                },
                "registry": {
                    "type": "string",
                    "description": "The registry name. Must be left empty for the `DOCR` registry type. Required for the `DOCKER_HUB` registry type.\n"
                },
                "registryCredentials": {
                    "type": "string",
                    "description": "Access credentials for third-party registries\n",
                    "secret": true
                },
                "registryType": {
                    "type": "string",
                    "description": "The registry type. One of `DOCR` (DigitalOcean container registry) or `DOCKER_HUB`.\n"
                },
                "repository": {
                    "type": "string",
                    "description": "The repository name.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The repository tag. Defaults to \u003cspan pulumi-lang-nodejs=\"`latest`\" pulumi-lang-dotnet=\"`Latest`\" pulumi-lang-go=\"`latest`\" pulumi-lang-python=\"`latest`\" pulumi-lang-yaml=\"`latest`\" pulumi-lang-java=\"`latest`\"\u003e`latest`\u003c/span\u003e if not provided.\n"
                }
            },
            "type": "object",
            "required": [
                "deployOnPushes",
                "registryType",
                "repository"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerImageDeployOnPush:getAppSpecWorkerImageDeployOnPush": {
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "Whether to automatically deploy images pushed to DOCR.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecWorkerLogDestination:getAppSpecWorkerLogDestination": {
            "properties": {
                "datadog": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerLogDestinationDatadog:getAppSpecWorkerLogDestinationDatadog",
                    "description": "Datadog configuration.\n"
                },
                "logtail": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerLogDestinationLogtail:getAppSpecWorkerLogDestinationLogtail",
                    "description": "Logtail configuration.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the component.\n"
                },
                "openSearch": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerLogDestinationOpenSearch:getAppSpecWorkerLogDestinationOpenSearch",
                    "description": "OpenSearch configuration.\n"
                },
                "papertrail": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerLogDestinationPapertrail:getAppSpecWorkerLogDestinationPapertrail",
                    "description": "Papertrail configuration.\n"
                }
            },
            "type": "object",
            "required": [
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerLogDestinationDatadog:getAppSpecWorkerLogDestinationDatadog": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "Datadog API key.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "apiKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerLogDestinationLogtail:getAppSpecWorkerLogDestinationLogtail": {
            "properties": {
                "token": {
                    "type": "string",
                    "description": "Logtail token.\n"
                }
            },
            "type": "object",
            "required": [
                "token"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerLogDestinationOpenSearch:getAppSpecWorkerLogDestinationOpenSearch": {
            "properties": {
                "basicAuth": {
                    "$ref": "#/types/digitalocean:index/getAppSpecWorkerLogDestinationOpenSearchBasicAuth:getAppSpecWorkerLogDestinationOpenSearchBasicAuth",
                    "description": "OpenSearch basic auth\n"
                },
                "clusterName": {
                    "type": "string",
                    "description": "The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if \u003cspan pulumi-lang-nodejs=\"`clusterName`\" pulumi-lang-dotnet=\"`ClusterName`\" pulumi-lang-go=\"`clusterName`\" pulumi-lang-python=\"`cluster_name`\" pulumi-lang-yaml=\"`clusterName`\" pulumi-lang-java=\"`clusterName`\"\u003e`cluster_name`\u003c/span\u003e is not set, a new cluster will be provisioned.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                },
                "indexName": {
                    "type": "string",
                    "description": "The index name to use for the logs. If not set, the default index name is \u003cspan pulumi-lang-nodejs=\"`logs`\" pulumi-lang-dotnet=\"`Logs`\" pulumi-lang-go=\"`logs`\" pulumi-lang-python=\"`logs`\" pulumi-lang-yaml=\"`logs`\" pulumi-lang-java=\"`logs`\"\u003e`logs`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "basicAuth"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerLogDestinationOpenSearchBasicAuth:getAppSpecWorkerLogDestinationOpenSearchBasicAuth": {
            "properties": {
                "password": {
                    "type": "string",
                    "description": "Password for user defined in User. Is required when endpoint is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username to authenticate with. Only required when endpoint is set. Defaults to doadmin when\u003cspan pulumi-lang-nodejs=\" clusterName \" pulumi-lang-dotnet=\" ClusterName \" pulumi-lang-go=\" clusterName \" pulumi-lang-python=\" cluster_name \" pulumi-lang-yaml=\" clusterName \" pulumi-lang-java=\" clusterName \"\u003e cluster_name \u003c/span\u003eis set.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getAppSpecWorkerLogDestinationPapertrail:getAppSpecWorkerLogDestinationPapertrail": {
            "properties": {
                "endpoint": {
                    "type": "string",
                    "description": "OpenSearch API Endpoint. Only HTTPS is supported. Format: https://\u003chost\u003e:\u003cport\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "endpoint"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getAppSpecWorkerTermination:getAppSpecWorkerTermination": {
            "properties": {
                "gracePeriodSeconds": {
                    "type": "integer",
                    "description": "The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getByoipPrefixResourcesAddress:getByoipPrefixResourcesAddress": {
            "properties": {
                "assignedAt": {
                    "type": "string",
                    "description": "The timestamp when the IP was assigned.\n"
                },
                "id": {
                    "type": "integer",
                    "description": "The unique identifier of the IP address allocation.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the IP is allocated.\n"
                }
            },
            "type": "object",
            "required": [
                "assignedAt",
                "id",
                "ipAddress",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDatabaseClusterMaintenanceWindow:getDatabaseClusterMaintenanceWindow": {
            "properties": {
                "day": {
                    "type": "string",
                    "description": "The day of the week on which to apply maintenance updates.\n"
                },
                "hour": {
                    "type": "string",
                    "description": "The hour in UTC at which maintenance updates will be applied in 24 hour format.\n"
                }
            },
            "type": "object",
            "required": [
                "day",
                "hour"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDatabaseUserSetting:getDatabaseUserSetting": {
            "properties": {
                "acls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getDatabaseUserSettingAcl:getDatabaseUserSettingAcl"
                    }
                },
                "opensearchAcls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getDatabaseUserSettingOpensearchAcl:getDatabaseUserSettingOpensearchAcl"
                    }
                }
            },
            "type": "object"
        },
        "digitalocean:index/getDatabaseUserSettingAcl:getDatabaseUserSettingAcl": {
            "properties": {
                "id": {
                    "type": "string"
                },
                "permission": {
                    "type": "string"
                },
                "topic": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "id",
                "permission",
                "topic"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDatabaseUserSettingOpensearchAcl:getDatabaseUserSettingOpensearchAcl": {
            "properties": {
                "index": {
                    "type": "string"
                },
                "permission": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "index",
                "permission"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDomainsDomain:getDomainsDomain": {
            "properties": {
                "name": {
                    "type": "string",
                    "description": "(Required) The name of the domain.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The TTL of the domain.\n"
                },
                "urn": {
                    "type": "string",
                    "description": "The uniform resource name of the domain\n"
                }
            },
            "type": "object",
            "required": [
                "name",
                "ttl",
                "urn"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDomainsFilter:getDomainsFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the domains by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`urn`\" pulumi-lang-dotnet=\"`Urn`\" pulumi-lang-go=\"`urn`\" pulumi-lang-python=\"`urn`\" pulumi-lang-yaml=\"`urn`\" pulumi-lang-java=\"`urn`\"\u003e`urn`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`ttl`\" pulumi-lang-dotnet=\"`Ttl`\" pulumi-lang-go=\"`ttl`\" pulumi-lang-python=\"`ttl`\" pulumi-lang-yaml=\"`ttl`\" pulumi-lang-java=\"`ttl`\"\u003e`ttl`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of values to match against the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field. Only retrieves domains\nwhere the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field takes on one or more of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getDomainsSort:getDomainsSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the domains by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`urn`\" pulumi-lang-dotnet=\"`Urn`\" pulumi-lang-go=\"`urn`\" pulumi-lang-python=\"`urn`\" pulumi-lang-yaml=\"`urn`\" pulumi-lang-java=\"`urn`\"\u003e`urn`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`ttl`\" pulumi-lang-dotnet=\"`Ttl`\" pulumi-lang-go=\"`ttl`\" pulumi-lang-python=\"`ttl`\" pulumi-lang-yaml=\"`ttl`\" pulumi-lang-java=\"`ttl`\"\u003e`ttl`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getDropletAutoscaleConfig:getDropletAutoscaleConfig": {
            "properties": {
                "cooldownMinutes": {
                    "type": "integer",
                    "description": "Cooldown duration\n"
                },
                "maxInstances": {
                    "type": "integer",
                    "description": "Max number of members\n"
                },
                "minInstances": {
                    "type": "integer",
                    "description": "Min number of members\n"
                },
                "targetCpuUtilization": {
                    "type": "number",
                    "description": "CPU target threshold\n"
                },
                "targetMemoryUtilization": {
                    "type": "number",
                    "description": "Memory target threshold\n"
                },
                "targetNumberInstances": {
                    "type": "integer",
                    "description": "Target number of members\n"
                }
            },
            "type": "object",
            "required": [
                "cooldownMinutes",
                "maxInstances",
                "minInstances",
                "targetCpuUtilization",
                "targetMemoryUtilization",
                "targetNumberInstances"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDropletAutoscaleCurrentUtilization:getDropletAutoscaleCurrentUtilization": {
            "properties": {
                "cpu": {
                    "type": "number",
                    "description": "Average CPU utilization\n"
                },
                "memory": {
                    "type": "number",
                    "description": "Average Memory utilization\n"
                }
            },
            "type": "object",
            "required": [
                "cpu",
                "memory"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDropletAutoscaleDropletTemplate:getDropletAutoscaleDropletTemplate": {
            "properties": {
                "image": {
                    "type": "string",
                    "description": "Droplet image\n"
                },
                "ipv6": {
                    "type": "boolean",
                    "description": "Enable droplet IPv6\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Droplet project ID\n"
                },
                "region": {
                    "type": "string",
                    "description": "Droplet region\n"
                },
                "size": {
                    "type": "string",
                    "description": "Droplet size\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Droplet SSH keys\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Droplet tags\n"
                },
                "userData": {
                    "type": "string",
                    "description": "Droplet user data\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "Droplet VPC UUID\n"
                },
                "withDropletAgent": {
                    "type": "boolean",
                    "description": "Enable droplet agent\n"
                }
            },
            "type": "object",
            "required": [
                "image",
                "ipv6",
                "projectId",
                "region",
                "size",
                "sshKeys",
                "tags",
                "userData",
                "vpcUuid",
                "withDropletAgent"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDropletsDroplet:getDropletsDroplet": {
            "properties": {
                "backups": {
                    "type": "boolean",
                    "description": "Whether backups are enabled.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "the creation date for the Droplet\n"
                },
                "disk": {
                    "type": "integer",
                    "description": "The size of the Droplet's disk in GB.\n"
                },
                "id": {
                    "type": "integer",
                    "description": "The ID of the Droplet.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The Droplet image ID or slug.\n"
                },
                "ipv4Address": {
                    "type": "string",
                    "description": "The Droplet's public IPv4 address\n"
                },
                "ipv4AddressPrivate": {
                    "type": "string",
                    "description": "The Droplet's private IPv4 address\n"
                },
                "ipv6": {
                    "type": "boolean",
                    "description": "Whether IPv6 is enabled.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "The Droplet's public IPv6 address\n"
                },
                "ipv6AddressPrivate": {
                    "type": "string",
                    "description": "The Droplet's private IPv6 address\n"
                },
                "locked": {
                    "type": "boolean",
                    "description": "Whether the Droplet is locked.\n"
                },
                "memory": {
                    "type": "integer",
                    "description": "The amount of the Droplet's memory in MB.\n"
                },
                "monitoring": {
                    "type": "boolean",
                    "description": "Whether monitoring agent is installed.\n"
                },
                "name": {
                    "type": "string",
                    "description": "name of the Droplet\n"
                },
                "priceHourly": {
                    "type": "number",
                    "description": "Droplet hourly price.\n"
                },
                "priceMonthly": {
                    "type": "number",
                    "description": "Droplet monthly price.\n"
                },
                "privateNetworking": {
                    "type": "boolean",
                    "description": "Whether private networks are enabled.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region the Droplet is running in.\n"
                },
                "size": {
                    "type": "string",
                    "description": "The unique slug that identifies the type of Droplet.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the Droplet.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the tags associated to the Droplet.\n"
                },
                "urn": {
                    "type": "string",
                    "description": "The uniform resource name of the Droplet\n"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "The number of the Droplet's virtual CPUs.\n"
                },
                "volumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of the IDs of each volumes attached to the Droplet.\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the Droplet is located.\n"
                }
            },
            "type": "object",
            "required": [
                "backups",
                "createdAt",
                "disk",
                "id",
                "image",
                "ipv4Address",
                "ipv4AddressPrivate",
                "ipv6",
                "ipv6Address",
                "ipv6AddressPrivate",
                "locked",
                "memory",
                "monitoring",
                "name",
                "priceHourly",
                "priceMonthly",
                "privateNetworking",
                "region",
                "size",
                "status",
                "tags",
                "urn",
                "vcpus",
                "volumeIds",
                "vpcUuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getDropletsFilter:getDropletsFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the Droplets by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`backups`\" pulumi-lang-dotnet=\"`Backups`\" pulumi-lang-go=\"`backups`\" pulumi-lang-python=\"`backups`\" pulumi-lang-yaml=\"`backups`\" pulumi-lang-java=\"`backups`\"\u003e`backups`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`createdAt`\" pulumi-lang-dotnet=\"`CreatedAt`\" pulumi-lang-go=\"`createdAt`\" pulumi-lang-python=\"`created_at`\" pulumi-lang-yaml=\"`createdAt`\" pulumi-lang-java=\"`createdAt`\"\u003e`created_at`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`disk`\" pulumi-lang-dotnet=\"`Disk`\" pulumi-lang-go=\"`disk`\" pulumi-lang-python=\"`disk`\" pulumi-lang-yaml=\"`disk`\" pulumi-lang-java=\"`disk`\"\u003e`disk`\u003c/span\u003e, \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\u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv4Address`\" pulumi-lang-dotnet=\"`Ipv4Address`\" pulumi-lang-go=\"`ipv4Address`\" pulumi-lang-python=\"`ipv4_address`\" pulumi-lang-yaml=\"`ipv4Address`\" pulumi-lang-java=\"`ipv4Address`\"\u003e`ipv4_address`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv4AddressPrivate`\" pulumi-lang-dotnet=\"`Ipv4AddressPrivate`\" pulumi-lang-go=\"`ipv4AddressPrivate`\" pulumi-lang-python=\"`ipv4_address_private`\" pulumi-lang-yaml=\"`ipv4AddressPrivate`\" pulumi-lang-java=\"`ipv4AddressPrivate`\"\u003e`ipv4_address_private`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6Address`\" pulumi-lang-dotnet=\"`Ipv6Address`\" pulumi-lang-go=\"`ipv6Address`\" pulumi-lang-python=\"`ipv6_address`\" pulumi-lang-yaml=\"`ipv6Address`\" pulumi-lang-java=\"`ipv6Address`\"\u003e`ipv6_address`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6AddressPrivate`\" pulumi-lang-dotnet=\"`Ipv6AddressPrivate`\" pulumi-lang-go=\"`ipv6AddressPrivate`\" pulumi-lang-python=\"`ipv6_address_private`\" pulumi-lang-yaml=\"`ipv6AddressPrivate`\" pulumi-lang-java=\"`ipv6AddressPrivate`\"\u003e`ipv6_address_private`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`locked`\" pulumi-lang-dotnet=\"`Locked`\" pulumi-lang-go=\"`locked`\" pulumi-lang-python=\"`locked`\" pulumi-lang-yaml=\"`locked`\" pulumi-lang-java=\"`locked`\"\u003e`locked`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`monitoring`\" pulumi-lang-dotnet=\"`Monitoring`\" pulumi-lang-go=\"`monitoring`\" pulumi-lang-python=\"`monitoring`\" pulumi-lang-yaml=\"`monitoring`\" pulumi-lang-java=\"`monitoring`\"\u003e`monitoring`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`priceHourly`\" pulumi-lang-dotnet=\"`PriceHourly`\" pulumi-lang-go=\"`priceHourly`\" pulumi-lang-python=\"`price_hourly`\" pulumi-lang-yaml=\"`priceHourly`\" pulumi-lang-java=\"`priceHourly`\"\u003e`price_hourly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`priceMonthly`\" pulumi-lang-dotnet=\"`PriceMonthly`\" pulumi-lang-go=\"`priceMonthly`\" pulumi-lang-python=\"`price_monthly`\" pulumi-lang-yaml=\"`priceMonthly`\" pulumi-lang-java=\"`priceMonthly`\"\u003e`price_monthly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`privateNetworking`\" pulumi-lang-dotnet=\"`PrivateNetworking`\" pulumi-lang-go=\"`privateNetworking`\" pulumi-lang-python=\"`private_networking`\" pulumi-lang-yaml=\"`privateNetworking`\" pulumi-lang-java=\"`privateNetworking`\"\u003e`private_networking`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\"\u003e`status`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tags`\" pulumi-lang-dotnet=\"`Tags`\" pulumi-lang-go=\"`tags`\" pulumi-lang-python=\"`tags`\" pulumi-lang-yaml=\"`tags`\" pulumi-lang-java=\"`tags`\"\u003e`tags`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`urn`\" pulumi-lang-dotnet=\"`Urn`\" pulumi-lang-go=\"`urn`\" pulumi-lang-python=\"`urn`\" pulumi-lang-yaml=\"`urn`\" pulumi-lang-java=\"`urn`\"\u003e`urn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vcpus`\" pulumi-lang-dotnet=\"`Vcpus`\" pulumi-lang-go=\"`vcpus`\" pulumi-lang-python=\"`vcpus`\" pulumi-lang-yaml=\"`vcpus`\" pulumi-lang-java=\"`vcpus`\"\u003e`vcpus`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volumeIds`\" pulumi-lang-dotnet=\"`VolumeIds`\" pulumi-lang-go=\"`volumeIds`\" pulumi-lang-python=\"`volume_ids`\" pulumi-lang-yaml=\"`volumeIds`\" pulumi-lang-java=\"`volumeIds`\"\u003e`volume_ids`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of values to match against the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field. Only retrieves Droplets\nwhere the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field takes on one or more of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getDropletsSort:getDropletsSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the Droplets by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`backups`\" pulumi-lang-dotnet=\"`Backups`\" pulumi-lang-go=\"`backups`\" pulumi-lang-python=\"`backups`\" pulumi-lang-yaml=\"`backups`\" pulumi-lang-java=\"`backups`\"\u003e`backups`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`createdAt`\" pulumi-lang-dotnet=\"`CreatedAt`\" pulumi-lang-go=\"`createdAt`\" pulumi-lang-python=\"`created_at`\" pulumi-lang-yaml=\"`createdAt`\" pulumi-lang-java=\"`createdAt`\"\u003e`created_at`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`disk`\" pulumi-lang-dotnet=\"`Disk`\" pulumi-lang-go=\"`disk`\" pulumi-lang-python=\"`disk`\" pulumi-lang-yaml=\"`disk`\" pulumi-lang-java=\"`disk`\"\u003e`disk`\u003c/span\u003e, \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\u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv4Address`\" pulumi-lang-dotnet=\"`Ipv4Address`\" pulumi-lang-go=\"`ipv4Address`\" pulumi-lang-python=\"`ipv4_address`\" pulumi-lang-yaml=\"`ipv4Address`\" pulumi-lang-java=\"`ipv4Address`\"\u003e`ipv4_address`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv4AddressPrivate`\" pulumi-lang-dotnet=\"`Ipv4AddressPrivate`\" pulumi-lang-go=\"`ipv4AddressPrivate`\" pulumi-lang-python=\"`ipv4_address_private`\" pulumi-lang-yaml=\"`ipv4AddressPrivate`\" pulumi-lang-java=\"`ipv4AddressPrivate`\"\u003e`ipv4_address_private`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6`\" pulumi-lang-dotnet=\"`Ipv6`\" pulumi-lang-go=\"`ipv6`\" pulumi-lang-python=\"`ipv6`\" pulumi-lang-yaml=\"`ipv6`\" pulumi-lang-java=\"`ipv6`\"\u003e`ipv6`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6Address`\" pulumi-lang-dotnet=\"`Ipv6Address`\" pulumi-lang-go=\"`ipv6Address`\" pulumi-lang-python=\"`ipv6_address`\" pulumi-lang-yaml=\"`ipv6Address`\" pulumi-lang-java=\"`ipv6Address`\"\u003e`ipv6_address`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipv6AddressPrivate`\" pulumi-lang-dotnet=\"`Ipv6AddressPrivate`\" pulumi-lang-go=\"`ipv6AddressPrivate`\" pulumi-lang-python=\"`ipv6_address_private`\" pulumi-lang-yaml=\"`ipv6AddressPrivate`\" pulumi-lang-java=\"`ipv6AddressPrivate`\"\u003e`ipv6_address_private`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`locked`\" pulumi-lang-dotnet=\"`Locked`\" pulumi-lang-go=\"`locked`\" pulumi-lang-python=\"`locked`\" pulumi-lang-yaml=\"`locked`\" pulumi-lang-java=\"`locked`\"\u003e`locked`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`monitoring`\" pulumi-lang-dotnet=\"`Monitoring`\" pulumi-lang-go=\"`monitoring`\" pulumi-lang-python=\"`monitoring`\" pulumi-lang-yaml=\"`monitoring`\" pulumi-lang-java=\"`monitoring`\"\u003e`monitoring`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`priceHourly`\" pulumi-lang-dotnet=\"`PriceHourly`\" pulumi-lang-go=\"`priceHourly`\" pulumi-lang-python=\"`price_hourly`\" pulumi-lang-yaml=\"`priceHourly`\" pulumi-lang-java=\"`priceHourly`\"\u003e`price_hourly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`priceMonthly`\" pulumi-lang-dotnet=\"`PriceMonthly`\" pulumi-lang-go=\"`priceMonthly`\" pulumi-lang-python=\"`price_monthly`\" pulumi-lang-yaml=\"`priceMonthly`\" pulumi-lang-java=\"`priceMonthly`\"\u003e`price_monthly`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`privateNetworking`\" pulumi-lang-dotnet=\"`PrivateNetworking`\" pulumi-lang-go=\"`privateNetworking`\" pulumi-lang-python=\"`private_networking`\" pulumi-lang-yaml=\"`privateNetworking`\" pulumi-lang-java=\"`privateNetworking`\"\u003e`private_networking`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\"\u003e`status`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`urn`\" pulumi-lang-dotnet=\"`Urn`\" pulumi-lang-go=\"`urn`\" pulumi-lang-python=\"`urn`\" pulumi-lang-yaml=\"`urn`\" pulumi-lang-java=\"`urn`\"\u003e`urn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vcpus`\" pulumi-lang-dotnet=\"`Vcpus`\" pulumi-lang-go=\"`vcpus`\" pulumi-lang-python=\"`vcpus`\" pulumi-lang-yaml=\"`vcpus`\" pulumi-lang-java=\"`vcpus`\"\u003e`vcpus`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getFirewallInboundRule:getFirewallInboundRule": {
            "properties": {
                "portRange": {
                    "type": "string",
                    "description": "The ports on which traffic will be allowed\nspecified as a string containing a single port, a range (e.g. \"8000-9000\"),\nor \"1-65535\" to open all ports for a protocol. Required for when protocol is\n\u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The type of traffic to be allowed.\nThis may be one of \"tcp\", \"udp\", or \"icmp\".\n"
                },
                "sourceAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array of strings containing the IPv4\naddresses, IPv6 addresses, IPv4 CIDRs, and/or IPv6 CIDRs from which the\ninbound traffic will be accepted.\n"
                },
                "sourceDropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An array containing the IDs of\nthe Droplets from which the inbound traffic will be accepted.\n"
                },
                "sourceKubernetesIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "sourceLoadBalancerUids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the IDs\nof the Load Balancers from which the inbound traffic will be accepted.\n"
                },
                "sourceTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of names of Tags corresponding to group of\nDroplets from which the inbound traffic will be accepted.\n"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ]
        },
        "digitalocean:index/getFirewallOutboundRule:getFirewallOutboundRule": {
            "properties": {
                "destinationAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array of strings containing the IPv4\naddresses, IPv6 addresses, IPv4 CIDRs, and/or IPv6 CIDRs to which the\noutbound traffic will be allowed.\n"
                },
                "destinationDropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "An array containing the IDs of\nthe Droplets to which the outbound traffic will be allowed.\n"
                },
                "destinationKubernetesIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "destinationLoadBalancerUids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the IDs\nof the Load Balancers to which the outbound traffic will be allowed.\n"
                },
                "destinationTags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the names of Tags\ncorresponding to groups of Droplets to which the outbound traffic will\nbe allowed.\ntraffic.\n"
                },
                "portRange": {
                    "type": "string",
                    "description": "The ports on which traffic will be allowed\nspecified as a string containing a single port, a range (e.g. \"8000-9000\"),\nor \"1-65535\" to open all ports for a protocol. Required for when protocol is\n\u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`udp`\" pulumi-lang-dotnet=\"`Udp`\" pulumi-lang-go=\"`udp`\" pulumi-lang-python=\"`udp`\" pulumi-lang-yaml=\"`udp`\" pulumi-lang-java=\"`udp`\"\u003e`udp`\u003c/span\u003e.\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "The type of traffic to be allowed.\nThis may be one of \"tcp\", \"udp\", or \"icmp\".\n"
                }
            },
            "type": "object",
            "required": [
                "protocol"
            ]
        },
        "digitalocean:index/getFirewallPendingChange:getFirewallPendingChange": {
            "properties": {
                "dropletId": {
                    "type": "integer"
                },
                "removing": {
                    "type": "boolean"
                },
                "status": {
                    "type": "string",
                    "description": "A status string indicating the current state of the Firewall.\nThis can be \"waiting\", \"succeeded\", or \"failed\".\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentAgentGuardrail:getGenaiAgentAgentGuardrail": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "Agent UUID for the Guardrail\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Guardrail\n"
                },
                "defaultResponse": {
                    "type": "string",
                    "description": "Default response for the Guardrail\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Guardrail\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                },
                "isAttached": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is attached\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is default\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of Guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of the Guardrail\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Guardrail\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Guardrail\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "isAttached",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentAnthropicApiKey:getGenaiAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentApiKey:getGenaiAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentApiKeyInfo:getGenaiAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentChatbot:getGenaiAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentChatbotIdentifier:getGenaiAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string",
                    "description": "Chatbot ID\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentChildAgent:getGenaiAgentChildAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentChildAgentAnthropicApiKey:getGenaiAgentChildAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentChildAgentApiKeyInfo:getGenaiAgentChildAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentChildAgentApiKey:getGenaiAgentChildAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentChildAgentChatbotIdentifier:getGenaiAgentChildAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentChildAgentChatbot:getGenaiAgentChildAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentChildAgentDeployment:getGenaiAgentChildAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentChildAgentAnthropicApiKey:getGenaiAgentChildAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentChildAgentApiKey:getGenaiAgentChildAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentChildAgentApiKeyInfo:getGenaiAgentChildAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentChildAgentChatbot:getGenaiAgentChildAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentChildAgentChatbotIdentifier:getGenaiAgentChildAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentChildAgentDeployment:getGenaiAgentChildAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentDeployment:getGenaiAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentFunction:getGenaiAgentFunction": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Function\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Function\n"
                },
                "faasname": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "faasnamespace": {
                    "type": "string",
                    "description": "Namespace of function\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID for the Function\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentKnowledgeBase:getGenaiAgentKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGenaiAgentKnowledgeBaseLastIndexingJob:getGenaiAgentKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentKnowledgeBaseLastIndexingJob:getGenaiAgentKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentModel:getGenaiAgentModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentModelAgreement:getGenaiAgentModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentModelVersion:getGenaiAgentModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentModelAgreement:getGenaiAgentModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentModelVersion:getGenaiAgentModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentOpenAiApiKey:getGenaiAgentOpenAiApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "OpenAI API Key\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentParentAgent:getGenaiAgentParentAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentParentAgentAnthropicApiKey:getGenaiAgentParentAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentParentAgentApiKeyInfo:getGenaiAgentParentAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentParentAgentApiKey:getGenaiAgentParentAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentParentAgentChatbotIdentifier:getGenaiAgentParentAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentParentAgentChatbot:getGenaiAgentParentAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentParentAgentDeployment:getGenaiAgentParentAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentParentAgentAnthropicApiKey:getGenaiAgentParentAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentParentAgentApiKey:getGenaiAgentParentAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentParentAgentApiKeyInfo:getGenaiAgentParentAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentParentAgentChatbot:getGenaiAgentParentAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentParentAgentChatbotIdentifier:getGenaiAgentParentAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentParentAgentDeployment:getGenaiAgentParentAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentTemplate:getGenaiAgentTemplate": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Template\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Template\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentTemplateKnowledgeBase:getGenaiAgentTemplateKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentTemplateModel:getGenaiAgentTemplateModel"
                    },
                    "description": "Model of the Agent Template\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent Template\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent Template\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "uuid of the Agent Template\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentTemplateKnowledgeBase:getGenaiAgentTemplateKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGenaiAgentTemplateKnowledgeBaseLastIndexingJob:getGenaiAgentTemplateKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentTemplateKnowledgeBaseLastIndexingJob:getGenaiAgentTemplateKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentTemplateModel:getGenaiAgentTemplateModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentTemplateModelAgreement:getGenaiAgentTemplateModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentTemplateModelVersion:getGenaiAgentTemplateModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentTemplateModelAgreement:getGenaiAgentTemplateModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentTemplateModelVersion:getGenaiAgentTemplateModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentVersionsAgentVersion:getGenaiAgentVersionsAgentVersion": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "ID of the Agent to retrieve versions for\n"
                },
                "attachedChildAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsAgentVersionAttachedChildAgent:getGenaiAgentVersionsAgentVersionAttachedChildAgent"
                    },
                    "description": "List of child agents attached to this version\n"
                },
                "attachedFunctions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsAgentVersionAttachedFunction:getGenaiAgentVersionsAgentVersionAttachedFunction"
                    },
                    "description": "List of functions attached to this version\n"
                },
                "attachedGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsAgentVersionAttachedGuardrail:getGenaiAgentVersionsAgentVersionAttachedGuardrail"
                    },
                    "description": "List of guardrails attached to this version\n"
                },
                "attachedKnowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsAgentVersionAttachedKnowledgeBase:getGenaiAgentVersionsAgentVersionAttachedKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases agent versions\n"
                },
                "canRollback": {
                    "type": "boolean",
                    "description": "Indicates if the version can be rolled back\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent Version was created\n"
                },
                "createdByEmail": {
                    "type": "string",
                    "description": "Email of the user who created this version\n"
                },
                "currentlyApplied": {
                    "type": "boolean",
                    "description": "Indicates if this version is currently applied configuration\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Version\n"
                },
                "id": {
                    "type": "string",
                    "description": "Id of the Agent Version\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent Version\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Version\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed for the Agent\n"
                },
                "modelName": {
                    "type": "string",
                    "description": "Name of model associated to the agent version\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "provideCitations": {
                    "type": "boolean",
                    "description": "Indicates if the should provide in-response citations\n"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used. \n- RETRIEVAL_METHOD_UNKNOWN: The retrieval method is unknown\n- RETRIEVAL_METHOD_REWRITE: The retrieval method is rewrite\n- RETRIEVAL_METHOD_STEP_BACK: The retrieval method is step back\n- RETRIEVAL_METHOD_SUB_QUERIES: The retrieval method is sub queries\n- RETRIEVAL_METHOD_NONE: The retrieval method is none.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Temperature setting for the Agent Version\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter for the Agent Version\n"
                },
                "triggerAction": {
                    "type": "string",
                    "description": "Trigger action for the Agent Version\n"
                },
                "versionHash": {
                    "type": "string",
                    "description": "Hash of the Agent Version\n"
                }
            },
            "type": "object",
            "required": [
                "agentUuid",
                "attachedChildAgents",
                "attachedFunctions",
                "attachedGuardrails",
                "attachedKnowledgeBases",
                "canRollback",
                "createdAt",
                "createdByEmail",
                "currentlyApplied",
                "description",
                "id",
                "instruction",
                "k",
                "maxTokens",
                "modelName",
                "name",
                "provideCitations",
                "retrievalMethod",
                "tags",
                "temperature",
                "topP",
                "triggerAction",
                "versionHash"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentVersionsAgentVersionAttachedChildAgent:getGenaiAgentVersionsAgentVersionAttachedChildAgent": {
            "properties": {
                "agentName": {
                    "type": "string",
                    "description": "Name of the child agent\n"
                },
                "childAgentUuid": {
                    "type": "string",
                    "description": "Child agent unique identifier\n"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case\n"
                },
                "isDeleted": {
                    "type": "boolean",
                    "description": "Child agent is deleted\n"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name\n"
                }
            },
            "type": "object",
            "required": [
                "agentName",
                "childAgentUuid",
                "ifCase",
                "isDeleted",
                "routeName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentVersionsAgentVersionAttachedFunction:getGenaiAgentVersionsAgentVersionAttachedFunction": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the function\n"
                },
                "faasName": {
                    "type": "string",
                    "description": "FaaS name of the function\n"
                },
                "faasNamespace": {
                    "type": "string",
                    "description": "FaaS namespace of the function\n"
                },
                "isDeleted": {
                    "type": "boolean",
                    "description": "Function is deleted\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the function\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "faasName",
                "faasNamespace",
                "isDeleted",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentVersionsAgentVersionAttachedGuardrail:getGenaiAgentVersionsAgentVersionAttachedGuardrail": {
            "properties": {
                "isDeleted": {
                    "type": "boolean",
                    "description": "Whether the guardrail is deleted\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Guardrail priority\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "required": [
                "isDeleted",
                "name",
                "priority",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentVersionsAgentVersionAttachedKnowledgeBase:getGenaiAgentVersionsAgentVersionAttachedKnowledgeBase": {
            "properties": {
                "isDeleted": {
                    "type": "boolean",
                    "description": "Whether the knowledge base is deleted\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the knowledge base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Knowledge base UUID\n"
                }
            },
            "type": "object",
            "required": [
                "isDeleted",
                "name",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentVersionsFilter:getGenaiAgentVersionsFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGenaiAgentVersionsSort:getGenaiAgentVersionsSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGenaiAgentsAgent:getGenaiAgentsAgent": {
            "properties": {
                "agentGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentAgentGuardrail:getGenaiAgentsAgentAgentGuardrail"
                    },
                    "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent\n"
                },
                "agentId": {
                    "type": "string",
                    "description": "ID of the Agent to retrieve\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentAnthropicApiKey:getGenaiAgentsAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentApiKeyInfo:getGenaiAgentsAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentApiKey:getGenaiAgentsAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChatbotIdentifier:getGenaiAgentsAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChatbot:getGenaiAgentsAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChildAgent:getGenaiAgentsAgentChildAgent"
                    },
                    "description": "List of child agents\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was created\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentDeployment:getGenaiAgentsAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentFunction:getGenaiAgentsAgentFunction"
                    },
                    "description": "List of API Key Infos\n"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case condition\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentKnowledgeBase:getGenaiAgentsAgentKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentModel:getGenaiAgentsAgentModel"
                    },
                    "description": "Model of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "openAiApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentOpenAiApiKey:getGenaiAgentsAgentOpenAiApiKey"
                    },
                    "description": "OpenAI API Key information\n"
                },
                "parentAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentParentAgent:getGenaiAgentsAgentParentAgent"
                    },
                    "description": "List of parent agents\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used\n"
                },
                "routeCreatedAt": {
                    "type": "string",
                    "description": "Timestamp when the route was created\n"
                },
                "routeCreatedBy": {
                    "type": "string",
                    "description": "User who created the route\n"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name\n"
                },
                "routeUuid": {
                    "type": "string",
                    "description": "Route UUID\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentTemplate:getGenaiAgentsAgentTemplate"
                    },
                    "description": "Agent Template\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was updated\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL for the Agent\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID linked with the Agent\n"
                }
            },
            "type": "object",
            "required": [
                "agentGuardrails",
                "agentId",
                "anthropicApiKeys",
                "apiKeyInfos",
                "apiKeys",
                "chatbots",
                "chatbotIdentifiers",
                "childAgents",
                "createdAt",
                "deployments",
                "description",
                "functions",
                "ifCase",
                "instruction",
                "k",
                "knowledgeBases",
                "maxTokens",
                "models",
                "modelUuid",
                "name",
                "openAiApiKeys",
                "parentAgents",
                "projectId",
                "region",
                "retrievalMethod",
                "routeCreatedAt",
                "routeCreatedBy",
                "routeName",
                "routeUuid",
                "tags",
                "temperature",
                "templates",
                "topP",
                "updatedAt",
                "url",
                "userId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentAgentGuardrail:getGenaiAgentsAgentAgentGuardrail": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "Agent UUID for the Guardrail\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Guardrail\n"
                },
                "defaultResponse": {
                    "type": "string",
                    "description": "Default response for the Guardrail\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Guardrail\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                },
                "isAttached": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is attached\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is default\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of Guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of the Guardrail\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Guardrail\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Guardrail\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "isAttached",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentAnthropicApiKey:getGenaiAgentsAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentApiKey:getGenaiAgentsAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentApiKeyInfo:getGenaiAgentsAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentChatbot:getGenaiAgentsAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentChatbotIdentifier:getGenaiAgentsAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string",
                    "description": "Chatbot ID\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentChildAgent:getGenaiAgentsAgentChildAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChildAgentAnthropicApiKey:getGenaiAgentsAgentChildAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChildAgentApiKeyInfo:getGenaiAgentsAgentChildAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChildAgentApiKey:getGenaiAgentsAgentChildAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChildAgentChatbotIdentifier:getGenaiAgentsAgentChildAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChildAgentChatbot:getGenaiAgentsAgentChildAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentChildAgentDeployment:getGenaiAgentsAgentChildAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentChildAgentAnthropicApiKey:getGenaiAgentsAgentChildAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentChildAgentApiKey:getGenaiAgentsAgentChildAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentChildAgentApiKeyInfo:getGenaiAgentsAgentChildAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentChildAgentChatbot:getGenaiAgentsAgentChildAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentChildAgentChatbotIdentifier:getGenaiAgentsAgentChildAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentChildAgentDeployment:getGenaiAgentsAgentChildAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentDeployment:getGenaiAgentsAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentFunction:getGenaiAgentsAgentFunction": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Function\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Function\n"
                },
                "faasname": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "faasnamespace": {
                    "type": "string",
                    "description": "Namespace of function\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID for the Function\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentKnowledgeBase:getGenaiAgentsAgentKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentKnowledgeBaseLastIndexingJob:getGenaiAgentsAgentKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentKnowledgeBaseLastIndexingJob:getGenaiAgentsAgentKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentModel:getGenaiAgentsAgentModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentModelAgreement:getGenaiAgentsAgentModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentModelVersion:getGenaiAgentsAgentModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentModelAgreement:getGenaiAgentsAgentModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentModelVersion:getGenaiAgentsAgentModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentOpenAiApiKey:getGenaiAgentsAgentOpenAiApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "OpenAI API Key\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentParentAgent:getGenaiAgentsAgentParentAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentParentAgentAnthropicApiKey:getGenaiAgentsAgentParentAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentParentAgentApiKeyInfo:getGenaiAgentsAgentParentAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentParentAgentApiKey:getGenaiAgentsAgentParentAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentParentAgentChatbotIdentifier:getGenaiAgentsAgentParentAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentParentAgentChatbot:getGenaiAgentsAgentParentAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentParentAgentDeployment:getGenaiAgentsAgentParentAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentParentAgentAnthropicApiKey:getGenaiAgentsAgentParentAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentParentAgentApiKey:getGenaiAgentsAgentParentAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentParentAgentApiKeyInfo:getGenaiAgentsAgentParentAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentParentAgentChatbot:getGenaiAgentsAgentParentAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentParentAgentChatbotIdentifier:getGenaiAgentsAgentParentAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentParentAgentDeployment:getGenaiAgentsAgentParentAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentTemplate:getGenaiAgentsAgentTemplate": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Template\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Template\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentTemplateKnowledgeBase:getGenaiAgentsAgentTemplateKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentTemplateModel:getGenaiAgentsAgentTemplateModel"
                    },
                    "description": "Model of the Agent Template\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent Template\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent Template\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "uuid of the Agent Template\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentTemplateKnowledgeBase:getGenaiAgentsAgentTemplateKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentTemplateKnowledgeBaseLastIndexingJob:getGenaiAgentsAgentTemplateKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentTemplateKnowledgeBaseLastIndexingJob:getGenaiAgentsAgentTemplateKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentTemplateModel:getGenaiAgentsAgentTemplateModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentTemplateModelAgreement:getGenaiAgentsAgentTemplateModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsAgentTemplateModelVersion:getGenaiAgentsAgentTemplateModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsAgentTemplateModelAgreement:getGenaiAgentsAgentTemplateModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsAgentTemplateModelVersion:getGenaiAgentsAgentTemplateModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgent:getGenaiAgentsByOpenaiApiKeyAgent": {
            "properties": {
                "agentGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentAgentGuardrail:getGenaiAgentsByOpenaiApiKeyAgentAgentGuardrail"
                    },
                    "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent\n"
                },
                "agentId": {
                    "type": "string",
                    "description": "ID of the Agent to retrieve\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentAnthropicApiKey:getGenaiAgentsByOpenaiApiKeyAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentApiKeyInfo:getGenaiAgentsByOpenaiApiKeyAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentApiKey:getGenaiAgentsByOpenaiApiKeyAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChatbotIdentifier:getGenaiAgentsByOpenaiApiKeyAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChatbot:getGenaiAgentsByOpenaiApiKeyAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgent:getGenaiAgentsByOpenaiApiKeyAgentChildAgent"
                    },
                    "description": "List of child agents\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was created\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentDeployment:getGenaiAgentsByOpenaiApiKeyAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentFunction:getGenaiAgentsByOpenaiApiKeyAgentFunction"
                    },
                    "description": "List of API Key Infos\n"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case condition\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentKnowledgeBase:getGenaiAgentsByOpenaiApiKeyAgentKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentModel:getGenaiAgentsByOpenaiApiKeyAgentModel"
                    },
                    "description": "Model of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "openAiApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentOpenAiApiKey:getGenaiAgentsByOpenaiApiKeyAgentOpenAiApiKey"
                    },
                    "description": "OpenAI API Key information\n"
                },
                "parentAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgent:getGenaiAgentsByOpenaiApiKeyAgentParentAgent"
                    },
                    "description": "List of parent agents\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used\n"
                },
                "routeCreatedAt": {
                    "type": "string",
                    "description": "Timestamp when the route was created\n"
                },
                "routeCreatedBy": {
                    "type": "string",
                    "description": "User who created the route\n"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name\n"
                },
                "routeUuid": {
                    "type": "string",
                    "description": "Route UUID\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplate:getGenaiAgentsByOpenaiApiKeyAgentTemplate"
                    },
                    "description": "Agent Template\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was updated\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL for the Agent\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID linked with the Agent\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "childAgents",
                "createdAt",
                "instruction",
                "models",
                "modelUuid",
                "name",
                "parentAgents",
                "projectId",
                "region",
                "routeCreatedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentAgentGuardrail:getGenaiAgentsByOpenaiApiKeyAgentAgentGuardrail": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "Agent UUID for the Guardrail\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Guardrail\n"
                },
                "defaultResponse": {
                    "type": "string",
                    "description": "Default response for the Guardrail\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Guardrail\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                },
                "isAttached": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is attached\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is default\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of Guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of the Guardrail\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Guardrail\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Guardrail\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "isAttached",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentAnthropicApiKey:getGenaiAgentsByOpenaiApiKeyAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentApiKey:getGenaiAgentsByOpenaiApiKeyAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentApiKeyInfo:getGenaiAgentsByOpenaiApiKeyAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChatbot:getGenaiAgentsByOpenaiApiKeyAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChatbotIdentifier:getGenaiAgentsByOpenaiApiKeyAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string",
                    "description": "Chatbot ID\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgent:getGenaiAgentsByOpenaiApiKeyAgentChildAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentAnthropicApiKey:getGenaiAgentsByOpenaiApiKeyAgentChildAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentApiKeyInfo:getGenaiAgentsByOpenaiApiKeyAgentChildAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentApiKey:getGenaiAgentsByOpenaiApiKeyAgentChildAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentChatbotIdentifier:getGenaiAgentsByOpenaiApiKeyAgentChildAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentChatbot:getGenaiAgentsByOpenaiApiKeyAgentChildAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentDeployment:getGenaiAgentsByOpenaiApiKeyAgentChildAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentAnthropicApiKey:getGenaiAgentsByOpenaiApiKeyAgentChildAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentApiKey:getGenaiAgentsByOpenaiApiKeyAgentChildAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentApiKeyInfo:getGenaiAgentsByOpenaiApiKeyAgentChildAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentChatbot:getGenaiAgentsByOpenaiApiKeyAgentChildAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentChatbotIdentifier:getGenaiAgentsByOpenaiApiKeyAgentChildAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentChildAgentDeployment:getGenaiAgentsByOpenaiApiKeyAgentChildAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentDeployment:getGenaiAgentsByOpenaiApiKeyAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentFunction:getGenaiAgentsByOpenaiApiKeyAgentFunction": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Function\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Function\n"
                },
                "faasname": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "faasnamespace": {
                    "type": "string",
                    "description": "Namespace of function\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID for the Function\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentKnowledgeBase:getGenaiAgentsByOpenaiApiKeyAgentKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentKnowledgeBaseLastIndexingJob:getGenaiAgentsByOpenaiApiKeyAgentKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentKnowledgeBaseLastIndexingJob:getGenaiAgentsByOpenaiApiKeyAgentKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentModel:getGenaiAgentsByOpenaiApiKeyAgentModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentModelAgreement:getGenaiAgentsByOpenaiApiKeyAgentModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentModelVersion:getGenaiAgentsByOpenaiApiKeyAgentModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentModelAgreement:getGenaiAgentsByOpenaiApiKeyAgentModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentModelVersion:getGenaiAgentsByOpenaiApiKeyAgentModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentOpenAiApiKey:getGenaiAgentsByOpenaiApiKeyAgentOpenAiApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "OpenAI API Key\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgent:getGenaiAgentsByOpenaiApiKeyAgentParentAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentAnthropicApiKey:getGenaiAgentsByOpenaiApiKeyAgentParentAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentApiKeyInfo:getGenaiAgentsByOpenaiApiKeyAgentParentAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentApiKey:getGenaiAgentsByOpenaiApiKeyAgentParentAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentChatbotIdentifier:getGenaiAgentsByOpenaiApiKeyAgentParentAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentChatbot:getGenaiAgentsByOpenaiApiKeyAgentParentAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentDeployment:getGenaiAgentsByOpenaiApiKeyAgentParentAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentAnthropicApiKey:getGenaiAgentsByOpenaiApiKeyAgentParentAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentApiKey:getGenaiAgentsByOpenaiApiKeyAgentParentAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentApiKeyInfo:getGenaiAgentsByOpenaiApiKeyAgentParentAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentChatbot:getGenaiAgentsByOpenaiApiKeyAgentParentAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentChatbotIdentifier:getGenaiAgentsByOpenaiApiKeyAgentParentAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentParentAgentDeployment:getGenaiAgentsByOpenaiApiKeyAgentParentAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplate:getGenaiAgentsByOpenaiApiKeyAgentTemplate": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Template\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Template\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBase:getGenaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateModel:getGenaiAgentsByOpenaiApiKeyAgentTemplateModel"
                    },
                    "description": "Model of the Agent Template\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent Template\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent Template\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "uuid of the Agent Template\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBase:getGenaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBaseLastIndexingJob:getGenaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBaseLastIndexingJob:getGenaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateModel:getGenaiAgentsByOpenaiApiKeyAgentTemplateModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateModelAgreement:getGenaiAgentsByOpenaiApiKeyAgentTemplateModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateModelVersion:getGenaiAgentsByOpenaiApiKeyAgentTemplateModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateModelAgreement:getGenaiAgentsByOpenaiApiKeyAgentTemplateModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgentTemplateModelVersion:getGenaiAgentsByOpenaiApiKeyAgentTemplateModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiAgentsFilter:getGenaiAgentsFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGenaiAgentsSort:getGenaiAgentsSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGenaiIndexingJobDataSourcesIndexedDataSource:getGenaiIndexingJobDataSourcesIndexedDataSource": {
            "properties": {
                "completedAt": {
                    "type": "string",
                    "description": "Timestamp when data source completed indexing\n"
                },
                "dataSourceUuid": {
                    "type": "string",
                    "description": "UUID of the indexed data source\n"
                },
                "errorDetails": {
                    "type": "string",
                    "description": "Detailed error description\n"
                },
                "errorMsg": {
                    "type": "string",
                    "description": "Error message if indexing failed\n"
                },
                "failedItemCount": {
                    "type": "string",
                    "description": "Total count of items that have failed\n"
                },
                "indexedFileCount": {
                    "type": "string",
                    "description": "Total count of files that have been indexed\n"
                },
                "indexedItemCount": {
                    "type": "string",
                    "description": "Total count of items that have been indexed\n"
                },
                "removedItemCount": {
                    "type": "string",
                    "description": "Total count of items that have been removed\n"
                },
                "skippedItemCount": {
                    "type": "string",
                    "description": "Total count of items that have been skipped\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when data source started indexing\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the indexed data source\n"
                },
                "totalBytes": {
                    "type": "string",
                    "description": "Total size of files in data source in bytes\n"
                },
                "totalBytesIndexed": {
                    "type": "string",
                    "description": "Total size of indexed files in bytes\n"
                },
                "totalFileCount": {
                    "type": "string",
                    "description": "Total file count in the data source\n"
                }
            },
            "type": "object",
            "required": [
                "completedAt",
                "dataSourceUuid",
                "errorDetails",
                "errorMsg",
                "failedItemCount",
                "indexedFileCount",
                "indexedItemCount",
                "removedItemCount",
                "skippedItemCount",
                "startedAt",
                "status",
                "totalBytes",
                "totalBytesIndexed",
                "totalFileCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasource:getGenaiKnowledgeBaseDataSourcesDatasource": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "fileUploadDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasourceFileUploadDataSource:getGenaiKnowledgeBaseDataSourcesDatasourceFileUploadDataSource"
                    },
                    "description": "File upload data source configuration\n"
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasourceLastIndexingJob:getGenaiKnowledgeBaseDataSourcesDatasourceLastIndexingJob"
                    },
                    "description": "Last indexing job for the data source\n"
                },
                "spacesDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasourceSpacesDataSource:getGenaiKnowledgeBaseDataSourcesDatasourceSpacesDataSource"
                    },
                    "description": "Spaces data source configuration\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                },
                "webCrawlerDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasourceWebCrawlerDataSource:getGenaiKnowledgeBaseDataSourcesDatasourceWebCrawlerDataSource"
                    },
                    "description": "Web crawler data source configuration\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasourceFileUploadDataSource:getGenaiKnowledgeBaseDataSourcesDatasourceFileUploadDataSource": {
            "properties": {
                "originalFileName": {
                    "type": "string",
                    "description": "The original name of the uploaded file\n"
                },
                "sizeInBytes": {
                    "type": "string",
                    "description": "The size of the file in bytes\n"
                },
                "storedObjectKey": {
                    "type": "string",
                    "description": "The stored object key for the file\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasourceLastIndexingJob:getGenaiKnowledgeBaseDataSourcesDatasourceLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasourceSpacesDataSource:getGenaiKnowledgeBaseDataSourcesDatasourceSpacesDataSource": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the Spaces bucket\n"
                },
                "itemPath": {
                    "type": "string",
                    "description": "The path to the item in the bucket\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region of the Spaces bucket\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasourceWebCrawlerDataSource:getGenaiKnowledgeBaseDataSourcesDatasourceWebCrawlerDataSource": {
            "properties": {
                "baseUrl": {
                    "type": "string",
                    "description": "The base URL to crawl\n"
                },
                "crawlingOption": {
                    "type": "string",
                    "description": "Options for specifying how URLs found on pages should be handled. \n- UNKNOWN: Default unknown value\n- SCOPED: Only include the base URL.\n- PATH: Crawl the base URL and linked pages within the URL path.\n- DOMAIN: Crawl the base URL and linked pages within the same domain.\n- SUBDOMAINS: Crawl the base URL and linked pages for any subdomain.\n"
                },
                "embedMedia": {
                    "type": "boolean",
                    "description": "Whether to embed media content\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiKnowledgeBaseIndexingJobsJob:getGenaiKnowledgeBaseIndexingJobsJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of datasources indexed completed\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of data source UUIDs\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Finish timestamp\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "Knowledge base UUID\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Current phase of the batch job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Start timestamp\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the indexing job\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources being indexed\n"
                },
                "totalItemsFailed": {
                    "type": "string",
                    "description": "Total items failed\n"
                },
                "totalItemsIndexed": {
                    "type": "string",
                    "description": "Total items indexed\n"
                },
                "totalItemsSkipped": {
                    "type": "string",
                    "description": "Total items skipped\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Last update timestamp\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Unique identifier of the indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "completedDatasources",
                "createdAt",
                "dataSourceUuids",
                "finishedAt",
                "knowledgeBaseUuid",
                "phase",
                "startedAt",
                "status",
                "tokens",
                "totalDatasources",
                "totalItemsFailed",
                "totalItemsIndexed",
                "totalItemsSkipped",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiKnowledgeBaseIndexingJobsMeta:getGenaiKnowledgeBaseIndexingJobsMeta": {
            "properties": {
                "page": {
                    "type": "integer",
                    "description": "Current page number\n"
                },
                "pages": {
                    "type": "integer",
                    "description": "Total number of pages\n"
                },
                "total": {
                    "type": "integer",
                    "description": "Total number of items\n"
                }
            },
            "type": "object",
            "required": [
                "page",
                "pages",
                "total"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiKnowledgeBaseLastIndexingJob:getGenaiKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiKnowledgeBasesFilter:getGenaiKnowledgeBasesFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGenaiKnowledgeBasesKnowledgeBase:getGenaiKnowledgeBasesKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBasesKnowledgeBaseLastIndexingJob:getGenaiKnowledgeBasesKnowledgeBaseLastIndexingJob"
                    },
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "databaseId",
                "embeddingModelUuid",
                "isPublic",
                "lastIndexingJobs",
                "name",
                "projectId",
                "region",
                "tags",
                "updatedAt",
                "userId",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiKnowledgeBasesKnowledgeBaseLastIndexingJob:getGenaiKnowledgeBasesKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiKnowledgeBasesSort:getGenaiKnowledgeBasesSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGenaiModelsFilter:getGenaiModelsFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGenaiModelsModel:getGenaiModelsModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiModelsModelAgreement:getGenaiModelsModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the Knowledge Base\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiModelsModelVersion:getGenaiModelsModelVersion"
                    },
                    "description": "List of Versions for the Model\n"
                }
            },
            "type": "object",
            "required": [
                "agreements",
                "createdAt",
                "id",
                "isFoundational",
                "name",
                "parentUuid",
                "updatedAt",
                "uploadComplete",
                "url",
                "uuid",
                "versions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiModelsModelAgreement:getGenaiModelsModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiModelsModelVersion:getGenaiModelsModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object",
            "required": [
                "major",
                "minor",
                "patch"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiModelsSort:getGenaiModelsSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGenaiOpenaiApiKeyModel:getGenaiOpenaiApiKeyModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeyModelAgreement:getGenaiOpenaiApiKeyModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeyModelVersion:getGenaiOpenaiApiKeyModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiOpenaiApiKeyModelAgreement:getGenaiOpenaiApiKeyModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiOpenaiApiKeyModelVersion:getGenaiOpenaiApiKeyModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiOpenaiApiKeysFilter:getGenaiOpenaiApiKeysFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGenaiOpenaiApiKeysOpenaiApiKey:getGenaiOpenaiApiKeysOpenaiApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeysOpenaiApiKeyModel:getGenaiOpenaiApiKeysOpenaiApiKeyModel"
                    },
                    "description": "List of models associated with the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "OpenAI API Key Uuid\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "createdBy",
                "deletedAt",
                "models",
                "name",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiOpenaiApiKeysOpenaiApiKeyModel:getGenaiOpenaiApiKeysOpenaiApiKeyModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeysOpenaiApiKeyModelAgreement:getGenaiOpenaiApiKeysOpenaiApiKeyModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeysOpenaiApiKeyModelVersion:getGenaiOpenaiApiKeysOpenaiApiKeyModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiOpenaiApiKeysOpenaiApiKeyModelAgreement:getGenaiOpenaiApiKeysOpenaiApiKeyModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiOpenaiApiKeysOpenaiApiKeyModelVersion:getGenaiOpenaiApiKeysOpenaiApiKeyModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGenaiOpenaiApiKeysSort:getGenaiOpenaiApiKeysSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGenaiRegionsFilter:getGenaiRegionsFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGenaiRegionsRegion:getGenaiRegionsRegion": {
            "properties": {
                "inferenceUrl": {
                    "type": "string",
                    "description": "Inference URL for the model\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the model is deployed\n"
                },
                "servesBatch": {
                    "type": "boolean",
                    "description": "Indicates if the model serves batch requests\n"
                },
                "servesInference": {
                    "type": "boolean",
                    "description": "Indicates if the model serves inference requests\n"
                },
                "streamInferenceUrl": {
                    "type": "string",
                    "description": "Streaming inference URL for the model\n"
                }
            },
            "type": "object",
            "required": [
                "inferenceUrl",
                "region",
                "servesBatch",
                "servesInference",
                "streamInferenceUrl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGenaiRegionsSort:getGenaiRegionsSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGradientaiAgentAgentGuardrail:getGradientaiAgentAgentGuardrail": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "Agent UUID for the Guardrail\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Guardrail\n"
                },
                "defaultResponse": {
                    "type": "string",
                    "description": "Default response for the Guardrail\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Guardrail\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                },
                "isAttached": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is attached\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is default\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of Guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of the Guardrail\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Guardrail\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Guardrail\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "isAttached",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentAnthropicApiKey:getGradientaiAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentApiKey:getGradientaiAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentApiKeyInfo:getGradientaiAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentChatbot:getGradientaiAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentChatbotIdentifier:getGradientaiAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string",
                    "description": "Chatbot ID\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentChildAgent:getGradientaiAgentChildAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentChildAgentAnthropicApiKey:getGradientaiAgentChildAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentChildAgentApiKeyInfo:getGradientaiAgentChildAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentChildAgentApiKey:getGradientaiAgentChildAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentChildAgentChatbotIdentifier:getGradientaiAgentChildAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentChildAgentChatbot:getGradientaiAgentChildAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentChildAgentDeployment:getGradientaiAgentChildAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentChildAgentAnthropicApiKey:getGradientaiAgentChildAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentChildAgentApiKey:getGradientaiAgentChildAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentChildAgentApiKeyInfo:getGradientaiAgentChildAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentChildAgentChatbot:getGradientaiAgentChildAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentChildAgentChatbotIdentifier:getGradientaiAgentChildAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentChildAgentDeployment:getGradientaiAgentChildAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentDeployment:getGradientaiAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentFunction:getGradientaiAgentFunction": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Function\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Function\n"
                },
                "faasname": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "faasnamespace": {
                    "type": "string",
                    "description": "Namespace of function\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID for the Function\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentKnowledgeBase:getGradientaiAgentKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGradientaiAgentKnowledgeBaseLastIndexingJob:getGradientaiAgentKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentKnowledgeBaseLastIndexingJob:getGradientaiAgentKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentModel:getGradientaiAgentModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentModelAgreement:getGradientaiAgentModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentModelVersion:getGradientaiAgentModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentModelAgreement:getGradientaiAgentModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentModelVersion:getGradientaiAgentModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentOpenAiApiKey:getGradientaiAgentOpenAiApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "OpenAI API Key\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentParentAgent:getGradientaiAgentParentAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentParentAgentAnthropicApiKey:getGradientaiAgentParentAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentParentAgentApiKeyInfo:getGradientaiAgentParentAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentParentAgentApiKey:getGradientaiAgentParentAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentParentAgentChatbotIdentifier:getGradientaiAgentParentAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentParentAgentChatbot:getGradientaiAgentParentAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentParentAgentDeployment:getGradientaiAgentParentAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentParentAgentAnthropicApiKey:getGradientaiAgentParentAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentParentAgentApiKey:getGradientaiAgentParentAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentParentAgentApiKeyInfo:getGradientaiAgentParentAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentParentAgentChatbot:getGradientaiAgentParentAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentParentAgentChatbotIdentifier:getGradientaiAgentParentAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentParentAgentDeployment:getGradientaiAgentParentAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentTemplate:getGradientaiAgentTemplate": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Template\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Template\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentTemplateKnowledgeBase:getGradientaiAgentTemplateKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentTemplateModel:getGradientaiAgentTemplateModel"
                    },
                    "description": "Model of the Agent Template\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent Template\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent Template\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "uuid of the Agent Template\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentTemplateKnowledgeBase:getGradientaiAgentTemplateKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGradientaiAgentTemplateKnowledgeBaseLastIndexingJob:getGradientaiAgentTemplateKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentTemplateKnowledgeBaseLastIndexingJob:getGradientaiAgentTemplateKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentTemplateModel:getGradientaiAgentTemplateModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentTemplateModelAgreement:getGradientaiAgentTemplateModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentTemplateModelVersion:getGradientaiAgentTemplateModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentTemplateModelAgreement:getGradientaiAgentTemplateModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentTemplateModelVersion:getGradientaiAgentTemplateModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentVersionsAgentVersion:getGradientaiAgentVersionsAgentVersion": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "ID of the Agent to retrieve versions for\n"
                },
                "attachedChildAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsAgentVersionAttachedChildAgent:getGradientaiAgentVersionsAgentVersionAttachedChildAgent"
                    },
                    "description": "List of child agents attached to this version\n"
                },
                "attachedFunctions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsAgentVersionAttachedFunction:getGradientaiAgentVersionsAgentVersionAttachedFunction"
                    },
                    "description": "List of functions attached to this version\n"
                },
                "attachedGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsAgentVersionAttachedGuardrail:getGradientaiAgentVersionsAgentVersionAttachedGuardrail"
                    },
                    "description": "List of guardrails attached to this version\n"
                },
                "attachedKnowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsAgentVersionAttachedKnowledgeBase:getGradientaiAgentVersionsAgentVersionAttachedKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases agent versions\n"
                },
                "canRollback": {
                    "type": "boolean",
                    "description": "Indicates if the version can be rolled back\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent Version was created\n"
                },
                "createdByEmail": {
                    "type": "string",
                    "description": "Email of the user who created this version\n"
                },
                "currentlyApplied": {
                    "type": "boolean",
                    "description": "Indicates if this version is currently applied configuration\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Version\n"
                },
                "id": {
                    "type": "string",
                    "description": "Id of the Agent Version\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent Version\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Version\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed for the Agent\n"
                },
                "modelName": {
                    "type": "string",
                    "description": "Name of model associated to the agent version\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "provideCitations": {
                    "type": "boolean",
                    "description": "Indicates if the should provide in-response citations\n"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used. \n- RETRIEVAL_METHOD_UNKNOWN: The retrieval method is unknown\n- RETRIEVAL_METHOD_REWRITE: The retrieval method is rewrite\n- RETRIEVAL_METHOD_STEP_BACK: The retrieval method is step back\n- RETRIEVAL_METHOD_SUB_QUERIES: The retrieval method is sub queries\n- RETRIEVAL_METHOD_NONE: The retrieval method is none.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Temperature setting for the Agent Version\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter for the Agent Version\n"
                },
                "triggerAction": {
                    "type": "string",
                    "description": "Trigger action for the Agent Version\n"
                },
                "versionHash": {
                    "type": "string",
                    "description": "Hash of the Agent Version\n"
                }
            },
            "type": "object",
            "required": [
                "agentUuid",
                "attachedChildAgents",
                "attachedFunctions",
                "attachedGuardrails",
                "attachedKnowledgeBases",
                "canRollback",
                "createdAt",
                "createdByEmail",
                "currentlyApplied",
                "description",
                "id",
                "instruction",
                "k",
                "maxTokens",
                "modelName",
                "name",
                "provideCitations",
                "retrievalMethod",
                "tags",
                "temperature",
                "topP",
                "triggerAction",
                "versionHash"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentVersionsAgentVersionAttachedChildAgent:getGradientaiAgentVersionsAgentVersionAttachedChildAgent": {
            "properties": {
                "agentName": {
                    "type": "string",
                    "description": "Name of the child agent\n"
                },
                "childAgentUuid": {
                    "type": "string",
                    "description": "Child agent unique identifier\n"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case\n"
                },
                "isDeleted": {
                    "type": "boolean",
                    "description": "Child agent is deleted\n"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name\n"
                }
            },
            "type": "object",
            "required": [
                "agentName",
                "childAgentUuid",
                "ifCase",
                "isDeleted",
                "routeName"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentVersionsAgentVersionAttachedFunction:getGradientaiAgentVersionsAgentVersionAttachedFunction": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the function\n"
                },
                "faasName": {
                    "type": "string",
                    "description": "FaaS name of the function\n"
                },
                "faasNamespace": {
                    "type": "string",
                    "description": "FaaS namespace of the function\n"
                },
                "isDeleted": {
                    "type": "boolean",
                    "description": "Function is deleted\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the function\n"
                }
            },
            "type": "object",
            "required": [
                "description",
                "faasName",
                "faasNamespace",
                "isDeleted",
                "name"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentVersionsAgentVersionAttachedGuardrail:getGradientaiAgentVersionsAgentVersionAttachedGuardrail": {
            "properties": {
                "isDeleted": {
                    "type": "boolean",
                    "description": "Whether the guardrail is deleted\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Guardrail priority\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "required": [
                "isDeleted",
                "name",
                "priority",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentVersionsAgentVersionAttachedKnowledgeBase:getGradientaiAgentVersionsAgentVersionAttachedKnowledgeBase": {
            "properties": {
                "isDeleted": {
                    "type": "boolean",
                    "description": "Whether the knowledge base is deleted\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the knowledge base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Knowledge base UUID\n"
                }
            },
            "type": "object",
            "required": [
                "isDeleted",
                "name",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentVersionsFilter:getGradientaiAgentVersionsFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGradientaiAgentVersionsSort:getGradientaiAgentVersionsSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGradientaiAgentsAgent:getGradientaiAgentsAgent": {
            "properties": {
                "agentGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentAgentGuardrail:getGradientaiAgentsAgentAgentGuardrail"
                    },
                    "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent\n"
                },
                "agentId": {
                    "type": "string",
                    "description": "ID of the Agent to retrieve\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentAnthropicApiKey:getGradientaiAgentsAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentApiKeyInfo:getGradientaiAgentsAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentApiKey:getGradientaiAgentsAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChatbotIdentifier:getGradientaiAgentsAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChatbot:getGradientaiAgentsAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChildAgent:getGradientaiAgentsAgentChildAgent"
                    },
                    "description": "List of child agents\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was created\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentDeployment:getGradientaiAgentsAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentFunction:getGradientaiAgentsAgentFunction"
                    },
                    "description": "List of API Key Infos\n"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case condition\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentKnowledgeBase:getGradientaiAgentsAgentKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentModel:getGradientaiAgentsAgentModel"
                    },
                    "description": "Model of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "openAiApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentOpenAiApiKey:getGradientaiAgentsAgentOpenAiApiKey"
                    },
                    "description": "OpenAI API Key information\n"
                },
                "parentAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentParentAgent:getGradientaiAgentsAgentParentAgent"
                    },
                    "description": "List of parent agents\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used\n"
                },
                "routeCreatedAt": {
                    "type": "string",
                    "description": "Timestamp when the route was created\n"
                },
                "routeCreatedBy": {
                    "type": "string",
                    "description": "User who created the route\n"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name\n"
                },
                "routeUuid": {
                    "type": "string",
                    "description": "Route UUID\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentTemplate:getGradientaiAgentsAgentTemplate"
                    },
                    "description": "Agent Template\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was updated\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL for the Agent\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID linked with the Agent\n"
                }
            },
            "type": "object",
            "required": [
                "agentGuardrails",
                "agentId",
                "anthropicApiKeys",
                "apiKeyInfos",
                "apiKeys",
                "chatbots",
                "chatbotIdentifiers",
                "childAgents",
                "createdAt",
                "deployments",
                "description",
                "functions",
                "ifCase",
                "instruction",
                "k",
                "knowledgeBases",
                "maxTokens",
                "models",
                "modelUuid",
                "name",
                "openAiApiKeys",
                "parentAgents",
                "projectId",
                "region",
                "retrievalMethod",
                "routeCreatedAt",
                "routeCreatedBy",
                "routeName",
                "routeUuid",
                "tags",
                "temperature",
                "templates",
                "topP",
                "updatedAt",
                "url",
                "userId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentAgentGuardrail:getGradientaiAgentsAgentAgentGuardrail": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "Agent UUID for the Guardrail\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Guardrail\n"
                },
                "defaultResponse": {
                    "type": "string",
                    "description": "Default response for the Guardrail\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Guardrail\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                },
                "isAttached": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is attached\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is default\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of Guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of the Guardrail\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Guardrail\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Guardrail\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "isAttached",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentAnthropicApiKey:getGradientaiAgentsAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentApiKey:getGradientaiAgentsAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentApiKeyInfo:getGradientaiAgentsAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentChatbot:getGradientaiAgentsAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentChatbotIdentifier:getGradientaiAgentsAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string",
                    "description": "Chatbot ID\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentChildAgent:getGradientaiAgentsAgentChildAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChildAgentAnthropicApiKey:getGradientaiAgentsAgentChildAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChildAgentApiKeyInfo:getGradientaiAgentsAgentChildAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChildAgentApiKey:getGradientaiAgentsAgentChildAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChildAgentChatbotIdentifier:getGradientaiAgentsAgentChildAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChildAgentChatbot:getGradientaiAgentsAgentChildAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentChildAgentDeployment:getGradientaiAgentsAgentChildAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentChildAgentAnthropicApiKey:getGradientaiAgentsAgentChildAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentChildAgentApiKey:getGradientaiAgentsAgentChildAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentChildAgentApiKeyInfo:getGradientaiAgentsAgentChildAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentChildAgentChatbot:getGradientaiAgentsAgentChildAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentChildAgentChatbotIdentifier:getGradientaiAgentsAgentChildAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentChildAgentDeployment:getGradientaiAgentsAgentChildAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentDeployment:getGradientaiAgentsAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentFunction:getGradientaiAgentsAgentFunction": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Function\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Function\n"
                },
                "faasname": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "faasnamespace": {
                    "type": "string",
                    "description": "Namespace of function\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID for the Function\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentKnowledgeBase:getGradientaiAgentsAgentKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentKnowledgeBaseLastIndexingJob:getGradientaiAgentsAgentKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentKnowledgeBaseLastIndexingJob:getGradientaiAgentsAgentKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentModel:getGradientaiAgentsAgentModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentModelAgreement:getGradientaiAgentsAgentModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentModelVersion:getGradientaiAgentsAgentModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentModelAgreement:getGradientaiAgentsAgentModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentModelVersion:getGradientaiAgentsAgentModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentOpenAiApiKey:getGradientaiAgentsAgentOpenAiApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "OpenAI API Key\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentParentAgent:getGradientaiAgentsAgentParentAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentParentAgentAnthropicApiKey:getGradientaiAgentsAgentParentAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentParentAgentApiKeyInfo:getGradientaiAgentsAgentParentAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentParentAgentApiKey:getGradientaiAgentsAgentParentAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentParentAgentChatbotIdentifier:getGradientaiAgentsAgentParentAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentParentAgentChatbot:getGradientaiAgentsAgentParentAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentParentAgentDeployment:getGradientaiAgentsAgentParentAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentParentAgentAnthropicApiKey:getGradientaiAgentsAgentParentAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentParentAgentApiKey:getGradientaiAgentsAgentParentAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentParentAgentApiKeyInfo:getGradientaiAgentsAgentParentAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentParentAgentChatbot:getGradientaiAgentsAgentParentAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentParentAgentChatbotIdentifier:getGradientaiAgentsAgentParentAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentParentAgentDeployment:getGradientaiAgentsAgentParentAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentTemplate:getGradientaiAgentsAgentTemplate": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Template\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Template\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentTemplateKnowledgeBase:getGradientaiAgentsAgentTemplateKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentTemplateModel:getGradientaiAgentsAgentTemplateModel"
                    },
                    "description": "Model of the Agent Template\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent Template\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent Template\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "uuid of the Agent Template\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentTemplateKnowledgeBase:getGradientaiAgentsAgentTemplateKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentTemplateKnowledgeBaseLastIndexingJob:getGradientaiAgentsAgentTemplateKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentTemplateKnowledgeBaseLastIndexingJob:getGradientaiAgentsAgentTemplateKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentTemplateModel:getGradientaiAgentsAgentTemplateModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentTemplateModelAgreement:getGradientaiAgentsAgentTemplateModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgentTemplateModelVersion:getGradientaiAgentsAgentTemplateModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsAgentTemplateModelAgreement:getGradientaiAgentsAgentTemplateModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsAgentTemplateModelVersion:getGradientaiAgentsAgentTemplateModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgent:getGradientaiAgentsByOpenaiApiKeyAgent": {
            "properties": {
                "agentGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentAgentGuardrail:getGradientaiAgentsByOpenaiApiKeyAgentAgentGuardrail"
                    },
                    "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent\n"
                },
                "agentId": {
                    "type": "string",
                    "description": "ID of the Agent to retrieve\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentAnthropicApiKey:getGradientaiAgentsByOpenaiApiKeyAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentApiKeyInfo:getGradientaiAgentsByOpenaiApiKeyAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentApiKey:getGradientaiAgentsByOpenaiApiKeyAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChatbotIdentifier:getGradientaiAgentsByOpenaiApiKeyAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChatbot:getGradientaiAgentsByOpenaiApiKeyAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgent:getGradientaiAgentsByOpenaiApiKeyAgentChildAgent"
                    },
                    "description": "List of child agents\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was created\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentDeployment:getGradientaiAgentsByOpenaiApiKeyAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentFunction:getGradientaiAgentsByOpenaiApiKeyAgentFunction"
                    },
                    "description": "List of API Key Infos\n"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case condition\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentKnowledgeBase:getGradientaiAgentsByOpenaiApiKeyAgentKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentModel:getGradientaiAgentsByOpenaiApiKeyAgentModel"
                    },
                    "description": "Model of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "openAiApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentOpenAiApiKey:getGradientaiAgentsByOpenaiApiKeyAgentOpenAiApiKey"
                    },
                    "description": "OpenAI API Key information\n"
                },
                "parentAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgent:getGradientaiAgentsByOpenaiApiKeyAgentParentAgent"
                    },
                    "description": "List of parent agents\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used\n"
                },
                "routeCreatedAt": {
                    "type": "string",
                    "description": "Timestamp when the route was created\n"
                },
                "routeCreatedBy": {
                    "type": "string",
                    "description": "User who created the route\n"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name\n"
                },
                "routeUuid": {
                    "type": "string",
                    "description": "Route UUID\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplate:getGradientaiAgentsByOpenaiApiKeyAgentTemplate"
                    },
                    "description": "Agent Template\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was updated\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL for the Agent\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID linked with the Agent\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "childAgents",
                "createdAt",
                "instruction",
                "models",
                "modelUuid",
                "name",
                "parentAgents",
                "projectId",
                "region",
                "routeCreatedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentAgentGuardrail:getGradientaiAgentsByOpenaiApiKeyAgentAgentGuardrail": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "Agent UUID for the Guardrail\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Guardrail\n"
                },
                "defaultResponse": {
                    "type": "string",
                    "description": "Default response for the Guardrail\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Guardrail\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                },
                "isAttached": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is attached\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "Indicates if the Guardrail is default\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of Guardrail\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "Priority of the Guardrail\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the Guardrail\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Guardrail\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Guardrail UUID\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "isAttached",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentAnthropicApiKey:getGradientaiAgentsByOpenaiApiKeyAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentApiKey:getGradientaiAgentsByOpenaiApiKeyAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentApiKeyInfo:getGradientaiAgentsByOpenaiApiKeyAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChatbot:getGradientaiAgentsByOpenaiApiKeyAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChatbotIdentifier:getGradientaiAgentsByOpenaiApiKeyAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string",
                    "description": "Chatbot ID\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgent:getGradientaiAgentsByOpenaiApiKeyAgentChildAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentAnthropicApiKey:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentApiKeyInfo:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentApiKey:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentChatbotIdentifier:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentChatbot:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentDeployment:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentAnthropicApiKey:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentApiKey:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentApiKeyInfo:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentChatbot:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentChatbotIdentifier:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentChildAgentDeployment:getGradientaiAgentsByOpenaiApiKeyAgentChildAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentDeployment:getGradientaiAgentsByOpenaiApiKeyAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentFunction:getGradientaiAgentsByOpenaiApiKeyAgentFunction": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Function\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Function\n"
                },
                "faasname": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "faasnamespace": {
                    "type": "string",
                    "description": "Namespace of function\n"
                },
                "guardrailUuid": {
                    "type": "string",
                    "description": "Guardrail UUID for the Function\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of function\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentKnowledgeBase:getGradientaiAgentsByOpenaiApiKeyAgentKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentKnowledgeBaseLastIndexingJob:getGradientaiAgentsByOpenaiApiKeyAgentKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentKnowledgeBaseLastIndexingJob:getGradientaiAgentsByOpenaiApiKeyAgentKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentModel:getGradientaiAgentsByOpenaiApiKeyAgentModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentModelAgreement:getGradientaiAgentsByOpenaiApiKeyAgentModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentModelVersion:getGradientaiAgentsByOpenaiApiKeyAgentModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentModelAgreement:getGradientaiAgentsByOpenaiApiKeyAgentModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentModelVersion:getGradientaiAgentsByOpenaiApiKeyAgentModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentOpenAiApiKey:getGradientaiAgentsByOpenaiApiKeyAgentOpenAiApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "OpenAI API Key\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgent:getGradientaiAgentsByOpenaiApiKeyAgentParentAgent": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "ID of the child agent\n"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentAnthropicApiKey:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information\n"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentApiKeyInfo:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos\n"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentApiKey:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentApiKey"
                    },
                    "description": "List of API Keys\n"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentChatbotIdentifier:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers\n"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentChatbot:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentChatbot"
                    },
                    "description": "ChatBot configuration\n"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentDeployment:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentDeployment"
                    },
                    "description": "List of API Key Infos\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed\n"
                }
            },
            "type": "object",
            "required": [
                "agentId",
                "instruction",
                "modelUuid",
                "name",
                "projectId",
                "region"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentAnthropicApiKey:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentAnthropicApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentApiKey:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentApiKeyInfo:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentApiKeyInfo": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "deletedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentChatbot:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentChatbot": {
            "properties": {
                "buttonBackgroundColor": {
                    "type": "string",
                    "description": "Background color for the chatbot button\n"
                },
                "logo": {
                    "type": "string",
                    "description": "Logo for the chatbot\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the chatbot\n"
                },
                "primaryColor": {
                    "type": "string",
                    "description": "Primary color for the chatbot\n"
                },
                "secondaryColor": {
                    "type": "string",
                    "description": "Secondary color for the chatbot\n"
                },
                "startingMessage": {
                    "type": "string",
                    "description": "Starting message for the chatbot\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentChatbotIdentifier:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentChatbotIdentifier": {
            "properties": {
                "chatbotId": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "chatbotId"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentParentAgentDeployment:getGradientaiAgentsByOpenaiApiKeyAgentParentAgentDeployment": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the Deployment\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent\n"
                },
                "url": {
                    "type": "string",
                    "description": "Url of the Deployment\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "API Key value\n"
                },
                "visibility": {
                    "type": "string",
                    "description": "Visibility of the Deployment\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplate:getGradientaiAgentsByOpenaiApiKeyAgentTemplate": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "description": {
                    "type": "string",
                    "description": "Description of the Agent Template\n"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent\n"
                },
                "k": {
                    "type": "integer",
                    "description": "K value for the Agent Template\n"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBase:getGradientaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases\n"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateModel:getGradientaiAgentsByOpenaiApiKeyAgentTemplateModel"
                    },
                    "description": "Model of the Agent Template\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent Template\n"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting\n"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the Agent Template\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "uuid of the Agent Template\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBase:getGradientaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJob": {
                    "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBaseLastIndexingJob:getGradientaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBaseLastIndexingJob",
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBaseLastIndexingJob:getGradientaiAgentsByOpenaiApiKeyAgentTemplateKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateModel:getGradientaiAgentsByOpenaiApiKeyAgentTemplateModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateModelAgreement:getGradientaiAgentsByOpenaiApiKeyAgentTemplateModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateModelVersion:getGradientaiAgentsByOpenaiApiKeyAgentTemplateModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateModelAgreement:getGradientaiAgentsByOpenaiApiKeyAgentTemplateModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgentTemplateModelVersion:getGradientaiAgentsByOpenaiApiKeyAgentTemplateModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiAgentsFilter:getGradientaiAgentsFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGradientaiAgentsSort:getGradientaiAgentsSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGradientaiIndexingJobDataSourcesIndexedDataSource:getGradientaiIndexingJobDataSourcesIndexedDataSource": {
            "properties": {
                "completedAt": {
                    "type": "string",
                    "description": "Timestamp when data source completed indexing\n"
                },
                "dataSourceUuid": {
                    "type": "string",
                    "description": "UUID of the indexed data source\n"
                },
                "errorDetails": {
                    "type": "string",
                    "description": "Detailed error description\n"
                },
                "errorMsg": {
                    "type": "string",
                    "description": "Error message if indexing failed\n"
                },
                "failedItemCount": {
                    "type": "string",
                    "description": "Total count of items that have failed\n"
                },
                "indexedFileCount": {
                    "type": "string",
                    "description": "Total count of files that have been indexed\n"
                },
                "indexedItemCount": {
                    "type": "string",
                    "description": "Total count of items that have been indexed\n"
                },
                "removedItemCount": {
                    "type": "string",
                    "description": "Total count of items that have been removed\n"
                },
                "skippedItemCount": {
                    "type": "string",
                    "description": "Total count of items that have been skipped\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when data source started indexing\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the indexed data source\n"
                },
                "totalBytes": {
                    "type": "string",
                    "description": "Total size of files in data source in bytes\n"
                },
                "totalBytesIndexed": {
                    "type": "string",
                    "description": "Total size of indexed files in bytes\n"
                },
                "totalFileCount": {
                    "type": "string",
                    "description": "Total file count in the data source\n"
                }
            },
            "type": "object",
            "required": [
                "completedAt",
                "dataSourceUuid",
                "errorDetails",
                "errorMsg",
                "failedItemCount",
                "indexedFileCount",
                "indexedItemCount",
                "removedItemCount",
                "skippedItemCount",
                "startedAt",
                "status",
                "totalBytes",
                "totalBytesIndexed",
                "totalFileCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasource:getGradientaiKnowledgeBaseDataSourcesDatasource": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "fileUploadDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasourceFileUploadDataSource:getGradientaiKnowledgeBaseDataSourcesDatasourceFileUploadDataSource"
                    },
                    "description": "File upload data source configuration\n"
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasourceLastIndexingJob:getGradientaiKnowledgeBaseDataSourcesDatasourceLastIndexingJob"
                    },
                    "description": "Last indexing job for the data source\n"
                },
                "spacesDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasourceSpacesDataSource:getGradientaiKnowledgeBaseDataSourcesDatasourceSpacesDataSource"
                    },
                    "description": "Spaces data source configuration\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                },
                "webCrawlerDataSources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasourceWebCrawlerDataSource:getGradientaiKnowledgeBaseDataSourcesDatasourceWebCrawlerDataSource"
                    },
                    "description": "Web crawler data source configuration\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasourceFileUploadDataSource:getGradientaiKnowledgeBaseDataSourcesDatasourceFileUploadDataSource": {
            "properties": {
                "originalFileName": {
                    "type": "string",
                    "description": "The original name of the uploaded file\n"
                },
                "sizeInBytes": {
                    "type": "string",
                    "description": "The size of the file in bytes\n"
                },
                "storedObjectKey": {
                    "type": "string",
                    "description": "The stored object key for the file\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasourceLastIndexingJob:getGradientaiKnowledgeBaseDataSourcesDatasourceLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasourceSpacesDataSource:getGradientaiKnowledgeBaseDataSourcesDatasourceSpacesDataSource": {
            "properties": {
                "bucketName": {
                    "type": "string",
                    "description": "The name of the Spaces bucket\n"
                },
                "itemPath": {
                    "type": "string",
                    "description": "The path to the item in the bucket\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region of the Spaces bucket\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasourceWebCrawlerDataSource:getGradientaiKnowledgeBaseDataSourcesDatasourceWebCrawlerDataSource": {
            "properties": {
                "baseUrl": {
                    "type": "string",
                    "description": "The base URL to crawl\n"
                },
                "crawlingOption": {
                    "type": "string",
                    "description": "Options for specifying how URLs found on pages should be handled. \n- UNKNOWN: Default unknown value\n- SCOPED: Only include the base URL.\n- PATH: Crawl the base URL and linked pages within the URL path.\n- DOMAIN: Crawl the base URL and linked pages within the same domain.\n- SUBDOMAINS: Crawl the base URL and linked pages for any subdomain.\n"
                },
                "embedMedia": {
                    "type": "boolean",
                    "description": "Whether to embed media content\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiKnowledgeBaseIndexingJobsJob:getGradientaiKnowledgeBaseIndexingJobsJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of datasources indexed completed\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Creation timestamp\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of data source UUIDs\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Finish timestamp\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "Knowledge base UUID\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Current phase of the batch job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Start timestamp\n"
                },
                "status": {
                    "type": "string",
                    "description": "Status of the indexing job\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources being indexed\n"
                },
                "totalItemsFailed": {
                    "type": "string",
                    "description": "Total items failed\n"
                },
                "totalItemsIndexed": {
                    "type": "string",
                    "description": "Total items indexed\n"
                },
                "totalItemsSkipped": {
                    "type": "string",
                    "description": "Total items skipped\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Last update timestamp\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "Unique identifier of the indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "completedDatasources",
                "createdAt",
                "dataSourceUuids",
                "finishedAt",
                "knowledgeBaseUuid",
                "phase",
                "startedAt",
                "status",
                "tokens",
                "totalDatasources",
                "totalItemsFailed",
                "totalItemsIndexed",
                "totalItemsSkipped",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBaseIndexingJobsMeta:getGradientaiKnowledgeBaseIndexingJobsMeta": {
            "properties": {
                "page": {
                    "type": "integer",
                    "description": "Current page number\n"
                },
                "pages": {
                    "type": "integer",
                    "description": "Total number of pages\n"
                },
                "total": {
                    "type": "integer",
                    "description": "Total number of items\n"
                }
            },
            "type": "object",
            "required": [
                "page",
                "pages",
                "total"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBaseLastIndexingJob:getGradientaiKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBasesFilter:getGradientaiKnowledgeBasesFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGradientaiKnowledgeBasesKnowledgeBase:getGradientaiKnowledgeBasesKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was added to the Agent\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "databaseId": {
                    "type": "string",
                    "description": "Database ID of the Knowledge Base\n"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "Embedding model UUID for the Knowledge Base\n"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates if the Knowledge Base is public\n"
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBasesKnowledgeBaseLastIndexingJob:getGradientaiKnowledgeBasesKnowledgeBaseLastIndexingJob"
                    },
                    "description": "Last indexing job for the Knowledge Base\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Knowledge Base\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region of the Knowledge Base\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of tags\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID of the Knowledge Base\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base\n"
                }
            },
            "type": "object",
            "required": [
                "addedToAgentAt",
                "createdAt",
                "databaseId",
                "embeddingModelUuid",
                "isPublic",
                "lastIndexingJobs",
                "name",
                "projectId",
                "region",
                "tags",
                "updatedAt",
                "userId",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBasesKnowledgeBaseLastIndexingJob:getGradientaiKnowledgeBasesKnowledgeBaseLastIndexingJob": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of completed datasources in the last indexing job\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the last indexing job\n"
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Datasource UUIDs for the last indexing job\n"
                },
                "finishedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job finished\n"
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID  of the Knowledge Base for the last indexing job\n"
                },
                "phase": {
                    "type": "string",
                    "description": "Phase of the last indexing job\n"
                },
                "startedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job started\n"
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed in the last indexing job\n"
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of datasources in the last indexing job\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the last indexing job updated\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID  of the last indexing job\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "finishedAt",
                "knowledgeBaseUuid",
                "startedAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBasesSort:getGradientaiKnowledgeBasesSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGradientaiModelsFilter:getGradientaiModelsFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGradientaiModelsModel:getGradientaiModelsModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiModelsModelAgreement:getGradientaiModelsModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "id": {
                    "type": "string",
                    "description": "ID of the Knowledge Base\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiModelsModelVersion:getGradientaiModelsModelVersion"
                    },
                    "description": "List of Versions for the Model\n"
                }
            },
            "type": "object",
            "required": [
                "agreements",
                "createdAt",
                "id",
                "isFoundational",
                "name",
                "parentUuid",
                "updatedAt",
                "uploadComplete",
                "url",
                "uuid",
                "versions"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiModelsModelAgreement:getGradientaiModelsModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiModelsModelVersion:getGradientaiModelsModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object",
            "required": [
                "major",
                "minor",
                "patch"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiModelsSort:getGradientaiModelsSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGradientaiOpenaiApiKeyModel:getGradientaiOpenaiApiKeyModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeyModelAgreement:getGradientaiOpenaiApiKeyModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeyModelVersion:getGradientaiOpenaiApiKeyModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiOpenaiApiKeyModelAgreement:getGradientaiOpenaiApiKeyModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiOpenaiApiKeyModelVersion:getGradientaiOpenaiApiKeyModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiOpenaiApiKeysFilter:getGradientaiOpenaiApiKeysFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGradientaiOpenaiApiKeysOpenaiApiKey:getGradientaiOpenaiApiKeysOpenaiApiKey": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the API Key was created\n"
                },
                "createdBy": {
                    "type": "string",
                    "description": "Created By user ID for the API Key\n"
                },
                "deletedAt": {
                    "type": "string",
                    "description": "Deleted At timestamp for the API Key\n"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeysOpenaiApiKeyModel:getGradientaiOpenaiApiKeysOpenaiApiKeyModel"
                    },
                    "description": "List of models associated with the API Key\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the API Key\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated At timestamp for the API Key\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "OpenAI API Key Uuid\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "createdBy",
                "deletedAt",
                "models",
                "name",
                "updatedAt",
                "uuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiOpenaiApiKeysOpenaiApiKeyModel:getGradientaiOpenaiApiKeysOpenaiApiKeyModel": {
            "properties": {
                "agreements": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeysOpenaiApiKeyModelAgreement:getGradientaiOpenaiApiKeysOpenaiApiKeyModelAgreement"
                    },
                    "description": "Agreement information for the model\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created At timestamp for the Knowledge Base\n"
                },
                "inferenceName": {
                    "type": "string",
                    "description": "Inference name of the model\n"
                },
                "inferenceVersion": {
                    "type": "string",
                    "description": "Infernce version of the model\n"
                },
                "isFoundational": {
                    "type": "boolean",
                    "description": "Indicates if the Model Base is foundational\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Knowledge Base\n"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "Parent UUID of the Model\n"
                },
                "provider": {
                    "type": "string",
                    "description": "Provider of the Model\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Knowledge Base was updated\n"
                },
                "uploadComplete": {
                    "type": "boolean",
                    "description": "Indicates if the Model upload is complete\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the Model\n"
                },
                "usecases": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Usecases for the Model\n"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeysOpenaiApiKeyModelVersion:getGradientaiOpenaiApiKeysOpenaiApiKeyModelVersion"
                    },
                    "description": "URL of the Model\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiOpenaiApiKeysOpenaiApiKeyModelAgreement:getGradientaiOpenaiApiKeysOpenaiApiKeyModelAgreement": {
            "properties": {
                "description": {
                    "type": "string",
                    "description": "Description of the agreement\n"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the agreement\n"
                },
                "url": {
                    "type": "string",
                    "description": "URL of the agreement\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "UUID of the agreement\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiOpenaiApiKeysOpenaiApiKeyModelVersion:getGradientaiOpenaiApiKeysOpenaiApiKeyModelVersion": {
            "properties": {
                "major": {
                    "type": "integer",
                    "description": "Major version of the model\n"
                },
                "minor": {
                    "type": "integer",
                    "description": "Minor version of the model\n"
                },
                "patch": {
                    "type": "integer",
                    "description": "Patch version of the model\n"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getGradientaiOpenaiApiKeysSort:getGradientaiOpenaiApiKeysSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getGradientaiRegionsFilter:getGradientaiRegionsFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getGradientaiRegionsRegion:getGradientaiRegionsRegion": {
            "properties": {
                "inferenceUrl": {
                    "type": "string",
                    "description": "Inference URL for the model\n"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the model is deployed\n"
                },
                "servesBatch": {
                    "type": "boolean",
                    "description": "Indicates if the model serves batch requests\n"
                },
                "servesInference": {
                    "type": "boolean",
                    "description": "Indicates if the model serves inference requests\n"
                },
                "streamInferenceUrl": {
                    "type": "string",
                    "description": "Streaming inference URL for the model\n"
                }
            },
            "type": "object",
            "required": [
                "inferenceUrl",
                "region",
                "servesBatch",
                "servesInference",
                "streamInferenceUrl"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getGradientaiRegionsSort:getGradientaiRegionsSort": {
            "properties": {
                "direction": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getImagesFilter:getImagesFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the images by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`distribution`\" pulumi-lang-dotnet=\"`Distribution`\" pulumi-lang-go=\"`distribution`\" pulumi-lang-python=\"`distribution`\" pulumi-lang-yaml=\"`distribution`\" pulumi-lang-java=\"`distribution`\"\u003e`distribution`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`errorMessage`\" pulumi-lang-dotnet=\"`ErrorMessage`\" pulumi-lang-go=\"`errorMessage`\" pulumi-lang-python=\"`error_message`\" pulumi-lang-yaml=\"`errorMessage`\" pulumi-lang-java=\"`errorMessage`\"\u003e`error_message`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`minDiskSize`\" pulumi-lang-dotnet=\"`MinDiskSize`\" pulumi-lang-go=\"`minDiskSize`\" pulumi-lang-python=\"`min_disk_size`\" pulumi-lang-yaml=\"`minDiskSize`\" pulumi-lang-java=\"`minDiskSize`\"\u003e`min_disk_size`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`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, \u003cspan pulumi-lang-nodejs=\"`regions`\" pulumi-lang-dotnet=\"`Regions`\" pulumi-lang-go=\"`regions`\" pulumi-lang-python=\"`regions`\" pulumi-lang-yaml=\"`regions`\" pulumi-lang-java=\"`regions`\"\u003e`regions`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`sizeGigabytes`\" pulumi-lang-dotnet=\"`SizeGigabytes`\" pulumi-lang-go=\"`sizeGigabytes`\" pulumi-lang-python=\"`size_gigabytes`\" pulumi-lang-yaml=\"`sizeGigabytes`\" pulumi-lang-java=\"`sizeGigabytes`\"\u003e`size_gigabytes`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\"\u003e`status`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`tags`\" pulumi-lang-dotnet=\"`Tags`\" pulumi-lang-go=\"`tags`\" pulumi-lang-python=\"`tags`\" pulumi-lang-yaml=\"`tags`\" pulumi-lang-java=\"`tags`\"\u003e`tags`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of values to match against the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field. Only retrieves images\nwhere the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field takes on one or more of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getImagesImage:getImagesImage": {
            "properties": {
                "created": {
                    "type": "string",
                    "description": "When the image was created\n"
                },
                "description": {
                    "type": "string",
                    "description": "a description of the image\n"
                },
                "distribution": {
                    "type": "string",
                    "description": "The name of the distribution of the OS of the image.\n"
                },
                "errorMessage": {
                    "type": "string",
                    "description": "Any applicable error message pertaining to the image\n"
                },
                "id": {
                    "type": "integer",
                    "description": "The ID of the image.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The id of the image (legacy parameter).\n"
                },
                "minDiskSize": {
                    "type": "integer",
                    "description": "The minimum 'disk' required for the image.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the image.\n"
                },
                "private": {
                    "type": "boolean",
                    "description": "Is image a public image or not. Public images represent\nLinux distributions or One-Click Applications, while non-public images represent\nsnapshots and backups and are only available within your account.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of the regions that the image is available in.\n"
                },
                "sizeGigabytes": {
                    "type": "number",
                    "description": "The size of the image in GB.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "Unique text identifier of the image.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Current status of the image\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of tags applied to the image\n"
                },
                "type": {
                    "type": "string",
                    "description": "Type of the image.\n"
                }
            },
            "type": "object",
            "required": [
                "created",
                "description",
                "distribution",
                "errorMessage",
                "id",
                "image",
                "minDiskSize",
                "name",
                "private",
                "regions",
                "sizeGigabytes",
                "slug",
                "status",
                "tags",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getImagesSort:getImagesSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the images by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`distribution`\" pulumi-lang-dotnet=\"`Distribution`\" pulumi-lang-go=\"`distribution`\" pulumi-lang-python=\"`distribution`\" pulumi-lang-yaml=\"`distribution`\" pulumi-lang-java=\"`distribution`\"\u003e`distribution`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`errorMessage`\" pulumi-lang-dotnet=\"`ErrorMessage`\" pulumi-lang-go=\"`errorMessage`\" pulumi-lang-python=\"`error_message`\" pulumi-lang-yaml=\"`errorMessage`\" pulumi-lang-java=\"`errorMessage`\"\u003e`error_message`\u003c/span\u003e, \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\u003cspan pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\"\u003e`image`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`minDiskSize`\" pulumi-lang-dotnet=\"`MinDiskSize`\" pulumi-lang-go=\"`minDiskSize`\" pulumi-lang-python=\"`min_disk_size`\" pulumi-lang-yaml=\"`minDiskSize`\" pulumi-lang-java=\"`minDiskSize`\"\u003e`min_disk_size`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`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, \u003cspan pulumi-lang-nodejs=\"`sizeGigabytes`\" pulumi-lang-dotnet=\"`SizeGigabytes`\" pulumi-lang-go=\"`sizeGigabytes`\" pulumi-lang-python=\"`size_gigabytes`\" pulumi-lang-yaml=\"`sizeGigabytes`\" pulumi-lang-java=\"`sizeGigabytes`\"\u003e`size_gigabytes`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\"\u003e`status`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getKubernetesClusterAmdGpuDeviceMetricsExporterPlugin:getKubernetesClusterAmdGpuDeviceMetricsExporterPlugin": {
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterAmdGpuDevicePlugin:getKubernetesClusterAmdGpuDevicePlugin": {
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterClusterAutoscalerConfiguration:getKubernetesClusterClusterAutoscalerConfiguration": {
            "properties": {
                "expanders": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "scaleDownUnneededTime": {
                    "type": "string"
                },
                "scaleDownUtilizationThreshold": {
                    "type": "number"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getKubernetesClusterControlPlaneFirewall:getKubernetesClusterControlPlaneFirewall": {
            "properties": {
                "allowedAddresses": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "enabled": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "required": [
                "allowedAddresses",
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterKubeConfig:getKubernetesClusterKubeConfig": {
            "properties": {
                "clientCertificate": {
                    "type": "string",
                    "description": "The base64 encoded public certificate used by clients to access the cluster. Only available if token authentication is not supported on your cluster.\n"
                },
                "clientKey": {
                    "type": "string",
                    "description": "The base64 encoded private key used by clients to access the cluster. Only available if token authentication is not supported on your cluster.\n"
                },
                "clusterCaCertificate": {
                    "type": "string",
                    "description": "The base64 encoded public certificate for the cluster's certificate authority.\n"
                },
                "expiresAt": {
                    "type": "string",
                    "description": "The date and time when the credentials will expire and need to be regenerated.\n"
                },
                "host": {
                    "type": "string",
                    "description": "The URL of the API server on the Kubernetes master node.\n"
                },
                "rawConfig": {
                    "type": "string",
                    "description": "The full contents of the Kubernetes cluster's kubeconfig file.\n"
                },
                "token": {
                    "type": "string",
                    "description": "The DigitalOcean API access token used by clients to access the cluster.\n"
                }
            },
            "type": "object",
            "required": [
                "clientCertificate",
                "clientKey",
                "clusterCaCertificate",
                "expiresAt",
                "host",
                "rawConfig",
                "token"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterMaintenancePolicy:getKubernetesClusterMaintenancePolicy": {
            "properties": {
                "day": {
                    "type": "string",
                    "description": "The day for the service window of the Kubernetes cluster.\n"
                },
                "duration": {
                    "type": "string",
                    "description": "The duration of the operation.\n"
                },
                "startTime": {
                    "type": "string",
                    "description": "The start time of the upgrade operation.\n"
                }
            },
            "type": "object",
            "required": [
                "day",
                "duration",
                "startTime"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterNodePool:getKubernetesClusterNodePool": {
            "properties": {
                "actualNodeCount": {
                    "type": "integer",
                    "description": "The actual number of nodes in the node pool, which is especially useful when auto-scaling is enabled.\n"
                },
                "autoScale": {
                    "type": "boolean",
                    "description": "A boolean indicating whether auto-scaling is enabled on the node pool.\n"
                },
                "id": {
                    "type": "string",
                    "description": "A unique ID that can be used to identify and reference the node.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of key/value pairs applied to nodes in the pool. The labels are exposed in the Kubernetes API as labels in the metadata of the corresponding [Node resources](https://kubernetes.io/docs/concepts/architecture/nodes/).\n"
                },
                "maxNodes": {
                    "type": "integer",
                    "description": "If auto-scaling is enabled, this represents the maximum number of nodes that the node pool can be scaled up to.\n"
                },
                "minNodes": {
                    "type": "integer",
                    "description": "If auto-scaling is enabled, this represents the minimum number of nodes that the node pool can be scaled down to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of Kubernetes cluster.\n"
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "The number of Droplet instances in the node pool.\n"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterNodePoolNode:getKubernetesClusterNodePoolNode"
                    },
                    "description": "A list of nodes in the pool. Each node exports the following attributes:\n"
                },
                "size": {
                    "type": "string",
                    "description": "The slug identifier for the type of Droplet used as workers in the node pool.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names applied to the node pool.\n"
                },
                "taints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterNodePoolTaint:getKubernetesClusterNodePoolTaint"
                    },
                    "description": "A list of taints applied to all nodes in the pool. Each taint exports the following attributes:\n"
                }
            },
            "type": "object",
            "required": [
                "actualNodeCount",
                "autoScale",
                "id",
                "labels",
                "maxNodes",
                "minNodes",
                "name",
                "nodeCount",
                "nodes",
                "size",
                "tags",
                "taints"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterNodePoolNode:getKubernetesClusterNodePoolNode": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the node was created.\n"
                },
                "dropletId": {
                    "type": "string"
                },
                "id": {
                    "type": "string",
                    "description": "A unique ID that can be used to identify and reference the node.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of Kubernetes cluster.\n"
                },
                "status": {
                    "type": "string",
                    "description": "A string indicating the current status of the individual node.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time when the node was last updated.\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "dropletId",
                "id",
                "name",
                "status",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterNodePoolTaint:getKubernetesClusterNodePoolTaint": {
            "properties": {
                "effect": {
                    "type": "string",
                    "description": "How the node reacts to pods that it won't tolerate. Available effect values are: \"NoSchedule\", \"PreferNoSchedule\", \"NoExecute\".\n"
                },
                "key": {
                    "type": "string",
                    "description": "An arbitrary string. The \"key\" and \"value\" fields of the \"taint\" object form a key-value pair.\n"
                },
                "value": {
                    "type": "string",
                    "description": "An arbitrary string. The \"key\" and \"value\" fields of the \"taint\" object form a key-value pair.\n"
                }
            },
            "type": "object",
            "required": [
                "effect",
                "key",
                "value"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterNvidiaGpuDevicePlugin:getKubernetesClusterNvidiaGpuDevicePlugin": {
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterRdmaSharedDevicePlugin:getKubernetesClusterRdmaSharedDevicePlugin": {
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterRoutingAgent:getKubernetesClusterRoutingAgent": {
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "required": [
                "enabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getKubernetesClusterSso:getKubernetesClusterSso": {
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "required": {
                    "type": "boolean"
                }
            },
            "type": "object",
            "required": [
                "enabled",
                "required"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getLoadBalancerDomain:getLoadBalancerDomain": {
            "properties": {
                "certificateId": {
                    "type": "string",
                    "description": "certificate ID for TLS handshaking\n"
                },
                "certificateName": {
                    "type": "string",
                    "description": "name of certificate required for TLS handshaking\n"
                },
                "isManaged": {
                    "type": "boolean",
                    "description": "flag indicating if domain is managed by DigitalOcean\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of load balancer.\n"
                },
                "sslValidationErrorReasons": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "list of domain SSL validation errors\n"
                },
                "verificationErrorReasons": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "list of domain verification errors\n"
                }
            },
            "type": "object",
            "required": [
                "certificateId",
                "certificateName",
                "isManaged",
                "name",
                "sslValidationErrorReasons",
                "verificationErrorReasons"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getLoadBalancerFirewall:getLoadBalancerFirewall": {
            "properties": {
                "allows": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "the rules for ALLOWING traffic to the LB (strings in the form: 'ip:1.2.3.4' or 'cidr:1.2.0.0/16')\n"
                },
                "denies": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "the rules for DENYING traffic to the LB (strings in the form: 'ip:1.2.3.4' or 'cidr:1.2.0.0/16')\n"
                }
            },
            "type": "object",
            "required": [
                "allows",
                "denies"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getLoadBalancerForwardingRule:getLoadBalancerForwardingRule": {
            "properties": {
                "certificateId": {
                    "type": "string",
                    "description": "the id of the tls certificate used for ssl termination if enabled\n"
                },
                "certificateName": {
                    "type": "string",
                    "description": "the name of the tls certificate used for ssl termination if enabled\n"
                },
                "entryPort": {
                    "type": "integer",
                    "description": "the port on which the load balancer instance will listen\n"
                },
                "entryProtocol": {
                    "type": "string",
                    "description": "the protocol used for traffic to the load balancer\n"
                },
                "targetPort": {
                    "type": "integer",
                    "description": "the port on the backend Droplets to which the load balancer will send traffic\n"
                },
                "targetProtocol": {
                    "type": "string",
                    "description": "the protocol used for traffic to the backend droplets\n"
                },
                "tlsPassthrough": {
                    "type": "boolean",
                    "description": "whether ssl encrypted traffic will be passed through to the backend droplets\n"
                }
            },
            "type": "object",
            "required": [
                "certificateId",
                "certificateName",
                "entryPort",
                "entryProtocol",
                "targetPort",
                "targetProtocol",
                "tlsPassthrough"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getLoadBalancerGlbSetting:getLoadBalancerGlbSetting": {
            "properties": {
                "cdns": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getLoadBalancerGlbSettingCdn:getLoadBalancerGlbSettingCdn"
                    },
                    "description": "CDN specific configurations\n"
                },
                "failoverThreshold": {
                    "type": "integer",
                    "description": "fail-over threshold\n"
                },
                "regionPriorities": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    },
                    "description": "region priority map\n"
                },
                "targetPort": {
                    "type": "integer",
                    "description": "target port rules\n"
                },
                "targetProtocol": {
                    "type": "string",
                    "description": "target protocol rules\n"
                }
            },
            "type": "object",
            "required": [
                "cdns",
                "failoverThreshold",
                "regionPriorities",
                "targetPort",
                "targetProtocol"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getLoadBalancerGlbSettingCdn:getLoadBalancerGlbSettingCdn": {
            "properties": {
                "isEnabled": {
                    "type": "boolean",
                    "description": "cache enable flag\n"
                }
            },
            "type": "object",
            "required": [
                "isEnabled"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getLoadBalancerHealthcheck:getLoadBalancerHealthcheck": {
            "properties": {
                "checkIntervalSeconds": {
                    "type": "integer",
                    "description": "the number of seconds between between two consecutive health checks\n"
                },
                "healthyThreshold": {
                    "type": "integer",
                    "description": "the number of times a health check must pass for a backend droplet to be marked 'healthy' and be re-added to the pool\n"
                },
                "path": {
                    "type": "string",
                    "description": "the path on the backend Droplets to which the Load Balancer will send a request\n"
                },
                "port": {
                    "type": "integer",
                    "description": "the port on the backend droplets on which the health check will attempt a connection\n"
                },
                "protocol": {
                    "type": "string",
                    "description": "the protocol used for health checks sent to the backend droplets\n"
                },
                "responseTimeoutSeconds": {
                    "type": "integer",
                    "description": "the number of seconds to wait for a response until marking a health check as failed\n"
                },
                "unhealthyThreshold": {
                    "type": "integer",
                    "description": "The number of times a health check must fail for a backend droplet to be marked 'unhealthy' and be removed from the pool\n"
                }
            },
            "type": "object",
            "required": [
                "checkIntervalSeconds",
                "healthyThreshold",
                "path",
                "port",
                "protocol",
                "responseTimeoutSeconds",
                "unhealthyThreshold"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getLoadBalancerStickySession:getLoadBalancerStickySession": {
            "properties": {
                "cookieName": {
                    "type": "string",
                    "description": "the name of the cookie sent to the client\n"
                },
                "cookieTtlSeconds": {
                    "type": "integer",
                    "description": "the number of seconds until the cookie set by the Load Balancer expires\n"
                },
                "type": {
                    "type": "string",
                    "description": "how and if requests from a client will be persistently served by the same backend droplet\n"
                }
            },
            "type": "object",
            "required": [
                "cookieName",
                "cookieTtlSeconds",
                "type"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getPartnerAttachmentBgp:getPartnerAttachmentBgp": {
            "properties": {
                "localRouterIp": {
                    "type": "string"
                },
                "peerRouterAsn": {
                    "type": "integer"
                },
                "peerRouterIp": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "digitalocean:index/getProjectsFilter:getProjectsFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the projects by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`purpose`\" pulumi-lang-dotnet=\"`Purpose`\" pulumi-lang-go=\"`purpose`\" pulumi-lang-python=\"`purpose`\" pulumi-lang-yaml=\"`purpose`\" pulumi-lang-java=\"`purpose`\"\u003e`purpose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`isDefault`\" pulumi-lang-dotnet=\"`IsDefault`\" pulumi-lang-go=\"`isDefault`\" pulumi-lang-python=\"`is_default`\" pulumi-lang-yaml=\"`isDefault`\" pulumi-lang-java=\"`isDefault`\"\u003e`is_default`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of values to match against the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field. Only retrieves projects\nwhere the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field takes on one or more of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getProjectsProject:getProjectsProject": {
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the project was created, (ISO8601)\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the project\n"
                },
                "environment": {
                    "type": "string",
                    "description": "The environment of the project's resources. The possible values are: `Development`, `Staging`, `Production`.\n"
                },
                "id": {
                    "type": "string",
                    "description": "The ID of the project\n"
                },
                "isDefault": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the project\n"
                },
                "ownerId": {
                    "type": "integer",
                    "description": "The ID of the project owner\n"
                },
                "ownerUuid": {
                    "type": "string",
                    "description": "The unique universal identifier of the project owner\n"
                },
                "purpose": {
                    "type": "string",
                    "description": "The purpose of the project (Default: \"Web Application\")\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of uniform resource names (URNs) for the resources associated with the project\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time when the project was last updated, (ISO8601)\n"
                }
            },
            "type": "object",
            "required": [
                "createdAt",
                "description",
                "environment",
                "id",
                "isDefault",
                "name",
                "ownerId",
                "ownerUuid",
                "purpose",
                "resources",
                "updatedAt"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getProjectsSort:getProjectsSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the projects by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`purpose`\" pulumi-lang-dotnet=\"`Purpose`\" pulumi-lang-go=\"`purpose`\" pulumi-lang-python=\"`purpose`\" pulumi-lang-yaml=\"`purpose`\" pulumi-lang-java=\"`purpose`\"\u003e`purpose`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\"\u003e`description`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`environment`\" pulumi-lang-dotnet=\"`Environment`\" pulumi-lang-go=\"`environment`\" pulumi-lang-python=\"`environment`\" pulumi-lang-yaml=\"`environment`\" pulumi-lang-java=\"`environment`\"\u003e`environment`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getRecordsFilter:getRecordsFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the DNS records by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`domain`\" pulumi-lang-dotnet=\"`Domain`\" pulumi-lang-go=\"`domain`\" pulumi-lang-python=\"`domain`\" pulumi-lang-yaml=\"`domain`\" pulumi-lang-java=\"`domain`\"\u003e`domain`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flags`\" pulumi-lang-dotnet=\"`Flags`\" pulumi-lang-go=\"`flags`\" pulumi-lang-python=\"`flags`\" pulumi-lang-yaml=\"`flags`\" pulumi-lang-java=\"`flags`\"\u003e`flags`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`priority`\" pulumi-lang-dotnet=\"`Priority`\" pulumi-lang-go=\"`priority`\" pulumi-lang-python=\"`priority`\" pulumi-lang-yaml=\"`priority`\" pulumi-lang-java=\"`priority`\"\u003e`priority`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ttl`\" pulumi-lang-dotnet=\"`Ttl`\" pulumi-lang-go=\"`ttl`\" pulumi-lang-python=\"`ttl`\" pulumi-lang-yaml=\"`ttl`\" pulumi-lang-java=\"`ttl`\"\u003e`ttl`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`weight`\" pulumi-lang-dotnet=\"`Weight`\" pulumi-lang-go=\"`weight`\" pulumi-lang-python=\"`weight`\" pulumi-lang-yaml=\"`weight`\" pulumi-lang-java=\"`weight`\"\u003e`weight`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of values to match against the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field. Only retrieves DNS records\nwhere the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field takes on one or more of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getRecordsRecord:getRecordsRecord": {
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "The domain name to search for DNS records\n"
                },
                "flags": {
                    "type": "integer",
                    "description": "An unsigned integer between 0-255 used for CAA records.\n"
                },
                "id": {
                    "type": "integer",
                    "description": "The ID of the record.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the DNS record.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port for SRV records.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority for SRV and MX records.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The parameter tag for CAA records.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "This value is the time to live for the record, in seconds. This defines the time frame that clients can cache queried information before a refresh should be requested.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the DNS record.\n"
                },
                "value": {
                    "type": "string",
                    "description": "Variable data depending on record type. For example, the \"data\" value for an A record would be the IPv4 address to which the domain will be mapped. For a CAA record, it would contain the domain name of the CA being granted permission to issue certificates.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight for SRV records.\n"
                }
            },
            "type": "object",
            "required": [
                "domain",
                "flags",
                "id",
                "name",
                "port",
                "priority",
                "tag",
                "ttl",
                "type",
                "value",
                "weight"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getRecordsSort:getRecordsSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the DNS records by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`domain`\" pulumi-lang-dotnet=\"`Domain`\" pulumi-lang-go=\"`domain`\" pulumi-lang-python=\"`domain`\" pulumi-lang-yaml=\"`domain`\" pulumi-lang-java=\"`domain`\"\u003e`domain`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`flags`\" pulumi-lang-dotnet=\"`Flags`\" pulumi-lang-go=\"`flags`\" pulumi-lang-python=\"`flags`\" pulumi-lang-yaml=\"`flags`\" pulumi-lang-java=\"`flags`\"\u003e`flags`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`priority`\" pulumi-lang-dotnet=\"`Priority`\" pulumi-lang-go=\"`priority`\" pulumi-lang-python=\"`priority`\" pulumi-lang-yaml=\"`priority`\" pulumi-lang-java=\"`priority`\"\u003e`priority`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ttl`\" pulumi-lang-dotnet=\"`Ttl`\" pulumi-lang-go=\"`ttl`\" pulumi-lang-python=\"`ttl`\" pulumi-lang-yaml=\"`ttl`\" pulumi-lang-java=\"`ttl`\"\u003e`ttl`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`weight`\" pulumi-lang-dotnet=\"`Weight`\" pulumi-lang-go=\"`weight`\" pulumi-lang-python=\"`weight`\" pulumi-lang-yaml=\"`weight`\" pulumi-lang-java=\"`weight`\"\u003e`weight`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getRegionsFilter:getRegionsFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the regions by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`features`\" pulumi-lang-dotnet=\"`Features`\" pulumi-lang-go=\"`features`\" pulumi-lang-python=\"`features`\" pulumi-lang-yaml=\"`features`\" pulumi-lang-java=\"`features`\"\u003e`features`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`sizes`\" pulumi-lang-dotnet=\"`Sizes`\" pulumi-lang-go=\"`sizes`\" pulumi-lang-python=\"`sizes`\" pulumi-lang-yaml=\"`sizes`\" pulumi-lang-java=\"`sizes`\"\u003e`sizes`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of values to match against the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field. Only retrieves regions\nwhere the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field takes on one or more of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getRegionsRegion:getRegionsRegion": {
            "properties": {
                "available": {
                    "type": "boolean",
                    "description": "A boolean value that represents whether new Droplets can be created in this region.\n"
                },
                "features": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of features available in this region.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The display name of the region.\n"
                },
                "sizes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of identifying slugs for the Droplet sizes available in this region.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "A human-readable string that is used as a unique identifier for each region.\n"
                }
            },
            "type": "object",
            "required": [
                "available",
                "features",
                "name",
                "sizes",
                "slug"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getRegionsSort:getRegionsSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the regions by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getSizesFilter:getSizesFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the sizes by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`regions`\" pulumi-lang-dotnet=\"`Regions`\" pulumi-lang-go=\"`regions`\" pulumi-lang-python=\"`regions`\" pulumi-lang-yaml=\"`regions`\" pulumi-lang-java=\"`regions`\"\u003e`regions`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vcpus`\" pulumi-lang-dotnet=\"`Vcpus`\" pulumi-lang-go=\"`vcpus`\" pulumi-lang-python=\"`vcpus`\" pulumi-lang-yaml=\"`vcpus`\" pulumi-lang-java=\"`vcpus`\"\u003e`vcpus`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`disk`\" pulumi-lang-dotnet=\"`Disk`\" pulumi-lang-go=\"`disk`\" pulumi-lang-python=\"`disk`\" pulumi-lang-yaml=\"`disk`\" pulumi-lang-java=\"`disk`\"\u003e`disk`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`transfer`\" pulumi-lang-dotnet=\"`Transfer`\" pulumi-lang-go=\"`transfer`\" pulumi-lang-python=\"`transfer`\" pulumi-lang-yaml=\"`transfer`\" pulumi-lang-java=\"`transfer`\"\u003e`transfer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`priceMonthly`\" pulumi-lang-dotnet=\"`PriceMonthly`\" pulumi-lang-go=\"`priceMonthly`\" pulumi-lang-python=\"`price_monthly`\" pulumi-lang-yaml=\"`priceMonthly`\" pulumi-lang-java=\"`priceMonthly`\"\u003e`price_monthly`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`priceHourly`\" pulumi-lang-dotnet=\"`PriceHourly`\" pulumi-lang-go=\"`priceHourly`\" pulumi-lang-python=\"`price_hourly`\" pulumi-lang-yaml=\"`priceHourly`\" pulumi-lang-java=\"`priceHourly`\"\u003e`price_hourly`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`available`\" pulumi-lang-dotnet=\"`Available`\" pulumi-lang-go=\"`available`\" pulumi-lang-python=\"`available`\" pulumi-lang-yaml=\"`available`\" pulumi-lang-java=\"`available`\"\u003e`available`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Only retrieves sizes which keys has value that matches\none of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getSizesSize:getSizesSize": {
            "properties": {
                "available": {
                    "type": "boolean",
                    "description": "This represents whether new Droplets can be created with this size.\n"
                },
                "disk": {
                    "type": "integer",
                    "description": "The amount of disk space set aside for Droplets of this size. The value is measured in gigabytes.\n"
                },
                "memory": {
                    "type": "integer",
                    "description": "The amount of RAM allocated to Droplets created of this size. The value is measured in megabytes.\n"
                },
                "priceHourly": {
                    "type": "number",
                    "description": "The hourly cost of Droplets created in this size as measured hourly. The value is measured in US dollars.\n"
                },
                "priceMonthly": {
                    "type": "number",
                    "description": "The monthly cost of Droplets created in this size if they are kept for an entire month. The value is measured in US dollars.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of region slugs where Droplets can be created in this size.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "A human-readable string that is used to uniquely identify each size.\n"
                },
                "transfer": {
                    "type": "number",
                    "description": "The amount of transfer bandwidth that is available for Droplets created in this size. This only counts traffic on the public interface. The value is given in terabytes.\n"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "The number of CPUs allocated to Droplets of this size.\n"
                }
            },
            "type": "object",
            "required": [
                "available",
                "disk",
                "memory",
                "priceHourly",
                "priceMonthly",
                "regions",
                "slug",
                "transfer",
                "vcpus"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getSizesSort:getSizesSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the sizes by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`vcpus`\" pulumi-lang-dotnet=\"`Vcpus`\" pulumi-lang-go=\"`vcpus`\" pulumi-lang-python=\"`vcpus`\" pulumi-lang-yaml=\"`vcpus`\" pulumi-lang-java=\"`vcpus`\"\u003e`vcpus`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`disk`\" pulumi-lang-dotnet=\"`Disk`\" pulumi-lang-go=\"`disk`\" pulumi-lang-python=\"`disk`\" pulumi-lang-yaml=\"`disk`\" pulumi-lang-java=\"`disk`\"\u003e`disk`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`transfer`\" pulumi-lang-dotnet=\"`Transfer`\" pulumi-lang-go=\"`transfer`\" pulumi-lang-python=\"`transfer`\" pulumi-lang-yaml=\"`transfer`\" pulumi-lang-java=\"`transfer`\"\u003e`transfer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`priceMonthly`\" pulumi-lang-dotnet=\"`PriceMonthly`\" pulumi-lang-go=\"`priceMonthly`\" pulumi-lang-python=\"`price_monthly`\" pulumi-lang-yaml=\"`priceMonthly`\" pulumi-lang-java=\"`priceMonthly`\"\u003e`price_monthly`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`priceHourly`\" pulumi-lang-dotnet=\"`PriceHourly`\" pulumi-lang-go=\"`priceHourly`\" pulumi-lang-python=\"`price_hourly`\" pulumi-lang-yaml=\"`priceHourly`\" pulumi-lang-java=\"`priceHourly`\"\u003e`price_hourly`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getSpacesBucketsBucket:getSpacesBucketsBucket": {
            "properties": {
                "bucketDomainName": {
                    "type": "string",
                    "description": "The FQDN of the bucket (e.g. bucket-name.nyc3.digitaloceanspaces.com)\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The FQDN of the bucket without the bucket name (e.g. nyc3.digitaloceanspaces.com)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Spaces bucket\n"
                },
                "region": {
                    "type": "string",
                    "description": "The slug of the region where the bucket is stored.\n"
                },
                "urn": {
                    "type": "string",
                    "description": "The uniform resource name of the bucket\n"
                }
            },
            "type": "object",
            "required": [
                "bucketDomainName",
                "endpoint",
                "name",
                "region",
                "urn"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getSpacesBucketsFilter:getSpacesBucketsFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the images by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`bucketDomainName`\" pulumi-lang-dotnet=\"`BucketDomainName`\" pulumi-lang-go=\"`bucketDomainName`\" pulumi-lang-python=\"`bucket_domain_name`\" pulumi-lang-yaml=\"`bucketDomainName`\" pulumi-lang-java=\"`bucketDomainName`\"\u003e`bucket_domain_name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`urn`\" pulumi-lang-dotnet=\"`Urn`\" pulumi-lang-go=\"`urn`\" pulumi-lang-python=\"`urn`\" pulumi-lang-yaml=\"`urn`\" pulumi-lang-java=\"`urn`\"\u003e`urn`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of values to match against the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field. Only retrieves Spaces buckets\nwhere the \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e field takes on one or more of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getSpacesBucketsSort:getSpacesBucketsSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the images by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`bucketDomainName`\" pulumi-lang-dotnet=\"`BucketDomainName`\" pulumi-lang-go=\"`bucketDomainName`\" pulumi-lang-python=\"`bucket_domain_name`\" pulumi-lang-yaml=\"`bucketDomainName`\" pulumi-lang-java=\"`bucketDomainName`\"\u003e`bucket_domain_name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`urn`\" pulumi-lang-dotnet=\"`Urn`\" pulumi-lang-go=\"`urn`\" pulumi-lang-python=\"`urn`\" pulumi-lang-yaml=\"`urn`\" pulumi-lang-java=\"`urn`\"\u003e`urn`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getSpacesKeyGrant:getSpacesKeyGrant": {
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket to grant the key access to.\n"
                },
                "permission": {
                    "type": "string",
                    "description": "The permission to grant the key. Valid values are \u003cspan pulumi-lang-nodejs=\"`read`\" pulumi-lang-dotnet=\"`Read`\" pulumi-lang-go=\"`read`\" pulumi-lang-python=\"`read`\" pulumi-lang-yaml=\"`read`\" pulumi-lang-java=\"`read`\"\u003e`read`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`readwrite`\" pulumi-lang-dotnet=\"`Readwrite`\" pulumi-lang-go=\"`readwrite`\" pulumi-lang-python=\"`readwrite`\" pulumi-lang-yaml=\"`readwrite`\" pulumi-lang-java=\"`readwrite`\"\u003e`readwrite`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`fullaccess`\" pulumi-lang-dotnet=\"`Fullaccess`\" pulumi-lang-go=\"`fullaccess`\" pulumi-lang-python=\"`fullaccess`\" pulumi-lang-yaml=\"`fullaccess`\" pulumi-lang-java=\"`fullaccess`\"\u003e`fullaccess`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "bucket",
                "permission"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getSshKeysFilter:getSshKeysFilter": {
            "properties": {
                "all": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the SSH Keys by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`publicKey`\" pulumi-lang-dotnet=\"`PublicKey`\" pulumi-lang-go=\"`publicKey`\" pulumi-lang-python=\"`public_key`\" pulumi-lang-yaml=\"`publicKey`\" pulumi-lang-java=\"`publicKey`\"\u003e`public_key`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`fingerprint`\" pulumi-lang-dotnet=\"`Fingerprint`\" pulumi-lang-go=\"`fingerprint`\" pulumi-lang-python=\"`fingerprint`\" pulumi-lang-yaml=\"`fingerprint`\" pulumi-lang-java=\"`fingerprint`\"\u003e`fingerprint`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of values to match against the key field. Only retrieves SSH keys where the key field matches one or more of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getSshKeysSort:getSshKeysSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the SSH Keys by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`publicKey`\" pulumi-lang-dotnet=\"`PublicKey`\" pulumi-lang-go=\"`publicKey`\" pulumi-lang-python=\"`public_key`\" pulumi-lang-yaml=\"`publicKey`\" pulumi-lang-java=\"`publicKey`\"\u003e`public_key`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`fingerprint`\" pulumi-lang-dotnet=\"`Fingerprint`\" pulumi-lang-go=\"`fingerprint`\" pulumi-lang-python=\"`fingerprint`\" pulumi-lang-yaml=\"`fingerprint`\" pulumi-lang-java=\"`fingerprint`\"\u003e`fingerprint`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getSshKeysSshKey:getSshKeysSshKey": {
            "properties": {
                "fingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the public key of the ssh key.\n"
                },
                "id": {
                    "type": "integer",
                    "description": "The ID of the ssh key.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the ssh key.\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public key of the ssh key.\n"
                }
            },
            "type": "object",
            "required": [
                "fingerprint",
                "id",
                "name",
                "publicKey"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getTagsFilter:getTagsFilter": {
            "properties": {
                "all": {
                    "type": "boolean",
                    "description": "Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to require that a field match all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e instead of just one or more of\nthem. This is useful when matching against multi-valued fields such as lists or sets where you want to ensure\nthat all of the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e are present in the list or set.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Filter the tags by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`totalResourceCount`\" pulumi-lang-dotnet=\"`TotalResourceCount`\" pulumi-lang-go=\"`totalResourceCount`\" pulumi-lang-python=\"`total_resource_count`\" pulumi-lang-yaml=\"`totalResourceCount`\" pulumi-lang-java=\"`totalResourceCount`\"\u003e`total_resource_count`\u003c/span\u003e,  \u003cspan pulumi-lang-nodejs=\"`dropletsCount`\" pulumi-lang-dotnet=\"`DropletsCount`\" pulumi-lang-go=\"`dropletsCount`\" pulumi-lang-python=\"`droplets_count`\" pulumi-lang-yaml=\"`dropletsCount`\" pulumi-lang-java=\"`dropletsCount`\"\u003e`droplets_count`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imagesCount`\" pulumi-lang-dotnet=\"`ImagesCount`\" pulumi-lang-go=\"`imagesCount`\" pulumi-lang-python=\"`images_count`\" pulumi-lang-yaml=\"`imagesCount`\" pulumi-lang-java=\"`imagesCount`\"\u003e`images_count`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volumesCount`\" pulumi-lang-dotnet=\"`VolumesCount`\" pulumi-lang-go=\"`volumesCount`\" pulumi-lang-python=\"`volumes_count`\" pulumi-lang-yaml=\"`volumesCount`\" pulumi-lang-java=\"`volumesCount`\"\u003e`volumes_count`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volumeSnapshotsCount`\" pulumi-lang-dotnet=\"`VolumeSnapshotsCount`\" pulumi-lang-go=\"`volumeSnapshotsCount`\" pulumi-lang-python=\"`volume_snapshots_count`\" pulumi-lang-yaml=\"`volumeSnapshotsCount`\" pulumi-lang-java=\"`volumeSnapshotsCount`\"\u003e`volume_snapshots_count`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`databasesCount`\" pulumi-lang-dotnet=\"`DatabasesCount`\" pulumi-lang-go=\"`databasesCount`\" pulumi-lang-python=\"`databases_count`\" pulumi-lang-yaml=\"`databasesCount`\" pulumi-lang-java=\"`databasesCount`\"\u003e`databases_count`\u003c/span\u003e.\n"
                },
                "matchBy": {
                    "type": "string",
                    "description": "One of \u003cspan pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\"\u003e`exact`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e. For string-typed fields, specify \u003cspan pulumi-lang-nodejs=\"`re`\" pulumi-lang-dotnet=\"`Re`\" pulumi-lang-go=\"`re`\" pulumi-lang-python=\"`re`\" pulumi-lang-yaml=\"`re`\" pulumi-lang-java=\"`re`\"\u003e`re`\u003c/span\u003e to\nmatch by using the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as regular expressions, or specify \u003cspan pulumi-lang-nodejs=\"`substring`\" pulumi-lang-dotnet=\"`Substring`\" pulumi-lang-go=\"`substring`\" pulumi-lang-python=\"`substring`\" pulumi-lang-yaml=\"`substring`\" pulumi-lang-java=\"`substring`\"\u003e`substring`\u003c/span\u003e to match by treating the \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e as\nsubstrings to find within the string field.\n"
                },
                "values": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Only retrieves tags which keys has value that matches\none of the values provided here.\n"
                }
            },
            "type": "object",
            "required": [
                "key",
                "values"
            ]
        },
        "digitalocean:index/getTagsSort:getTagsSort": {
            "properties": {
                "direction": {
                    "type": "string",
                    "description": "The sort direction. This may be either \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"
                },
                "key": {
                    "type": "string",
                    "description": "Sort the tags by this key. This may be one of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`totalResourceCount`\" pulumi-lang-dotnet=\"`TotalResourceCount`\" pulumi-lang-go=\"`totalResourceCount`\" pulumi-lang-python=\"`total_resource_count`\" pulumi-lang-yaml=\"`totalResourceCount`\" pulumi-lang-java=\"`totalResourceCount`\"\u003e`total_resource_count`\u003c/span\u003e,  \u003cspan pulumi-lang-nodejs=\"`dropletsCount`\" pulumi-lang-dotnet=\"`DropletsCount`\" pulumi-lang-go=\"`dropletsCount`\" pulumi-lang-python=\"`droplets_count`\" pulumi-lang-yaml=\"`dropletsCount`\" pulumi-lang-java=\"`dropletsCount`\"\u003e`droplets_count`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`imagesCount`\" pulumi-lang-dotnet=\"`ImagesCount`\" pulumi-lang-go=\"`imagesCount`\" pulumi-lang-python=\"`images_count`\" pulumi-lang-yaml=\"`imagesCount`\" pulumi-lang-java=\"`imagesCount`\"\u003e`images_count`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volumesCount`\" pulumi-lang-dotnet=\"`VolumesCount`\" pulumi-lang-go=\"`volumesCount`\" pulumi-lang-python=\"`volumes_count`\" pulumi-lang-yaml=\"`volumesCount`\" pulumi-lang-java=\"`volumesCount`\"\u003e`volumes_count`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volumeSnapshotsCount`\" pulumi-lang-dotnet=\"`VolumeSnapshotsCount`\" pulumi-lang-go=\"`volumeSnapshotsCount`\" pulumi-lang-python=\"`volume_snapshots_count`\" pulumi-lang-yaml=\"`volumeSnapshotsCount`\" pulumi-lang-java=\"`volumeSnapshotsCount`\"\u003e`volume_snapshots_count`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`databasesCount`\" pulumi-lang-dotnet=\"`DatabasesCount`\" pulumi-lang-go=\"`databasesCount`\" pulumi-lang-python=\"`databases_count`\" pulumi-lang-yaml=\"`databasesCount`\" pulumi-lang-java=\"`databasesCount`\"\u003e`databases_count`\u003c/span\u003e.\n"
                }
            },
            "type": "object",
            "required": [
                "key"
            ]
        },
        "digitalocean:index/getTagsTag:getTagsTag": {
            "properties": {
                "databasesCount": {
                    "type": "integer",
                    "description": "A count of the database clusters that the tag is applied to.\n"
                },
                "dropletsCount": {
                    "type": "integer",
                    "description": "A count of the Droplets the tag is applied to.\n"
                },
                "imagesCount": {
                    "type": "integer",
                    "description": "A count of the images that the tag is applied to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the tag.\n"
                },
                "totalResourceCount": {
                    "type": "integer",
                    "description": "A count of the total number of resources that the tag is applied to.\n"
                },
                "volumeSnapshotsCount": {
                    "type": "integer",
                    "description": "A count of the volume snapshots that the tag is applied to.\n"
                },
                "volumesCount": {
                    "type": "integer",
                    "description": "A count of the volumes that the tag is applied to.\n"
                }
            },
            "type": "object",
            "required": [
                "databasesCount",
                "dropletsCount",
                "imagesCount",
                "name",
                "totalResourceCount",
                "volumeSnapshotsCount",
                "volumesCount"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getVpcNatGatewayEgress:getVpcNatGatewayEgress": {
            "properties": {
                "publicGateways": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/getVpcNatGatewayEgressPublicGateway:getVpcNatGatewayEgressPublicGateway"
                    },
                    "description": "List of public gateway IPs\n"
                }
            },
            "type": "object",
            "required": [
                "publicGateways"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getVpcNatGatewayEgressPublicGateway:getVpcNatGatewayEgressPublicGateway": {
            "properties": {
                "ipv4": {
                    "type": "string",
                    "description": "IPv4 address\n"
                }
            },
            "type": "object",
            "required": [
                "ipv4"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index/getVpcNatGatewayVpc:getVpcNatGatewayVpc": {
            "properties": {
                "defaultGateway": {
                    "type": "boolean",
                    "description": "Indicates if this is the default VPC NAT Gateway in the VPC\n"
                },
                "gatewayIp": {
                    "type": "string",
                    "description": "Gateway IP of the VPC NAT Gateway\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "ID of the ingress VPC\n"
                }
            },
            "type": "object",
            "required": [
                "defaultGateway",
                "gatewayIp",
                "vpcUuid"
            ],
            "language": {
                "nodejs": {
                    "requiredInputs": []
                }
            }
        },
        "digitalocean:index:Algorithm": {
            "type": "string",
            "enum": [
                {
                    "name": "RoundRobin",
                    "value": "round_robin"
                },
                {
                    "name": "LeastConnections",
                    "value": "least_connections"
                }
            ]
        },
        "digitalocean:index:CertificateType": {
            "type": "string",
            "enum": [
                {
                    "name": "LetsEncrypt",
                    "value": "lets_encrypt"
                },
                {
                    "name": "Custom",
                    "value": "custom"
                }
            ]
        },
        "digitalocean:index:DatabaseSlug": {
            "type": "string",
            "enum": [
                {
                    "name": "DB_1VPCU1GB",
                    "value": "db-s-1vcpu-1gb"
                },
                {
                    "name": "DB_1VPCU2GB",
                    "value": "db-s-1vcpu-2gb"
                },
                {
                    "name": "DB_2VPCU4GB",
                    "value": "db-s-2vcpu-4gb"
                },
                {
                    "name": "DB_4VPCU8GB",
                    "value": "db-s-4vcpu-8gb"
                },
                {
                    "name": "DB_6VPCU16GB",
                    "value": "db-s-6vcpu-16gb"
                },
                {
                    "name": "DB_8VPCU32GB",
                    "value": "db-s-8vcpu-32gb"
                },
                {
                    "name": "DB_16VPCU64GB",
                    "value": "db-s-16vcpu-64gb"
                }
            ]
        },
        "digitalocean:index:DropletSlug": {
            "type": "string",
            "enum": [
                {
                    "name": "DropletS1VCPU512MB10GB",
                    "value": "s-1vcpu-512mb-10gb"
                },
                {
                    "name": "DropletS1VCPU1GB",
                    "value": "s-1vcpu-1gb"
                },
                {
                    "name": "DropletS1VCPU1GB-AMD",
                    "value": "s-1vcpu-1gb-amd"
                },
                {
                    "name": "DropletS1VCPU1GB-INTEL",
                    "value": "s-1vcpu-1gb-intel"
                },
                {
                    "name": "DropletS1VCPU1GB35GB-INTEL",
                    "value": "s-1vcpu-1gb-35gb-intel"
                },
                {
                    "name": "DropletS1VCPU2GB",
                    "value": "s-1vcpu-2gb"
                },
                {
                    "name": "DropletS1VCPU2GB-AMD",
                    "value": "s-1vcpu-2gb-amd"
                },
                {
                    "name": "DropletS1VCPU2GB-INTEL",
                    "value": "s-1vcpu-2gb-intel"
                },
                {
                    "name": "DropletS1VCPU2GB70GB-INTEL",
                    "value": "s-1vcpu-2gb-70gb-intel"
                },
                {
                    "name": "DropletS2VCPU2GB",
                    "value": "s-2vcpu-2gb"
                },
                {
                    "name": "DropletS2VCPU2GB-AMD",
                    "value": "s-2vcpu-2gb-amd"
                },
                {
                    "name": "DropletS2VCPU2GB-INTEL",
                    "value": "s-2vcpu-2gb-intel"
                },
                {
                    "name": "DropletS2VCPU2GB90GB-INTEL",
                    "value": "s-2vcpu-2gb-90gb-intel"
                },
                {
                    "name": "DropletS2VCPU4GB",
                    "value": "s-2vcpu-4gb"
                },
                {
                    "name": "DropletS2VCPU4GB-AMD",
                    "value": "s-2vcpu-4gb-amd"
                },
                {
                    "name": "DropletS2VCPU4GB-INTEL",
                    "value": "s-2vcpu-4gb-intel"
                },
                {
                    "name": "DropletS2VCPU4GB120GB-INTEL",
                    "value": "s-2vcpu-4gb-120gb-intel"
                },
                {
                    "name": "DropletS2VCPU8GB-AMD",
                    "value": "s-2vcpu-8gb-amd"
                },
                {
                    "name": "DropletC2",
                    "value": "c-2"
                },
                {
                    "name": "DropletC22VCPU4GB",
                    "value": "c2-2vcpu-4gb"
                },
                {
                    "name": "DropletS2VCPU8GB160GB-INTEL",
                    "value": "s-2vcpu-8gb-160gb-intel"
                },
                {
                    "name": "DropletS4VCPU8GB",
                    "value": "s-4vcpu-8gb"
                },
                {
                    "name": "DropletS4VCPU8GB-AMD",
                    "value": "s-4vcpu-8gb-amd"
                },
                {
                    "name": "DropletS4VCPU8GB-INTEL",
                    "value": "s-4vcpu-8gb-intel"
                },
                {
                    "name": "DropletG2VCPU8GB",
                    "value": "g-2vcpu-8gb"
                },
                {
                    "name": "DropletS4VCPU8GB240GB-INTEL",
                    "value": "s-4vcpu-8gb-240gb-intel"
                },
                {
                    "name": "DropletGD2VCPU8GB",
                    "value": "gd-2vcpu-8gb"
                },
                {
                    "name": "DropletG2VCPU8GB-INTEL",
                    "value": "g-2vcpu-8gb-intel"
                },
                {
                    "name": "DropletGD2VCPU8GB-INTEL",
                    "value": "gd-2vcpu-8gb-intel"
                },
                {
                    "name": "DropletS4VCPU16GB-AMD",
                    "value": "s-4vcpu-16gb-amd"
                },
                {
                    "name": "DropletM2VCPU16GB",
                    "value": "m-2vcpu-16gb"
                },
                {
                    "name": "DropletC4",
                    "value": "c-4"
                },
                {
                    "name": "DropletC24VCPU8GB",
                    "value": "c2-4vcpu-8gb"
                },
                {
                    "name": "DropletS4VCPU16GB320GB-INTEL",
                    "value": "s-4vcpu-16gb-320gb-intel"
                },
                {
                    "name": "DropletS8VCPU16GB",
                    "value": "s-8vcpu-16gb"
                },
                {
                    "name": "DropletM2VCPU16GB-INTEL",
                    "value": "m-2vcpu-16gb-intel"
                },
                {
                    "name": "DropletM32VCPU16GB",
                    "value": "m3-2vcpu-16gb"
                },
                {
                    "name": "DropletC4-INTEL",
                    "value": "c-4-intel"
                },
                {
                    "name": "DropletM32VCPU16GB-INTEL",
                    "value": "m3-2vcpu-16gb-intel"
                },
                {
                    "name": "DropletS8VCPU16GB-AMD",
                    "value": "s-8vcpu-16gb-amd"
                },
                {
                    "name": "DropletS8VCPU16GB-INTEL",
                    "value": "s-8vcpu-16gb-intel"
                },
                {
                    "name": "DropletC24VCPU8GB-INTEL",
                    "value": "c2-4vcpu-8gb-intel"
                },
                {
                    "name": "DropletG4VCPU16GB",
                    "value": "g-4vcpu-16gb"
                },
                {
                    "name": "DropletS8VCPU16GB480GB-INTEL",
                    "value": "s-8vcpu-16gb-480gb-intel"
                },
                {
                    "name": "DropletSO2VCPU16GB-INTEL",
                    "value": "so-2vcpu-16gb-intel"
                },
                {
                    "name": "DropletSO2VCPU16GB",
                    "value": "so-2vcpu-16gb"
                },
                {
                    "name": "DropletM62VCPU16GB",
                    "value": "m6-2vcpu-16gb"
                },
                {
                    "name": "DropletGD4VCPU16GB",
                    "value": "gd-4vcpu-16gb"
                },
                {
                    "name": "DropletSO1_52VCPU16GB-INTEL",
                    "value": "so1_5-2vcpu-16gb-intel"
                },
                {
                    "name": "DropletG4VCPU16GB-INTEL",
                    "value": "g-4vcpu-16gb-intel"
                },
                {
                    "name": "DropletGD4VCPU16GB-INTEL",
                    "value": "gd-4vcpu-16gb-intel"
                },
                {
                    "name": "DropletSO1_52VCPU16GB",
                    "value": "so1_5-2vcpu-16gb"
                },
                {
                    "name": "DropletS8VCPU32GB-AMD",
                    "value": "s-8vcpu-32gb-amd"
                },
                {
                    "name": "DropletM4VCPU32GB",
                    "value": "m-4vcpu-32gb"
                },
                {
                    "name": "DropletC8",
                    "value": "c-8"
                },
                {
                    "name": "DropletC28VCPU16GB",
                    "value": "c2-8vcpu-16gb"
                },
                {
                    "name": "DropletS8VCPU32GB640GB-INTEL",
                    "value": "s-8vcpu-32gb-640gb-intel"
                },
                {
                    "name": "DropletM4VCPU32GB-INTEL",
                    "value": "m-4vcpu-32gb-intel"
                },
                {
                    "name": "DropletM34VCPU32GB",
                    "value": "m3-4vcpu-32gb"
                },
                {
                    "name": "DropletC8-INTEL",
                    "value": "c-8-intel"
                },
                {
                    "name": "DropletM34VCPU32GB-INTEL",
                    "value": "m3-4vcpu-32gb-intel"
                },
                {
                    "name": "DropletC28VCPU16GB-INTEL",
                    "value": "c2-8vcpu-16gb-intel"
                },
                {
                    "name": "DropletG8VCPU32GB",
                    "value": "g-8vcpu-32gb"
                },
                {
                    "name": "DropletSO4VCPU32GB-INTEL",
                    "value": "so-4vcpu-32gb-intel"
                },
                {
                    "name": "DropletSO4VCPU32GB",
                    "value": "so-4vcpu-32gb"
                },
                {
                    "name": "DropletM64VCPU32GB",
                    "value": "m6-4vcpu-32gb"
                },
                {
                    "name": "DropletGD8VCPU32GB",
                    "value": "gd-8vcpu-32gb"
                },
                {
                    "name": "DropletSO1_54VCPU32GB-INTEL",
                    "value": "so1_5-4vcpu-32gb-intel"
                },
                {
                    "name": "DropletG8VCPU32GB-INTEL",
                    "value": "g-8vcpu-32gb-intel"
                },
                {
                    "name": "DropletGD8VCPU32GB-INTEL",
                    "value": "gd-8vcpu-32gb-intel"
                },
                {
                    "name": "DropletSO1_54VCPU32GB",
                    "value": "so1_5-4vcpu-32gb"
                },
                {
                    "name": "DropletM8VCPU64GB",
                    "value": "m-8vcpu-64gb"
                },
                {
                    "name": "DropletC16",
                    "value": "c-16"
                },
                {
                    "name": "DropletC216VCPU32GB",
                    "value": "c2-16vcpu-32gb"
                },
                {
                    "name": "DropletM8VCPU64GB-INTEL",
                    "value": "m-8vcpu-64gb-intel"
                },
                {
                    "name": "DropletM38VCPU64GB",
                    "value": "m3-8vcpu-64gb"
                },
                {
                    "name": "DropletC16-INTEL",
                    "value": "c-16-intel"
                },
                {
                    "name": "DropletM38VCPU64GB-INTEL",
                    "value": "m3-8vcpu-64gb-intel"
                },
                {
                    "name": "DropletC216VCPU32GB-INTEL",
                    "value": "c2-16vcpu-32gb-intel"
                },
                {
                    "name": "DropletG16VCPU64GB",
                    "value": "g-16vcpu-64gb"
                },
                {
                    "name": "DropletSO8VCPU64GB-INTEL",
                    "value": "so-8vcpu-64gb-intel"
                },
                {
                    "name": "DropletSO8VCPU64GB",
                    "value": "so-8vcpu-64gb"
                },
                {
                    "name": "DropletM68VCPU64GB",
                    "value": "m6-8vcpu-64gb"
                },
                {
                    "name": "DropletGD16VCPU64GB",
                    "value": "gd-16vcpu-64gb"
                },
                {
                    "name": "DropletSO1_58VCPU64GB-INTEL",
                    "value": "so1_5-8vcpu-64gb-intel"
                },
                {
                    "name": "DropletG16VCPU64GB-INTEL",
                    "value": "g-16vcpu-64gb-intel"
                },
                {
                    "name": "DropletGD16VCPU64GB-INTEL",
                    "value": "gd-16vcpu-64gb-intel"
                },
                {
                    "name": "DropletSO1_58VCPU64GB",
                    "value": "so1_5-8vcpu-64gb"
                },
                {
                    "name": "DropletM16VCPU128GB",
                    "value": "m-16vcpu-128gb"
                },
                {
                    "name": "DropletC32",
                    "value": "c-32"
                },
                {
                    "name": "DropletC232VCPU64GB",
                    "value": "c2-32vcpu-64gb"
                },
                {
                    "name": "DropletM16VCPU128GB-INTEL",
                    "value": "m-16vcpu-128gb-intel"
                },
                {
                    "name": "DropletM316VCPU128GB",
                    "value": "m3-16vcpu-128gb"
                },
                {
                    "name": "DropletC32-INTEL",
                    "value": "c-32-intel"
                },
                {
                    "name": "DropletM316VCPU128GB-INTEL",
                    "value": "m3-16vcpu-128gb-intel"
                },
                {
                    "name": "DropletC232VCPU64GB-INTEL",
                    "value": "c2-32vcpu-64gb-intel"
                },
                {
                    "name": "DropletC48",
                    "value": "c-48"
                },
                {
                    "name": "DropletM24VCPU192GB",
                    "value": "m-24vcpu-192gb"
                },
                {
                    "name": "DropletG32VCPU128GB",
                    "value": "g-32vcpu-128gb"
                },
                {
                    "name": "DropletSO16VCPU128GB-INTEL",
                    "value": "so-16vcpu-128gb-intel"
                },
                {
                    "name": "DropletSO16VCPU128GB",
                    "value": "so-16vcpu-128gb"
                },
                {
                    "name": "DropletM616VCPU128GB",
                    "value": "m6-16vcpu-128gb"
                },
                {
                    "name": "DropletGD32VCPU128GB",
                    "value": "gd-32vcpu-128gb"
                },
                {
                    "name": "DropletSO1_516VCPU128GB-INTEL",
                    "value": "so1_5-16vcpu-128gb-intel"
                },
                {
                    "name": "DropletC248VCPU96GB",
                    "value": "c2-48vcpu-96gb"
                },
                {
                    "name": "DropletM24VCPU192GB-INTEL",
                    "value": "m-24vcpu-192gb-intel"
                },
                {
                    "name": "DropletG32VCPU128GB-INTEL",
                    "value": "g-32vcpu-128gb-intel"
                },
                {
                    "name": "DropletM324VCPU192GB",
                    "value": "m3-24vcpu-192gb"
                },
                {
                    "name": "DropletG40VCPU160GB",
                    "value": "g-40vcpu-160gb"
                },
                {
                    "name": "DropletGD32VCPU128GB-INTEL",
                    "value": "gd-32vcpu-128gb-intel"
                },
                {
                    "name": "DropletSO1_516VCPU128GB",
                    "value": "so1_5-16vcpu-128gb"
                },
                {
                    "name": "DropletC48-INTEL",
                    "value": "c-48-intel"
                },
                {
                    "name": "DropletM324VCPU192GB-INTEL",
                    "value": "m3-24vcpu-192gb-intel"
                },
                {
                    "name": "DropletM32VCPU256GB",
                    "value": "m-32vcpu-256gb"
                },
                {
                    "name": "DropletGD40VCPU160GB",
                    "value": "gd-40vcpu-160gb"
                },
                {
                    "name": "DropletC248VCPU96GB-INTEL",
                    "value": "c2-48vcpu-96gb-intel"
                },
                {
                    "name": "DropletSO24VCPU192GB-INTEL",
                    "value": "so-24vcpu-192gb-intel"
                },
                {
                    "name": "DropletSO24VCPU192GB",
                    "value": "so-24vcpu-192gb"
                },
                {
                    "name": "DropletM624VCPU192GB",
                    "value": "m6-24vcpu-192gb"
                },
                {
                    "name": "DropletM32VCPU256GB-INTEL",
                    "value": "m-32vcpu-256gb-intel"
                },
                {
                    "name": "DropletC60-INTEL",
                    "value": "c-60-intel"
                },
                {
                    "name": "DropletM332VCPU256GB",
                    "value": "m3-32vcpu-256gb"
                },
                {
                    "name": "DropletSO1_524VCPU192GB-INTEL",
                    "value": "so1_5-24vcpu-192gb-intel"
                },
                {
                    "name": "DropletM332VCPU256GB-INTEL",
                    "value": "m3-32vcpu-256gb-intel"
                },
                {
                    "name": "DropletG48VCPU192GB-INTEL",
                    "value": "g-48vcpu-192gb-intel"
                },
                {
                    "name": "DropletC260VCPU120GB-INTEL",
                    "value": "c2-60vcpu-120gb-intel"
                },
                {
                    "name": "DropletGD48VCPU192GB-INTEL",
                    "value": "gd-48vcpu-192gb-intel"
                },
                {
                    "name": "DropletSO1_524VCPU192GB",
                    "value": "so1_5-24vcpu-192gb"
                },
                {
                    "name": "DropletSO32VCPU256GB-INTEL",
                    "value": "so-32vcpu-256gb-intel"
                },
                {
                    "name": "DropletSO32VCPU256GB",
                    "value": "so-32vcpu-256gb"
                },
                {
                    "name": "DropletM632VCPU256GB",
                    "value": "m6-32vcpu-256gb"
                },
                {
                    "name": "DropletSO1_532VCPU256GB-INTEL",
                    "value": "so1_5-32vcpu-256gb-intel"
                },
                {
                    "name": "DropletG60VCPU240GB-INTEL",
                    "value": "g-60vcpu-240gb-intel"
                },
                {
                    "name": "DropletM48VCPU384GB-INTEL",
                    "value": "m-48vcpu-384gb-intel"
                },
                {
                    "name": "DropletGD60VCPU240GB-INTEL",
                    "value": "gd-60vcpu-240gb-intel"
                },
                {
                    "name": "DropletGPUH100X180GB",
                    "value": "gpu-h100x1-80gb"
                },
                {
                    "name": "DropletSO1_532VCPU256GB",
                    "value": "so1_5-32vcpu-256gb"
                },
                {
                    "name": "DropletM348VCPU384GB-INTEL",
                    "value": "m3-48vcpu-384gb-intel"
                },
                {
                    "name": "DropletSO48VCPU384GB-INTEL",
                    "value": "so-48vcpu-384gb-intel"
                },
                {
                    "name": "DropletGPUH100X180GB200",
                    "value": "gpu-h100x1-80gb-200"
                },
                {
                    "name": "DropletGPUH100X8640GB",
                    "value": "gpu-h100x8-640gb"
                },
                {
                    "name": "DropletGPUH100X8640GB200",
                    "value": "gpu-h100x8-640gb-200"
                },
                {
                    "name": "Droplet16GB",
                    "value": "16gb"
                },
                {
                    "name": "Droplet1GB",
                    "value": "1gb"
                },
                {
                    "name": "Droplet2GB",
                    "value": "2gb"
                },
                {
                    "name": "Droplet32GB",
                    "value": "32gb"
                },
                {
                    "name": "Droplet48GB",
                    "value": "48gb"
                },
                {
                    "name": "Droplet4GB",
                    "value": "4gb"
                },
                {
                    "name": "Droplet512mb",
                    "value": "512mb"
                },
                {
                    "name": "Droplet64GB",
                    "value": "64gb"
                },
                {
                    "name": "Droplet8GB",
                    "value": "8gb"
                },
                {
                    "name": "DropletC22VCPU8GB",
                    "value": "c2-4vcpu-8gb"
                },
                {
                    "name": "DropletS12VCPU48GB",
                    "value": "s-12vcpu-48gb"
                },
                {
                    "name": "DropletS16VCPU64GB",
                    "value": "s-16vcpu-64gb"
                },
                {
                    "name": "DropletS1VCPU3GB",
                    "value": "s-1vcpu-3gb"
                },
                {
                    "name": "DropletS20VCPU96GB",
                    "value": "s-20vcpu-96gb"
                },
                {
                    "name": "DropletS24VCPU128GB",
                    "value": "s-24vcpu-128gb"
                },
                {
                    "name": "DropletS32VCPU192GB",
                    "value": "s-32vcpu-192gb"
                },
                {
                    "name": "DropletS3VCPU1GB",
                    "value": "s-3vcpu-1gb"
                },
                {
                    "name": "DropletS6VCPU16GB",
                    "value": "s-6vcpu-16gb"
                },
                {
                    "name": "DropletS8VCPU32GB",
                    "value": "s-8vcpu-32gb"
                },
                {
                    "name": "DropletSO1516VCPU128GB",
                    "value": "so1_5-16vcpu-128gb"
                },
                {
                    "name": "DropletSO1524VCPU192GB",
                    "value": "so1_5-24vcpu-192gb"
                },
                {
                    "name": "DropletSO152VCPU16GB",
                    "value": "so1_5-2vcpu-16gb"
                },
                {
                    "name": "DropletSO1532VCPU256GB",
                    "value": "so1_5-32vcpu-256gb"
                },
                {
                    "name": "DropletSO154VCPU32GB",
                    "value": "so1_5-4vcpu-32gb"
                },
                {
                    "name": "DropletSO158VCPU64GB",
                    "value": "so1_5-8vcpu-64gb"
                }
            ]
        },
        "digitalocean:index:FileSystemType": {
            "type": "string",
            "enum": [
                {
                    "name": "EXT4",
                    "value": "ext4"
                },
                {
                    "name": "XFS",
                    "value": "xfs"
                }
            ]
        },
        "digitalocean:index:Protocol": {
            "type": "string",
            "enum": [
                {
                    "name": "TCP",
                    "value": "tcp"
                },
                {
                    "name": "UDP",
                    "value": "udp"
                },
                {
                    "name": "ICMP",
                    "value": "icmp"
                },
                {
                    "name": "HTTP",
                    "value": "http"
                },
                {
                    "name": "HTTPS",
                    "value": "https"
                }
            ]
        },
        "digitalocean:index:RecordType": {
            "type": "string",
            "enum": [
                {
                    "name": "A",
                    "value": "A"
                },
                {
                    "name": "AAAA",
                    "value": "AAAA"
                },
                {
                    "name": "CAA",
                    "value": "CAA"
                },
                {
                    "name": "CNAME",
                    "value": "CNAME"
                },
                {
                    "name": "MX",
                    "value": "MX"
                },
                {
                    "name": "NS",
                    "value": "NS"
                },
                {
                    "name": "TXT",
                    "value": "TXT"
                },
                {
                    "name": "SRV",
                    "value": "SRV"
                }
            ]
        },
        "digitalocean:index:Region": {
            "type": "string",
            "enum": [
                {
                    "name": "NYC1",
                    "value": "nyc1"
                },
                {
                    "name": "NYC2",
                    "value": "nyc2"
                },
                {
                    "name": "NYC3",
                    "value": "nyc3"
                },
                {
                    "name": "SGP1",
                    "value": "sgp1"
                },
                {
                    "name": "LON1",
                    "value": "lon1"
                },
                {
                    "name": "AMS2",
                    "value": "ams2"
                },
                {
                    "name": "AMS3",
                    "value": "ams3"
                },
                {
                    "name": "FRA1",
                    "value": "fra1"
                },
                {
                    "name": "TOR1",
                    "value": "tor1"
                },
                {
                    "name": "SFO1",
                    "value": "sfo1"
                },
                {
                    "name": "SFO2",
                    "value": "sfo2"
                },
                {
                    "name": "SFO3",
                    "value": "sfo3"
                },
                {
                    "name": "BLR1",
                    "value": "blr1"
                },
                {
                    "name": "SYD1",
                    "value": "syd1"
                }
            ]
        }
    },
    "provider": {
        "description": "The provider type for the digitalocean 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": {
            "apiEndpoint": {
                "type": "string",
                "description": "The URL to use for the DigitalOcean API."
            },
            "httpRetryMax": {
                "type": "integer",
                "description": "The maximum number of retries on a failed API request."
            },
            "httpRetryWaitMax": {
                "type": "number",
                "description": "The maximum wait time (in seconds) between failed API requests."
            },
            "httpRetryWaitMin": {
                "type": "number",
                "description": "The minimum wait time (in seconds) between failed API requests."
            },
            "requestsPerSecond": {
                "type": "number",
                "description": "The rate of requests per second to limit the HTTP client."
            },
            "spacesAccessId": {
                "type": "string",
                "description": "The access key ID for Spaces API operations."
            },
            "spacesEndpoint": {
                "type": "string",
                "description": "The URL to use for the DigitalOcean Spaces API."
            },
            "spacesSecretKey": {
                "type": "string",
                "description": "The secret access key for Spaces API operations."
            },
            "token": {
                "type": "string",
                "description": "The token key for API operations."
            }
        },
        "inputProperties": {
            "apiEndpoint": {
                "type": "string",
                "description": "The URL to use for the DigitalOcean API.",
                "default": "https://api.digitalocean.com",
                "defaultInfo": {
                    "environment": [
                        "DIGITALOCEAN_API_URL"
                    ]
                }
            },
            "httpRetryMax": {
                "type": "integer",
                "description": "The maximum number of retries on a failed API request."
            },
            "httpRetryWaitMax": {
                "type": "number",
                "description": "The maximum wait time (in seconds) between failed API requests."
            },
            "httpRetryWaitMin": {
                "type": "number",
                "description": "The minimum wait time (in seconds) between failed API requests."
            },
            "requestsPerSecond": {
                "type": "number",
                "description": "The rate of requests per second to limit the HTTP client."
            },
            "spacesAccessId": {
                "type": "string",
                "description": "The access key ID for Spaces API operations."
            },
            "spacesEndpoint": {
                "type": "string",
                "description": "The URL to use for the DigitalOcean Spaces API.",
                "defaultInfo": {
                    "environment": [
                        "SPACES_ENDPOINT_URL"
                    ]
                }
            },
            "spacesSecretKey": {
                "type": "string",
                "description": "The secret access key for Spaces API operations."
            },
            "token": {
                "type": "string",
                "description": "The token key for API operations."
            }
        },
        "methods": {
            "terraformConfig": "pulumi:providers:digitalocean/terraformConfig"
        }
    },
    "resources": {
        "digitalocean:index/app:App": {
            "description": "Provides a DigitalOcean App resource.\n\n## Example Usage\n\nTo create an app, provide a [DigitalOcean app spec](https://docs.digitalocean.com/products/app-platform/reference/app-spec/) specifying the app's components.\n\n### Basic Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst golang_sample = new digitalocean.App(\"golang-sample\", {spec: {\n    name: \"golang-sample\",\n    region: \"ams\",\n    services: [{\n        name: \"go-service\",\n        instanceCount: 1,\n        instanceSizeSlug: \"apps-s-1vcpu-1gb\",\n        git: {\n            repoCloneUrl: \"https://github.com/digitalocean/sample-golang.git\",\n            branch: \"main\",\n        },\n    }],\n}});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ngolang_sample = digitalocean.App(\"golang-sample\", spec={\n    \"name\": \"golang-sample\",\n    \"region\": \"ams\",\n    \"services\": [{\n        \"name\": \"go-service\",\n        \"instance_count\": 1,\n        \"instance_size_slug\": \"apps-s-1vcpu-1gb\",\n        \"git\": {\n            \"repo_clone_url\": \"https://github.com/digitalocean/sample-golang.git\",\n            \"branch\": \"main\",\n        },\n    }],\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var golang_sample = new DigitalOcean.App(\"golang-sample\", new()\n    {\n        Spec = new DigitalOcean.Inputs.AppSpecArgs\n        {\n            Name = \"golang-sample\",\n            Region = \"ams\",\n            Services = new[]\n            {\n                new DigitalOcean.Inputs.AppSpecServiceArgs\n                {\n                    Name = \"go-service\",\n                    InstanceCount = 1,\n                    InstanceSizeSlug = \"apps-s-1vcpu-1gb\",\n                    Git = new DigitalOcean.Inputs.AppSpecServiceGitArgs\n                    {\n                        RepoCloneUrl = \"https://github.com/digitalocean/sample-golang.git\",\n                        Branch = \"main\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewApp(ctx, \"golang-sample\", \u0026digitalocean.AppArgs{\n\t\t\tSpec: \u0026digitalocean.AppSpecArgs{\n\t\t\t\tName:   pulumi.String(\"golang-sample\"),\n\t\t\t\tRegion: pulumi.String(\"ams\"),\n\t\t\t\tServices: digitalocean.AppSpecServiceArray{\n\t\t\t\t\t\u0026digitalocean.AppSpecServiceArgs{\n\t\t\t\t\t\tName:             pulumi.String(\"go-service\"),\n\t\t\t\t\t\tInstanceCount:    pulumi.Int(1),\n\t\t\t\t\t\tInstanceSizeSlug: pulumi.String(\"apps-s-1vcpu-1gb\"),\n\t\t\t\t\t\tGit: \u0026digitalocean.AppSpecServiceGitArgs{\n\t\t\t\t\t\t\tRepoCloneUrl: pulumi.String(\"https://github.com/digitalocean/sample-golang.git\"),\n\t\t\t\t\t\t\tBranch:       pulumi.String(\"main\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.App;\nimport com.pulumi.digitalocean.AppArgs;\nimport com.pulumi.digitalocean.inputs.AppSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var golang_sample = new App(\"golang-sample\", AppArgs.builder()\n            .spec(AppSpecArgs.builder()\n                .name(\"golang-sample\")\n                .region(\"ams\")\n                .services(AppSpecServiceArgs.builder()\n                    .name(\"go-service\")\n                    .instanceCount(1)\n                    .instanceSizeSlug(\"apps-s-1vcpu-1gb\")\n                    .git(AppSpecServiceGitArgs.builder()\n                        .repoCloneUrl(\"https://github.com/digitalocean/sample-golang.git\")\n                        .branch(\"main\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  golang-sample:\n    type: digitalocean:App\n    properties:\n      spec:\n        name: golang-sample\n        region: ams\n        services:\n          - name: go-service\n            instanceCount: 1\n            instanceSizeSlug: apps-s-1vcpu-1gb\n            git:\n              repoCloneUrl: https://github.com/digitalocean/sample-golang.git\n              branch: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Static Site Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst static_site_example = new digitalocean.App(\"static-site-example\", {spec: {\n    name: \"static-site-example\",\n    region: \"ams\",\n    staticSites: [{\n        name: \"sample-jekyll\",\n        buildCommand: \"bundle exec jekyll build -d ./public\",\n        outputDir: \"/public\",\n        git: {\n            repoCloneUrl: \"https://github.com/digitalocean/sample-jekyll.git\",\n            branch: \"main\",\n        },\n    }],\n}});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstatic_site_example = digitalocean.App(\"static-site-example\", spec={\n    \"name\": \"static-site-example\",\n    \"region\": \"ams\",\n    \"static_sites\": [{\n        \"name\": \"sample-jekyll\",\n        \"build_command\": \"bundle exec jekyll build -d ./public\",\n        \"output_dir\": \"/public\",\n        \"git\": {\n            \"repo_clone_url\": \"https://github.com/digitalocean/sample-jekyll.git\",\n            \"branch\": \"main\",\n        },\n    }],\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var static_site_example = new DigitalOcean.App(\"static-site-example\", new()\n    {\n        Spec = new DigitalOcean.Inputs.AppSpecArgs\n        {\n            Name = \"static-site-example\",\n            Region = \"ams\",\n            StaticSites = new[]\n            {\n                new DigitalOcean.Inputs.AppSpecStaticSiteArgs\n                {\n                    Name = \"sample-jekyll\",\n                    BuildCommand = \"bundle exec jekyll build -d ./public\",\n                    OutputDir = \"/public\",\n                    Git = new DigitalOcean.Inputs.AppSpecStaticSiteGitArgs\n                    {\n                        RepoCloneUrl = \"https://github.com/digitalocean/sample-jekyll.git\",\n                        Branch = \"main\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewApp(ctx, \"static-site-example\", \u0026digitalocean.AppArgs{\n\t\t\tSpec: \u0026digitalocean.AppSpecArgs{\n\t\t\t\tName:   pulumi.String(\"static-site-example\"),\n\t\t\t\tRegion: pulumi.String(\"ams\"),\n\t\t\t\tStaticSites: digitalocean.AppSpecStaticSiteArray{\n\t\t\t\t\t\u0026digitalocean.AppSpecStaticSiteArgs{\n\t\t\t\t\t\tName:         pulumi.String(\"sample-jekyll\"),\n\t\t\t\t\t\tBuildCommand: pulumi.String(\"bundle exec jekyll build -d ./public\"),\n\t\t\t\t\t\tOutputDir:    pulumi.String(\"/public\"),\n\t\t\t\t\t\tGit: \u0026digitalocean.AppSpecStaticSiteGitArgs{\n\t\t\t\t\t\t\tRepoCloneUrl: pulumi.String(\"https://github.com/digitalocean/sample-jekyll.git\"),\n\t\t\t\t\t\t\tBranch:       pulumi.String(\"main\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.App;\nimport com.pulumi.digitalocean.AppArgs;\nimport com.pulumi.digitalocean.inputs.AppSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var static_site_example = new App(\"static-site-example\", AppArgs.builder()\n            .spec(AppSpecArgs.builder()\n                .name(\"static-site-example\")\n                .region(\"ams\")\n                .staticSites(AppSpecStaticSiteArgs.builder()\n                    .name(\"sample-jekyll\")\n                    .buildCommand(\"bundle exec jekyll build -d ./public\")\n                    .outputDir(\"/public\")\n                    .git(AppSpecStaticSiteGitArgs.builder()\n                        .repoCloneUrl(\"https://github.com/digitalocean/sample-jekyll.git\")\n                        .branch(\"main\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  static-site-example:\n    type: digitalocean:App\n    properties:\n      spec:\n        name: static-site-example\n        region: ams\n        staticSites:\n          - name: sample-jekyll\n            buildCommand: bundle exec jekyll build -d ./public\n            outputDir: /public\n            git:\n              repoCloneUrl: https://github.com/digitalocean/sample-jekyll.git\n              branch: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Multiple Components Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n  mono-repo-example:\n    type: digitalocean:App\n    properties:\n      spec:\n        name: mono-repo-example\n        region: ams\n        domains:\n          - name: foo.example.com\n        alerts:\n          - rule: DEPLOYMENT_FAILED\n            destinations:\n              emails:\n                - team.member1@org.com\n                - team.member2@org.com\n              slackWebhooks:\n                - channel: '@user1'\n                  url: https://hooks.slack.com/slack-url\n        services:\n          - name: go-api\n            instanceCount: 2\n            instanceSizeSlug: apps-s-1vcpu-1gb\n            github:\n              branch: main\n              deployOnPush: true\n              repo: username/repo\n            sourceDir: api/\n            httpPort: 3000\n            alerts:\n              - value: 75\n                operator: GREATER_THAN\n                window: TEN_MINUTES\n                rule: CPU_UTILIZATION\n                destinations:\n                  emails:\n                    - team.member1@org.com\n                    - team.member2@org.com\n                  slackWebhooks:\n                    - channel: '@user1'\n                      url: https://hooks.slack.com/slack-url\n            logDestinations:\n              - name: MyLogs\n                papertrail:\n                  endpoint: syslog+tls://example.com:12345\n            runCommand: bin/api\n        staticSites:\n          - name: web\n            buildCommand: npm run build\n            bitbucket:\n              branch: main\n              deployOnPush: true\n              repo: username/repo\n        databases:\n          - name: starter-db\n            engine: PG\n            production: false\n        ingress:\n          rules:\n            - component:\n                name: api\n              match:\n                path:\n                  prefix: /api\n            - component:\n                name: web\n              match:\n                path:\n                  prefix: /\n        vpcs:\n          - id: c22d8f48-4bc4-49f5-8ca0-58e7164427ac\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Log Destination Example with Opensearch\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst golang_sample = new digitalocean.App(\"golang-sample\", {spec: {\n    name: \"golang-sample\",\n    region: \"ams\",\n    services: [{\n        name: \"go-service\",\n        instanceCount: 1,\n        instanceSizeSlug: \"apps-s-1vcpu-1gb\",\n        git: {\n            repoCloneUrl: \"https://github.com/digitalocean/sample-golang.git\",\n            branch: \"main\",\n        },\n        logDestinations: [{\n            name: \"MyLogs\",\n            openSearch: {\n                endpoint: \"https://something:1234\",\n                basicAuth: {\n                    user: \"user\",\n                    password: \"hi\",\n                },\n            },\n        }],\n    }],\n}});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ngolang_sample = digitalocean.App(\"golang-sample\", spec={\n    \"name\": \"golang-sample\",\n    \"region\": \"ams\",\n    \"services\": [{\n        \"name\": \"go-service\",\n        \"instance_count\": 1,\n        \"instance_size_slug\": \"apps-s-1vcpu-1gb\",\n        \"git\": {\n            \"repo_clone_url\": \"https://github.com/digitalocean/sample-golang.git\",\n            \"branch\": \"main\",\n        },\n        \"log_destinations\": [{\n            \"name\": \"MyLogs\",\n            \"open_search\": {\n                \"endpoint\": \"https://something:1234\",\n                \"basic_auth\": {\n                    \"user\": \"user\",\n                    \"password\": \"hi\",\n                },\n            },\n        }],\n    }],\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var golang_sample = new DigitalOcean.App(\"golang-sample\", new()\n    {\n        Spec = new DigitalOcean.Inputs.AppSpecArgs\n        {\n            Name = \"golang-sample\",\n            Region = \"ams\",\n            Services = new[]\n            {\n                new DigitalOcean.Inputs.AppSpecServiceArgs\n                {\n                    Name = \"go-service\",\n                    InstanceCount = 1,\n                    InstanceSizeSlug = \"apps-s-1vcpu-1gb\",\n                    Git = new DigitalOcean.Inputs.AppSpecServiceGitArgs\n                    {\n                        RepoCloneUrl = \"https://github.com/digitalocean/sample-golang.git\",\n                        Branch = \"main\",\n                    },\n                    LogDestinations = new[]\n                    {\n                        new DigitalOcean.Inputs.AppSpecServiceLogDestinationArgs\n                        {\n                            Name = \"MyLogs\",\n                            OpenSearch = new DigitalOcean.Inputs.AppSpecServiceLogDestinationOpenSearchArgs\n                            {\n                                Endpoint = \"https://something:1234\",\n                                BasicAuth = new DigitalOcean.Inputs.AppSpecServiceLogDestinationOpenSearchBasicAuthArgs\n                                {\n                                    User = \"user\",\n                                    Password = \"hi\",\n                                },\n                            },\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewApp(ctx, \"golang-sample\", \u0026digitalocean.AppArgs{\n\t\t\tSpec: \u0026digitalocean.AppSpecArgs{\n\t\t\t\tName:   pulumi.String(\"golang-sample\"),\n\t\t\t\tRegion: pulumi.String(\"ams\"),\n\t\t\t\tServices: digitalocean.AppSpecServiceArray{\n\t\t\t\t\t\u0026digitalocean.AppSpecServiceArgs{\n\t\t\t\t\t\tName:             pulumi.String(\"go-service\"),\n\t\t\t\t\t\tInstanceCount:    pulumi.Int(1),\n\t\t\t\t\t\tInstanceSizeSlug: pulumi.String(\"apps-s-1vcpu-1gb\"),\n\t\t\t\t\t\tGit: \u0026digitalocean.AppSpecServiceGitArgs{\n\t\t\t\t\t\t\tRepoCloneUrl: pulumi.String(\"https://github.com/digitalocean/sample-golang.git\"),\n\t\t\t\t\t\t\tBranch:       pulumi.String(\"main\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLogDestinations: digitalocean.AppSpecServiceLogDestinationArray{\n\t\t\t\t\t\t\t\u0026digitalocean.AppSpecServiceLogDestinationArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MyLogs\"),\n\t\t\t\t\t\t\t\tOpenSearch: \u0026digitalocean.AppSpecServiceLogDestinationOpenSearchArgs{\n\t\t\t\t\t\t\t\t\tEndpoint: pulumi.String(\"https://something:1234\"),\n\t\t\t\t\t\t\t\t\tBasicAuth: \u0026digitalocean.AppSpecServiceLogDestinationOpenSearchBasicAuthArgs{\n\t\t\t\t\t\t\t\t\t\tUser:     pulumi.String(\"user\"),\n\t\t\t\t\t\t\t\t\t\tPassword: pulumi.String(\"hi\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.App;\nimport com.pulumi.digitalocean.AppArgs;\nimport com.pulumi.digitalocean.inputs.AppSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var golang_sample = new App(\"golang-sample\", AppArgs.builder()\n            .spec(AppSpecArgs.builder()\n                .name(\"golang-sample\")\n                .region(\"ams\")\n                .services(AppSpecServiceArgs.builder()\n                    .name(\"go-service\")\n                    .instanceCount(1)\n                    .instanceSizeSlug(\"apps-s-1vcpu-1gb\")\n                    .git(AppSpecServiceGitArgs.builder()\n                        .repoCloneUrl(\"https://github.com/digitalocean/sample-golang.git\")\n                        .branch(\"main\")\n                        .build())\n                    .logDestinations(AppSpecServiceLogDestinationArgs.builder()\n                        .name(\"MyLogs\")\n                        .openSearch(AppSpecServiceLogDestinationOpenSearchArgs.builder()\n                            .endpoint(\"https://something:1234\")\n                            .basicAuth(AppSpecServiceLogDestinationOpenSearchBasicAuthArgs.builder()\n                                .user(\"user\")\n                                .password(\"hi\")\n                                .build())\n                            .build())\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  golang-sample:\n    type: digitalocean:App\n    properties:\n      spec:\n        name: golang-sample\n        region: ams\n        services:\n          - name: go-service\n            instanceCount: 1\n            instanceSizeSlug: apps-s-1vcpu-1gb\n            git:\n              repoCloneUrl: https://github.com/digitalocean/sample-golang.git\n              branch: main\n            logDestinations:\n              - name: MyLogs\n                openSearch:\n                  endpoint: https://something:1234\n                  basicAuth:\n                    user: user\n                    password: hi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Edge Controls Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst golang_sample = new digitalocean.App(\"golang-sample\", {spec: {\n    name: \"golang-sample\",\n    region: \"ams\",\n    disableEdgeCache: true,\n    disableEmailObfuscation: false,\n    enhancedThreatControlEnabled: true,\n    services: [{\n        name: \"go-service\",\n        instanceCount: 1,\n        instanceSizeSlug: \"apps-s-1vcpu-1gb\",\n        git: {\n            repoCloneUrl: \"https://github.com/digitalocean/sample-golang.git\",\n            branch: \"main\",\n        },\n    }],\n}});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ngolang_sample = digitalocean.App(\"golang-sample\", spec={\n    \"name\": \"golang-sample\",\n    \"region\": \"ams\",\n    \"disable_edge_cache\": True,\n    \"disable_email_obfuscation\": False,\n    \"enhanced_threat_control_enabled\": True,\n    \"services\": [{\n        \"name\": \"go-service\",\n        \"instance_count\": 1,\n        \"instance_size_slug\": \"apps-s-1vcpu-1gb\",\n        \"git\": {\n            \"repo_clone_url\": \"https://github.com/digitalocean/sample-golang.git\",\n            \"branch\": \"main\",\n        },\n    }],\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var golang_sample = new DigitalOcean.App(\"golang-sample\", new()\n    {\n        Spec = new DigitalOcean.Inputs.AppSpecArgs\n        {\n            Name = \"golang-sample\",\n            Region = \"ams\",\n            DisableEdgeCache = true,\n            DisableEmailObfuscation = false,\n            EnhancedThreatControlEnabled = true,\n            Services = new[]\n            {\n                new DigitalOcean.Inputs.AppSpecServiceArgs\n                {\n                    Name = \"go-service\",\n                    InstanceCount = 1,\n                    InstanceSizeSlug = \"apps-s-1vcpu-1gb\",\n                    Git = new DigitalOcean.Inputs.AppSpecServiceGitArgs\n                    {\n                        RepoCloneUrl = \"https://github.com/digitalocean/sample-golang.git\",\n                        Branch = \"main\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewApp(ctx, \"golang-sample\", \u0026digitalocean.AppArgs{\n\t\t\tSpec: \u0026digitalocean.AppSpecArgs{\n\t\t\t\tName:                         pulumi.String(\"golang-sample\"),\n\t\t\t\tRegion:                       pulumi.String(\"ams\"),\n\t\t\t\tDisableEdgeCache:             pulumi.Bool(true),\n\t\t\t\tDisableEmailObfuscation:      pulumi.Bool(false),\n\t\t\t\tEnhancedThreatControlEnabled: pulumi.Bool(true),\n\t\t\t\tServices: digitalocean.AppSpecServiceArray{\n\t\t\t\t\t\u0026digitalocean.AppSpecServiceArgs{\n\t\t\t\t\t\tName:             pulumi.String(\"go-service\"),\n\t\t\t\t\t\tInstanceCount:    pulumi.Int(1),\n\t\t\t\t\t\tInstanceSizeSlug: pulumi.String(\"apps-s-1vcpu-1gb\"),\n\t\t\t\t\t\tGit: \u0026digitalocean.AppSpecServiceGitArgs{\n\t\t\t\t\t\t\tRepoCloneUrl: pulumi.String(\"https://github.com/digitalocean/sample-golang.git\"),\n\t\t\t\t\t\t\tBranch:       pulumi.String(\"main\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.App;\nimport com.pulumi.digitalocean.AppArgs;\nimport com.pulumi.digitalocean.inputs.AppSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var golang_sample = new App(\"golang-sample\", AppArgs.builder()\n            .spec(AppSpecArgs.builder()\n                .name(\"golang-sample\")\n                .region(\"ams\")\n                .disableEdgeCache(true)\n                .disableEmailObfuscation(false)\n                .enhancedThreatControlEnabled(true)\n                .services(AppSpecServiceArgs.builder()\n                    .name(\"go-service\")\n                    .instanceCount(1)\n                    .instanceSizeSlug(\"apps-s-1vcpu-1gb\")\n                    .git(AppSpecServiceGitArgs.builder()\n                        .repoCloneUrl(\"https://github.com/digitalocean/sample-golang.git\")\n                        .branch(\"main\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  golang-sample:\n    type: digitalocean:App\n    properties:\n      spec:\n        name: golang-sample\n        region: ams\n        disableEdgeCache: true\n        disableEmailObfuscation: false\n        enhancedThreatControlEnabled: true\n        services:\n          - name: go-service\n            instanceCount: 1\n            instanceSizeSlug: apps-s-1vcpu-1gb\n            git:\n              repoCloneUrl: https://github.com/digitalocean/sample-golang.git\n              branch: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Maintenance Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst maintenance_example = new digitalocean.App(\"maintenance-example\", {spec: {\n    name: \"maintenance-example\",\n    region: \"ams\",\n    maintenance: {\n        enabled: true,\n        offlinePageUrl: \"https://example.com/maintenance.html\",\n    },\n    services: [{\n        name: \"go-service\",\n        instanceCount: 1,\n        instanceSizeSlug: \"apps-s-1vcpu-1gb\",\n        git: {\n            repoCloneUrl: \"https://github.com/digitalocean/sample-golang.git\",\n            branch: \"main\",\n        },\n    }],\n}});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmaintenance_example = digitalocean.App(\"maintenance-example\", spec={\n    \"name\": \"maintenance-example\",\n    \"region\": \"ams\",\n    \"maintenance\": {\n        \"enabled\": True,\n        \"offline_page_url\": \"https://example.com/maintenance.html\",\n    },\n    \"services\": [{\n        \"name\": \"go-service\",\n        \"instance_count\": 1,\n        \"instance_size_slug\": \"apps-s-1vcpu-1gb\",\n        \"git\": {\n            \"repo_clone_url\": \"https://github.com/digitalocean/sample-golang.git\",\n            \"branch\": \"main\",\n        },\n    }],\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var maintenance_example = new DigitalOcean.App(\"maintenance-example\", new()\n    {\n        Spec = new DigitalOcean.Inputs.AppSpecArgs\n        {\n            Name = \"maintenance-example\",\n            Region = \"ams\",\n            Maintenance = new DigitalOcean.Inputs.AppSpecMaintenanceArgs\n            {\n                Enabled = true,\n                OfflinePageUrl = \"https://example.com/maintenance.html\",\n            },\n            Services = new[]\n            {\n                new DigitalOcean.Inputs.AppSpecServiceArgs\n                {\n                    Name = \"go-service\",\n                    InstanceCount = 1,\n                    InstanceSizeSlug = \"apps-s-1vcpu-1gb\",\n                    Git = new DigitalOcean.Inputs.AppSpecServiceGitArgs\n                    {\n                        RepoCloneUrl = \"https://github.com/digitalocean/sample-golang.git\",\n                        Branch = \"main\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewApp(ctx, \"maintenance-example\", \u0026digitalocean.AppArgs{\n\t\t\tSpec: \u0026digitalocean.AppSpecArgs{\n\t\t\t\tName:   pulumi.String(\"maintenance-example\"),\n\t\t\t\tRegion: pulumi.String(\"ams\"),\n\t\t\t\tMaintenance: \u0026digitalocean.AppSpecMaintenanceArgs{\n\t\t\t\t\tEnabled:        pulumi.Bool(true),\n\t\t\t\t\tOfflinePageUrl: pulumi.String(\"https://example.com/maintenance.html\"),\n\t\t\t\t},\n\t\t\t\tServices: digitalocean.AppSpecServiceArray{\n\t\t\t\t\t\u0026digitalocean.AppSpecServiceArgs{\n\t\t\t\t\t\tName:             pulumi.String(\"go-service\"),\n\t\t\t\t\t\tInstanceCount:    pulumi.Int(1),\n\t\t\t\t\t\tInstanceSizeSlug: pulumi.String(\"apps-s-1vcpu-1gb\"),\n\t\t\t\t\t\tGit: \u0026digitalocean.AppSpecServiceGitArgs{\n\t\t\t\t\t\t\tRepoCloneUrl: pulumi.String(\"https://github.com/digitalocean/sample-golang.git\"),\n\t\t\t\t\t\t\tBranch:       pulumi.String(\"main\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.App;\nimport com.pulumi.digitalocean.AppArgs;\nimport com.pulumi.digitalocean.inputs.AppSpecArgs;\nimport com.pulumi.digitalocean.inputs.AppSpecMaintenanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var maintenance_example = new App(\"maintenance-example\", AppArgs.builder()\n            .spec(AppSpecArgs.builder()\n                .name(\"maintenance-example\")\n                .region(\"ams\")\n                .maintenance(AppSpecMaintenanceArgs.builder()\n                    .enabled(true)\n                    .offlinePageUrl(\"https://example.com/maintenance.html\")\n                    .build())\n                .services(AppSpecServiceArgs.builder()\n                    .name(\"go-service\")\n                    .instanceCount(1)\n                    .instanceSizeSlug(\"apps-s-1vcpu-1gb\")\n                    .git(AppSpecServiceGitArgs.builder()\n                        .repoCloneUrl(\"https://github.com/digitalocean/sample-golang.git\")\n                        .branch(\"main\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  maintenance-example:\n    type: digitalocean:App\n    properties:\n      spec:\n        name: maintenance-example\n        region: ams\n        maintenance:\n          enabled: true\n          offlinePageUrl: https://example.com/maintenance.html\n        services:\n          - name: go-service\n            instanceCount: 1\n            instanceSizeSlug: apps-s-1vcpu-1gb\n            git:\n              repoCloneUrl: https://github.com/digitalocean/sample-golang.git\n              branch: main\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAn app can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/app:App myapp fb06ad00-351f-45c8-b5eb-13523c438661\n```\n\n",
            "properties": {
                "activeDeploymentId": {
                    "type": "string",
                    "description": "The ID the app's currently active deployment.\n"
                },
                "appUrn": {
                    "type": "string",
                    "description": "The uniform resource identifier for the app.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of when the app was created.\n"
                },
                "dedicatedIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppDedicatedIp:AppDedicatedIp"
                    },
                    "description": "The dedicated egress IP addresses associated with the app."
                },
                "defaultIngress": {
                    "type": "string",
                    "description": "The default URL to access the app.\n"
                },
                "deploymentPerPage": {
                    "type": "integer",
                    "description": "(Optional) Controls how many deployments are requested per API page when listing deployments during create/update waits. Defaults to \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e. Reduce this value (for example \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e) if you experience API timeouts when listing deployments.\n"
                },
                "liveDomain": {
                    "type": "string",
                    "description": "The live domain of the app.\n"
                },
                "liveUrl": {
                    "type": "string",
                    "description": "The live URL of the app.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project that the app is assigned to.\n\nA spec can contain multiple components.\n\nA \u003cspan pulumi-lang-nodejs=\"`service`\" pulumi-lang-dotnet=\"`Service`\" pulumi-lang-go=\"`service`\" pulumi-lang-python=\"`service`\" pulumi-lang-yaml=\"`service`\" pulumi-lang-java=\"`service`\"\u003e`service`\u003c/span\u003e can contain:\n"
                },
                "spec": {
                    "$ref": "#/types/digitalocean:index/AppSpec:AppSpec",
                    "description": "A DigitalOcean App spec describing the app.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time of when the app was last updated.\n"
                }
            },
            "required": [
                "activeDeploymentId",
                "createdAt",
                "dedicatedIps",
                "defaultIngress",
                "liveDomain",
                "liveUrl",
                "projectId",
                "updatedAt",
                "appUrn"
            ],
            "inputProperties": {
                "dedicatedIps": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/AppDedicatedIp:AppDedicatedIp"
                    },
                    "description": "The dedicated egress IP addresses associated with the app."
                },
                "deploymentPerPage": {
                    "type": "integer",
                    "description": "(Optional) Controls how many deployments are requested per API page when listing deployments during create/update waits. Defaults to \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e. Reduce this value (for example \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e) if you experience API timeouts when listing deployments.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project that the app is assigned to.\n\nA spec can contain multiple components.\n\nA \u003cspan pulumi-lang-nodejs=\"`service`\" pulumi-lang-dotnet=\"`Service`\" pulumi-lang-go=\"`service`\" pulumi-lang-python=\"`service`\" pulumi-lang-yaml=\"`service`\" pulumi-lang-java=\"`service`\"\u003e`service`\u003c/span\u003e can contain:\n",
                    "willReplaceOnChanges": true
                },
                "spec": {
                    "$ref": "#/types/digitalocean:index/AppSpec:AppSpec",
                    "description": "A DigitalOcean App spec describing the app.\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering App resources.\n",
                "properties": {
                    "activeDeploymentId": {
                        "type": "string",
                        "description": "The ID the app's currently active deployment.\n"
                    },
                    "appUrn": {
                        "type": "string",
                        "description": "The uniform resource identifier for the app.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of when the app was created.\n"
                    },
                    "dedicatedIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/AppDedicatedIp:AppDedicatedIp"
                        },
                        "description": "The dedicated egress IP addresses associated with the app."
                    },
                    "defaultIngress": {
                        "type": "string",
                        "description": "The default URL to access the app.\n"
                    },
                    "deploymentPerPage": {
                        "type": "integer",
                        "description": "(Optional) Controls how many deployments are requested per API page when listing deployments during create/update waits. Defaults to \u003cspan pulumi-lang-nodejs=\"`20`\" pulumi-lang-dotnet=\"`20`\" pulumi-lang-go=\"`20`\" pulumi-lang-python=\"`20`\" pulumi-lang-yaml=\"`20`\" pulumi-lang-java=\"`20`\"\u003e`20`\u003c/span\u003e. Reduce this value (for example \u003cspan pulumi-lang-nodejs=\"`5`\" pulumi-lang-dotnet=\"`5`\" pulumi-lang-go=\"`5`\" pulumi-lang-python=\"`5`\" pulumi-lang-yaml=\"`5`\" pulumi-lang-java=\"`5`\"\u003e`5`\u003c/span\u003e) if you experience API timeouts when listing deployments.\n"
                    },
                    "liveDomain": {
                        "type": "string",
                        "description": "The live domain of the app.\n"
                    },
                    "liveUrl": {
                        "type": "string",
                        "description": "The live URL of the app.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project that the app is assigned to.\n\nA spec can contain multiple components.\n\nA \u003cspan pulumi-lang-nodejs=\"`service`\" pulumi-lang-dotnet=\"`Service`\" pulumi-lang-go=\"`service`\" pulumi-lang-python=\"`service`\" pulumi-lang-yaml=\"`service`\" pulumi-lang-java=\"`service`\"\u003e`service`\u003c/span\u003e can contain:\n",
                        "willReplaceOnChanges": true
                    },
                    "spec": {
                        "$ref": "#/types/digitalocean:index/AppSpec:AppSpec",
                        "description": "A DigitalOcean App spec describing the app.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time of when the app was last updated.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/byoipPrefix:ByoipPrefix": {
            "description": "Provides a DigitalOcean BYOIP (Bring Your Own IP) prefix resource. This can be used to\ncreate, modify, and delete BYOIP prefixes.\n\nBYOIP prefixes allow you to bring your own IP address space to DigitalOcean. You can\nuse this feature to maintain your IP reputation or meet specific compliance requirements.\n\nBYOIP prefix provisioning documentation: https://docs.digitalocean.com/products/networking/reserved-ips/how-to/provision-byoip/ \n\nNote: By default, newly provisioned BYOIP prefixes are not advertised to the internet. After the initial `pulumi up`, BYOIP provisioning request is initiated and DigitalOcean provisions the prefix, the prefix status changes to Active. At this point, you can initiate advertising prefix to the internet by setting field `advertised = true` and apply the configuration to make your prefix fully usable and accessible from the internet. \n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new BYOIP prefix\nconst example = new digitalocean.ByoipPrefix(\"example\", {\n    prefix: \"192.0.2.0/24\",\n    signature: prefixSignature,\n    region: \"nyc3\",\n    advertised: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new BYOIP prefix\nexample = digitalocean.ByoipPrefix(\"example\",\n    prefix=\"192.0.2.0/24\",\n    signature=prefix_signature,\n    region=\"nyc3\",\n    advertised=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new BYOIP prefix\n    var example = new DigitalOcean.ByoipPrefix(\"example\", new()\n    {\n        Prefix = \"192.0.2.0/24\",\n        Signature = prefixSignature,\n        Region = \"nyc3\",\n        Advertised = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a new BYOIP prefix\n\t\t_, err := digitalocean.NewByoipPrefix(ctx, \"example\", \u0026digitalocean.ByoipPrefixArgs{\n\t\t\tPrefix:     pulumi.String(\"192.0.2.0/24\"),\n\t\t\tSignature:  pulumi.Any(prefixSignature),\n\t\t\tRegion:     pulumi.String(\"nyc3\"),\n\t\t\tAdvertised: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ByoipPrefix;\nimport com.pulumi.digitalocean.ByoipPrefixArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new BYOIP prefix\n        var example = new ByoipPrefix(\"example\", ByoipPrefixArgs.builder()\n            .prefix(\"192.0.2.0/24\")\n            .signature(prefixSignature)\n            .region(\"nyc3\")\n            .advertised(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new BYOIP prefix\n  example:\n    type: digitalocean:ByoipPrefix\n    properties:\n      prefix: 192.0.2.0/24\n      signature: ${prefixSignature}\n      region: nyc3\n      advertised: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBYOIP prefixes can be imported using the prefix \u003cspan pulumi-lang-nodejs=\"`uuid`\" pulumi-lang-dotnet=\"`Uuid`\" pulumi-lang-go=\"`uuid`\" pulumi-lang-python=\"`uuid`\" pulumi-lang-yaml=\"`uuid`\" pulumi-lang-java=\"`uuid`\"\u003e`uuid`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/byoipPrefix:ByoipPrefix example 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\n",
            "properties": {
                "advertised": {
                    "type": "boolean",
                    "description": "A boolean indicating whether the prefix should be advertised.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "failureReason": {
                    "type": "string",
                    "description": "The reason for failure if the status is \"failed\".\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The CIDR notation of the prefix (e.g., \"192.0.2.0/24\").\n"
                },
                "region": {
                    "type": "string",
                    "description": "The DigitalOcean region where the prefix will be deployed.\n"
                },
                "signature": {
                    "type": "string",
                    "description": "The cryptographic signature proving ownership of the prefix.\nThis is required during creation but can be omitted in subsequent updates.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the BYOIP prefix (e.g., \"verified\", \"pending\", \"failed\").\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the BYOIP prefix.\n"
                }
            },
            "required": [
                "failureReason",
                "prefix",
                "region",
                "status",
                "uuid"
            ],
            "inputProperties": {
                "advertised": {
                    "type": "boolean",
                    "description": "A boolean indicating whether the prefix should be advertised.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "prefix": {
                    "type": "string",
                    "description": "The CIDR notation of the prefix (e.g., \"192.0.2.0/24\").\n"
                },
                "region": {
                    "type": "string",
                    "description": "The DigitalOcean region where the prefix will be deployed.\n"
                },
                "signature": {
                    "type": "string",
                    "description": "The cryptographic signature proving ownership of the prefix.\nThis is required during creation but can be omitted in subsequent updates.\n"
                }
            },
            "requiredInputs": [
                "prefix",
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ByoipPrefix resources.\n",
                "properties": {
                    "advertised": {
                        "type": "boolean",
                        "description": "A boolean indicating whether the prefix should be advertised.\nDefaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "failureReason": {
                        "type": "string",
                        "description": "The reason for failure if the status is \"failed\".\n"
                    },
                    "prefix": {
                        "type": "string",
                        "description": "The CIDR notation of the prefix (e.g., \"192.0.2.0/24\").\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The DigitalOcean region where the prefix will be deployed.\n"
                    },
                    "signature": {
                        "type": "string",
                        "description": "The cryptographic signature proving ownership of the prefix.\nThis is required during creation but can be omitted in subsequent updates.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the BYOIP prefix (e.g., \"verified\", \"pending\", \"failed\").\n"
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the BYOIP prefix.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/cdn:Cdn": {
            "description": "Provides a DigitalOcean CDN Endpoint resource for use with Spaces.\n\n## Example Usage\n\n### Basic Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new Spaces Bucket\nconst mybucket = new digitalocean.SpacesBucket(\"mybucket\", {\n    name: \"example\",\n    region: digitalocean.Region.SFO2,\n    acl: \"public-read\",\n});\n// Add a CDN endpoint to the Spaces Bucket\nconst mycdn = new digitalocean.Cdn(\"mycdn\", {origin: mybucket.bucketDomainName});\nexport const fqdn = mycdn.endpoint;\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new Spaces Bucket\nmybucket = digitalocean.SpacesBucket(\"mybucket\",\n    name=\"example\",\n    region=digitalocean.Region.SFO2,\n    acl=\"public-read\")\n# Add a CDN endpoint to the Spaces Bucket\nmycdn = digitalocean.Cdn(\"mycdn\", origin=mybucket.bucket_domain_name)\npulumi.export(\"fqdn\", mycdn.endpoint)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new Spaces Bucket\n    var mybucket = new DigitalOcean.SpacesBucket(\"mybucket\", new()\n    {\n        Name = \"example\",\n        Region = DigitalOcean.Region.SFO2,\n        Acl = \"public-read\",\n    });\n\n    // Add a CDN endpoint to the Spaces Bucket\n    var mycdn = new DigitalOcean.Cdn(\"mycdn\", new()\n    {\n        Origin = mybucket.BucketDomainName,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"fqdn\"] = mycdn.Endpoint,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a new Spaces Bucket\n\t\tmybucket, err := digitalocean.NewSpacesBucket(ctx, \"mybucket\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"example\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionSFO2),\n\t\t\tAcl:    pulumi.String(\"public-read\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Add a CDN endpoint to the Spaces Bucket\n\t\tmycdn, err := digitalocean.NewCdn(ctx, \"mycdn\", \u0026digitalocean.CdnArgs{\n\t\t\tOrigin: mybucket.BucketDomainName,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fqdn\", mycdn.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.pulumi.digitalocean.SpacesBucket;\nimport com.pulumi.digitalocean.SpacesBucketArgs;\nimport com.pulumi.digitalocean.Cdn;\nimport com.pulumi.digitalocean.CdnArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new Spaces Bucket\n        var mybucket = new SpacesBucket(\"mybucket\", SpacesBucketArgs.builder()\n            .name(\"example\")\n            .region(\"sfo2\")\n            .acl(\"public-read\")\n            .build());\n\n        // Add a CDN endpoint to the Spaces Bucket\n        var mycdn = new Cdn(\"mycdn\", CdnArgs.builder()\n            .origin(mybucket.bucketDomainName())\n            .build());\n\n        ctx.export(\"fqdn\", mycdn.endpoint());\n    }\n}\n```\n```yaml\nresources:\n  # Create a new Spaces Bucket\n  mybucket:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: example\n      region: sfo2\n      acl: public-read\n  # Add a CDN endpoint to the Spaces Bucket\n  mycdn:\n    type: digitalocean:Cdn\n    properties:\n      origin: ${mybucket.bucketDomainName}\noutputs:\n  # Output the endpoint for the CDN resource\n  fqdn: ${mycdn.endpoint}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom Sub-Domain Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new Spaces Bucket\nconst mybucket = new digitalocean.SpacesBucket(\"mybucket\", {\n    name: \"example\",\n    region: digitalocean.Region.SFO2,\n    acl: \"public-read\",\n});\n// Create a DigitalOcean managed Let's Encrypt Certificate\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"cdn-cert\",\n    type: digitalocean.CertificateType.LetsEncrypt,\n    domains: [\"static.example.com\"],\n});\n// Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\nconst mycdn = new digitalocean.Cdn(\"mycdn\", {\n    origin: mybucket.bucketDomainName,\n    customDomain: \"static.example.com\",\n    certificateName: cert.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new Spaces Bucket\nmybucket = digitalocean.SpacesBucket(\"mybucket\",\n    name=\"example\",\n    region=digitalocean.Region.SFO2,\n    acl=\"public-read\")\n# Create a DigitalOcean managed Let's Encrypt Certificate\ncert = digitalocean.Certificate(\"cert\",\n    name=\"cdn-cert\",\n    type=digitalocean.CertificateType.LETS_ENCRYPT,\n    domains=[\"static.example.com\"])\n# Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\nmycdn = digitalocean.Cdn(\"mycdn\",\n    origin=mybucket.bucket_domain_name,\n    custom_domain=\"static.example.com\",\n    certificate_name=cert.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new Spaces Bucket\n    var mybucket = new DigitalOcean.SpacesBucket(\"mybucket\", new()\n    {\n        Name = \"example\",\n        Region = DigitalOcean.Region.SFO2,\n        Acl = \"public-read\",\n    });\n\n    // Create a DigitalOcean managed Let's Encrypt Certificate\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"cdn-cert\",\n        Type = DigitalOcean.CertificateType.LetsEncrypt,\n        Domains = new[]\n        {\n            \"static.example.com\",\n        },\n    });\n\n    // Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\n    var mycdn = new DigitalOcean.Cdn(\"mycdn\", new()\n    {\n        Origin = mybucket.BucketDomainName,\n        CustomDomain = \"static.example.com\",\n        CertificateName = cert.Name,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a new Spaces Bucket\n\t\tmybucket, err := digitalocean.NewSpacesBucket(ctx, \"mybucket\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"example\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionSFO2),\n\t\t\tAcl:    pulumi.String(\"public-read\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a DigitalOcean managed Let's Encrypt Certificate\n\t\tcert, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName: pulumi.String(\"cdn-cert\"),\n\t\t\tType: pulumi.String(digitalocean.CertificateTypeLetsEncrypt),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"static.example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\n\t\t_, err = digitalocean.NewCdn(ctx, \"mycdn\", \u0026digitalocean.CdnArgs{\n\t\t\tOrigin:          mybucket.BucketDomainName,\n\t\t\tCustomDomain:    pulumi.String(\"static.example.com\"),\n\t\t\tCertificateName: cert.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport com.pulumi.digitalocean.SpacesBucketArgs;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport com.pulumi.digitalocean.Cdn;\nimport com.pulumi.digitalocean.CdnArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new Spaces Bucket\n        var mybucket = new SpacesBucket(\"mybucket\", SpacesBucketArgs.builder()\n            .name(\"example\")\n            .region(\"sfo2\")\n            .acl(\"public-read\")\n            .build());\n\n        // Create a DigitalOcean managed Let's Encrypt Certificate\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"cdn-cert\")\n            .type(\"lets_encrypt\")\n            .domains(\"static.example.com\")\n            .build());\n\n        // Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\n        var mycdn = new Cdn(\"mycdn\", CdnArgs.builder()\n            .origin(mybucket.bucketDomainName())\n            .customDomain(\"static.example.com\")\n            .certificateName(cert.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new Spaces Bucket\n  mybucket:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: example\n      region: sfo2\n      acl: public-read\n  # Create a DigitalOcean managed Let's Encrypt Certificate\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: cdn-cert\n      type: lets_encrypt\n      domains:\n        - static.example.com\n  # Add a CDN endpoint with a custom sub-domain to the Spaces Bucket\n  mycdn:\n    type: digitalocean:Cdn\n    properties:\n      origin: ${mybucket.bucketDomainName}\n      customDomain: static.example.com\n      certificateName: ${cert.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCDN Endpoints can be imported using the CDN \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/cdn:Cdn mycdn fb06ad00-351f-45c8-b5eb-13523c438661\n```\n\n",
            "properties": {
                "certificateId": {
                    "type": "string",
                    "description": "**Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n",
                    "deprecationMessage": "Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead."
                },
                "certificateName": {
                    "type": "string",
                    "description": "The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the CDN Endpoint was created.\n"
                },
                "customDomain": {
                    "type": "string",
                    "description": "The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The fully qualified domain name (FQDN) from which the CDN-backed content is served.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "The fully qualified domain name, (FQDN) for a Space.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The time to live for the CDN Endpoint, in seconds. Default is 3600 seconds.\n"
                }
            },
            "required": [
                "certificateId",
                "certificateName",
                "createdAt",
                "endpoint",
                "origin",
                "ttl"
            ],
            "inputProperties": {
                "certificateId": {
                    "type": "string",
                    "description": "**Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n",
                    "deprecationMessage": "Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead."
                },
                "certificateName": {
                    "type": "string",
                    "description": "The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n"
                },
                "customDomain": {
                    "type": "string",
                    "description": "The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint.\n"
                },
                "origin": {
                    "type": "string",
                    "description": "The fully qualified domain name, (FQDN) for a Space.\n",
                    "willReplaceOnChanges": true
                },
                "ttl": {
                    "type": "integer",
                    "description": "The time to live for the CDN Endpoint, in seconds. Default is 3600 seconds.\n"
                }
            },
            "requiredInputs": [
                "origin"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Cdn resources.\n",
                "properties": {
                    "certificateId": {
                        "type": "string",
                        "description": "**Deprecated** The ID of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n",
                        "deprecationMessage": "Certificate IDs may change, for example when a Let's Encrypt certificate is auto-renewed. Please specify 'certificate_name' instead."
                    },
                    "certificateName": {
                        "type": "string",
                        "description": "The unique name of a DigitalOcean managed TLS certificate used for SSL when a custom subdomain is provided.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the CDN Endpoint was created.\n"
                    },
                    "customDomain": {
                        "type": "string",
                        "description": "The fully qualified domain name (FQDN) of the custom subdomain used with the CDN Endpoint.\n"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "The fully qualified domain name (FQDN) from which the CDN-backed content is served.\n"
                    },
                    "origin": {
                        "type": "string",
                        "description": "The fully qualified domain name, (FQDN) for a Space.\n",
                        "willReplaceOnChanges": true
                    },
                    "ttl": {
                        "type": "integer",
                        "description": "The time to live for the CDN Endpoint, in seconds. Default is 3600 seconds.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/certificate:Certificate": {
            "description": "Provides a DigitalOcean Certificate resource that allows you to manage\ncertificates for configuring TLS termination in Load Balancers.\nCertificates created with this resource can be referenced in your\nLoad Balancer configuration via their ID. The certificate can either\nbe a custom one provided by you or automatically generated one with\nLet's Encrypt.\n\n## Example Usage\n\n### Custom Certificate\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"custom-terraform-example\",\n    type: digitalocean.CertificateType.Custom,\n    privateKey: std.file({\n        input: \"/Users/terraform/certs/privkey.pem\",\n    }).then(invoke =\u003e invoke.result),\n    leafCertificate: std.file({\n        input: \"/Users/terraform/certs/cert.pem\",\n    }).then(invoke =\u003e invoke.result),\n    certificateChain: std.file({\n        input: \"/Users/terraform/certs/fullchain.pem\",\n    }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"custom-terraform-example\",\n    type=digitalocean.CertificateType.CUSTOM,\n    private_key=std.file(input=\"/Users/terraform/certs/privkey.pem\").result,\n    leaf_certificate=std.file(input=\"/Users/terraform/certs/cert.pem\").result,\n    certificate_chain=std.file(input=\"/Users/terraform/certs/fullchain.pem\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"custom-terraform-example\",\n        Type = DigitalOcean.CertificateType.Custom,\n        PrivateKey = Std.File.Invoke(new()\n        {\n            Input = \"/Users/terraform/certs/privkey.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        LeafCertificate = Std.File.Invoke(new()\n        {\n            Input = \"/Users/terraform/certs/cert.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        CertificateChain = Std.File.Invoke(new()\n        {\n            Input = \"/Users/terraform/certs/fullchain.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/terraform/certs/privkey.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/terraform/certs/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/terraform/certs/fullchain.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName:             pulumi.String(\"custom-terraform-example\"),\n\t\t\tType:             pulumi.String(digitalocean.CertificateTypeCustom),\n\t\t\tPrivateKey:       pulumi.String(invokeFile.Result),\n\t\t\tLeafCertificate:  pulumi.String(invokeFile1.Result),\n\t\t\tCertificateChain: pulumi.String(invokeFile2.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"custom-terraform-example\")\n            .type(\"custom\")\n            .privateKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/terraform/certs/privkey.pem\")\n                .build()).result())\n            .leafCertificate(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/terraform/certs/cert.pem\")\n                .build()).result())\n            .certificateChain(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/terraform/certs/fullchain.pem\")\n                .build()).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: custom-terraform-example\n      type: custom\n      privateKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/terraform/certs/privkey.pem\n          return: result\n      leafCertificate:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/terraform/certs/cert.pem\n          return: result\n      certificateChain:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/terraform/certs/fullchain.pem\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Let's Encrypt Certificate\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"le-terraform-example\",\n    type: digitalocean.CertificateType.LetsEncrypt,\n    domains: [\"example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"le-terraform-example\",\n    type=digitalocean.CertificateType.LETS_ENCRYPT,\n    domains=[\"example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"le-terraform-example\",\n        Type = DigitalOcean.CertificateType.LetsEncrypt,\n        Domains = new[]\n        {\n            \"example.com\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName: pulumi.String(\"le-terraform-example\"),\n\t\t\tType: pulumi.String(digitalocean.CertificateTypeLetsEncrypt),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"le-terraform-example\")\n            .type(\"lets_encrypt\")\n            .domains(\"example.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: le-terraform-example\n      type: lets_encrypt\n      domains:\n        - example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Use with Other Resources\n\nBoth custom and Let's Encrypt certificates can be used with other resources\nincluding the \u003cspan pulumi-lang-nodejs=\"`digitalocean.LoadBalancer`\" pulumi-lang-dotnet=\"`digitalocean.LoadBalancer`\" pulumi-lang-go=\"`LoadBalancer`\" pulumi-lang-python=\"`LoadBalancer`\" pulumi-lang-yaml=\"`digitalocean.LoadBalancer`\" pulumi-lang-java=\"`digitalocean.LoadBalancer`\"\u003e`digitalocean.LoadBalancer`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`digitalocean.Cdn`\" pulumi-lang-dotnet=\"`digitalocean.Cdn`\" pulumi-lang-go=\"`Cdn`\" pulumi-lang-python=\"`Cdn`\" pulumi-lang-yaml=\"`digitalocean.Cdn`\" pulumi-lang-java=\"`digitalocean.Cdn`\"\u003e`digitalocean.Cdn`\u003c/span\u003e resources.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst cert = new digitalocean.Certificate(\"cert\", {\n    name: \"le-terraform-example\",\n    type: digitalocean.CertificateType.LetsEncrypt,\n    domains: [\"example.com\"],\n});\n// Create a new Load Balancer with TLS termination\nconst _public = new digitalocean.LoadBalancer(\"public\", {\n    name: \"secure-loadbalancer-1\",\n    region: digitalocean.Region.NYC3,\n    dropletTag: \"backend\",\n    forwardingRules: [{\n        entryPort: 443,\n        entryProtocol: \"https\",\n        targetPort: 80,\n        targetProtocol: \"http\",\n        certificateName: cert.name,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ncert = digitalocean.Certificate(\"cert\",\n    name=\"le-terraform-example\",\n    type=digitalocean.CertificateType.LETS_ENCRYPT,\n    domains=[\"example.com\"])\n# Create a new Load Balancer with TLS termination\npublic = digitalocean.LoadBalancer(\"public\",\n    name=\"secure-loadbalancer-1\",\n    region=digitalocean.Region.NYC3,\n    droplet_tag=\"backend\",\n    forwarding_rules=[{\n        \"entry_port\": 443,\n        \"entry_protocol\": \"https\",\n        \"target_port\": 80,\n        \"target_protocol\": \"http\",\n        \"certificate_name\": cert.name,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var cert = new DigitalOcean.Certificate(\"cert\", new()\n    {\n        Name = \"le-terraform-example\",\n        Type = DigitalOcean.CertificateType.LetsEncrypt,\n        Domains = new[]\n        {\n            \"example.com\",\n        },\n    });\n\n    // Create a new Load Balancer with TLS termination\n    var @public = new DigitalOcean.LoadBalancer(\"public\", new()\n    {\n        Name = \"secure-loadbalancer-1\",\n        Region = DigitalOcean.Region.NYC3,\n        DropletTag = \"backend\",\n        ForwardingRules = new[]\n        {\n            new DigitalOcean.Inputs.LoadBalancerForwardingRuleArgs\n            {\n                EntryPort = 443,\n                EntryProtocol = \"https\",\n                TargetPort = 80,\n                TargetProtocol = \"http\",\n                CertificateName = cert.Name,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcert, err := digitalocean.NewCertificate(ctx, \"cert\", \u0026digitalocean.CertificateArgs{\n\t\t\tName: pulumi.String(\"le-terraform-example\"),\n\t\t\tType: pulumi.String(digitalocean.CertificateTypeLetsEncrypt),\n\t\t\tDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new Load Balancer with TLS termination\n\t\t_, err = digitalocean.NewLoadBalancer(ctx, \"public\", \u0026digitalocean.LoadBalancerArgs{\n\t\t\tName:       pulumi.String(\"secure-loadbalancer-1\"),\n\t\t\tRegion:     pulumi.String(digitalocean.RegionNYC3),\n\t\t\tDropletTag: pulumi.String(\"backend\"),\n\t\t\tForwardingRules: digitalocean.LoadBalancerForwardingRuleArray{\n\t\t\t\t\u0026digitalocean.LoadBalancerForwardingRuleArgs{\n\t\t\t\t\tEntryPort:       pulumi.Int(443),\n\t\t\t\t\tEntryProtocol:   pulumi.String(\"https\"),\n\t\t\t\t\tTargetPort:      pulumi.Int(80),\n\t\t\t\t\tTargetProtocol:  pulumi.String(\"http\"),\n\t\t\t\t\tCertificateName: cert.Name,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Certificate;\nimport com.pulumi.digitalocean.CertificateArgs;\nimport com.pulumi.digitalocean.LoadBalancer;\nimport com.pulumi.digitalocean.LoadBalancerArgs;\nimport com.pulumi.digitalocean.inputs.LoadBalancerForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var cert = new Certificate(\"cert\", CertificateArgs.builder()\n            .name(\"le-terraform-example\")\n            .type(\"lets_encrypt\")\n            .domains(\"example.com\")\n            .build());\n\n        // Create a new Load Balancer with TLS termination\n        var public_ = new LoadBalancer(\"public\", LoadBalancerArgs.builder()\n            .name(\"secure-loadbalancer-1\")\n            .region(\"nyc3\")\n            .dropletTag(\"backend\")\n            .forwardingRules(LoadBalancerForwardingRuleArgs.builder()\n                .entryPort(443)\n                .entryProtocol(\"https\")\n                .targetPort(80)\n                .targetProtocol(\"http\")\n                .certificateName(cert.name())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  cert:\n    type: digitalocean:Certificate\n    properties:\n      name: le-terraform-example\n      type: lets_encrypt\n      domains:\n        - example.com\n  # Create a new Load Balancer with TLS termination\n  public:\n    type: digitalocean:LoadBalancer\n    properties:\n      name: secure-loadbalancer-1\n      region: nyc3\n      dropletTag: backend\n      forwardingRules:\n        - entryPort: 443\n          entryProtocol: https\n          targetPort: 80\n          targetProtocol: http\n          certificateName: ${cert.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificates can be imported using the certificate \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, e.g.\n\n```sh\n$ pulumi import digitalocean:index/certificate:Certificate mycertificate cert-01\n```\n\n",
            "properties": {
                "certificateChain": {
                    "type": "string",
                    "description": "The full PEM-formatted trust chain\nbetween the certificate authority's certificate and your domain's TLS\ncertificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n"
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of fully qualified domain names (FQDNs) for\nwhich the certificate will be issued. The domains must be managed using\nDigitalOcean's DNS. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`letsEncrypt`\" pulumi-lang-dotnet=\"`LetsEncrypt`\" pulumi-lang-go=\"`letsEncrypt`\" pulumi-lang-python=\"`lets_encrypt`\" pulumi-lang-yaml=\"`letsEncrypt`\" pulumi-lang-java=\"`letsEncrypt`\"\u003e`lets_encrypt`\u003c/span\u003e.\n"
                },
                "leafCertificate": {
                    "type": "string",
                    "description": "The contents of a PEM-formatted public\nTLS certificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the certificate for identification.\n"
                },
                "notAfter": {
                    "type": "string",
                    "description": "The expiration date of the certificate\n"
                },
                "privateKey": {
                    "type": "string",
                    "description": "The contents of a PEM-formatted private-key\ncorresponding to the SSL certificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                    "secret": true
                },
                "sha1Fingerprint": {
                    "type": "string",
                    "description": "The SHA-1 fingerprint of the certificate\n"
                },
                "state": {
                    "type": "string"
                },
                "type": {
                    "type": "string",
                    "description": "The type of certificate to provision. Can be either\n\u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`letsEncrypt`\" pulumi-lang-dotnet=\"`LetsEncrypt`\" pulumi-lang-go=\"`letsEncrypt`\" pulumi-lang-python=\"`lets_encrypt`\" pulumi-lang-yaml=\"`letsEncrypt`\" pulumi-lang-java=\"`letsEncrypt`\"\u003e`lets_encrypt`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the certificate\n"
                }
            },
            "required": [
                "name",
                "notAfter",
                "sha1Fingerprint",
                "state",
                "uuid"
            ],
            "inputProperties": {
                "certificateChain": {
                    "type": "string",
                    "description": "The full PEM-formatted trust chain\nbetween the certificate authority's certificate and your domain's TLS\ncertificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of fully qualified domain names (FQDNs) for\nwhich the certificate will be issued. The domains must be managed using\nDigitalOcean's DNS. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`letsEncrypt`\" pulumi-lang-dotnet=\"`LetsEncrypt`\" pulumi-lang-go=\"`letsEncrypt`\" pulumi-lang-python=\"`lets_encrypt`\" pulumi-lang-yaml=\"`letsEncrypt`\" pulumi-lang-java=\"`letsEncrypt`\"\u003e`lets_encrypt`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "leafCertificate": {
                    "type": "string",
                    "description": "The contents of a PEM-formatted public\nTLS certificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the certificate for identification.\n",
                    "willReplaceOnChanges": true
                },
                "privateKey": {
                    "type": "string",
                    "description": "The contents of a PEM-formatted private-key\ncorresponding to the SSL certificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                    "secret": true,
                    "willReplaceOnChanges": true
                },
                "type": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:CertificateType"
                        }
                    ],
                    "description": "The type of certificate to provision. Can be either\n\u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`letsEncrypt`\" pulumi-lang-dotnet=\"`LetsEncrypt`\" pulumi-lang-go=\"`letsEncrypt`\" pulumi-lang-python=\"`lets_encrypt`\" pulumi-lang-yaml=\"`letsEncrypt`\" pulumi-lang-java=\"`letsEncrypt`\"\u003e`lets_encrypt`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Certificate resources.\n",
                "properties": {
                    "certificateChain": {
                        "type": "string",
                        "description": "The full PEM-formatted trust chain\nbetween the certificate authority's certificate and your domain's TLS\ncertificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "domains": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of fully qualified domain names (FQDNs) for\nwhich the certificate will be issued. The domains must be managed using\nDigitalOcean's DNS. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`letsEncrypt`\" pulumi-lang-dotnet=\"`LetsEncrypt`\" pulumi-lang-go=\"`letsEncrypt`\" pulumi-lang-python=\"`lets_encrypt`\" pulumi-lang-yaml=\"`letsEncrypt`\" pulumi-lang-java=\"`letsEncrypt`\"\u003e`lets_encrypt`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "leafCertificate": {
                        "type": "string",
                        "description": "The contents of a PEM-formatted public\nTLS certificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the certificate for identification.\n",
                        "willReplaceOnChanges": true
                    },
                    "notAfter": {
                        "type": "string",
                        "description": "The expiration date of the certificate\n"
                    },
                    "privateKey": {
                        "type": "string",
                        "description": "The contents of a PEM-formatted private-key\ncorresponding to the SSL certificate. Only valid when type is \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                        "secret": true,
                        "willReplaceOnChanges": true
                    },
                    "sha1Fingerprint": {
                        "type": "string",
                        "description": "The SHA-1 fingerprint of the certificate\n"
                    },
                    "state": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:CertificateType"
                            }
                        ],
                        "description": "The type of certificate to provision. Can be either\n\u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`letsEncrypt`\" pulumi-lang-dotnet=\"`LetsEncrypt`\" pulumi-lang-go=\"`letsEncrypt`\" pulumi-lang-python=\"`lets_encrypt`\" pulumi-lang-yaml=\"`letsEncrypt`\" pulumi-lang-java=\"`letsEncrypt`\"\u003e`lets_encrypt`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the certificate\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/containerRegistries:ContainerRegistries": {
            "properties": {
                "createdAt": {
                    "type": "string"
                },
                "endpoint": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "region": {
                    "type": "string"
                },
                "serverUrl": {
                    "type": "string"
                },
                "storageUsageBytes": {
                    "type": "integer"
                },
                "subscriptionTierSlug": {
                    "type": "string"
                }
            },
            "required": [
                "createdAt",
                "endpoint",
                "name",
                "region",
                "serverUrl",
                "storageUsageBytes",
                "subscriptionTierSlug"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "subscriptionTierSlug": {
                    "type": "string"
                }
            },
            "requiredInputs": [
                "subscriptionTierSlug"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ContainerRegistries resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string"
                    },
                    "endpoint": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "willReplaceOnChanges": true
                    },
                    "serverUrl": {
                        "type": "string"
                    },
                    "storageUsageBytes": {
                        "type": "integer"
                    },
                    "subscriptionTierSlug": {
                        "type": "string"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/containerRegistry:ContainerRegistry": {
            "description": "Provides a DigitalOcean Container Registry resource. A Container Registry is\na secure, private location to store your containers for rapid deployment.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new container registry\nconst foobar = new digitalocean.ContainerRegistry(\"foobar\", {\n    name: \"foobar\",\n    subscriptionTierSlug: \"starter\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new container registry\nfoobar = digitalocean.ContainerRegistry(\"foobar\",\n    name=\"foobar\",\n    subscription_tier_slug=\"starter\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new container registry\n    var foobar = new DigitalOcean.ContainerRegistry(\"foobar\", new()\n    {\n        Name = \"foobar\",\n        SubscriptionTierSlug = \"starter\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a new container registry\n\t\t_, err := digitalocean.NewContainerRegistry(ctx, \"foobar\", \u0026digitalocean.ContainerRegistryArgs{\n\t\t\tName:                 pulumi.String(\"foobar\"),\n\t\t\tSubscriptionTierSlug: pulumi.String(\"starter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ContainerRegistry;\nimport com.pulumi.digitalocean.ContainerRegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new container registry\n        var foobar = new ContainerRegistry(\"foobar\", ContainerRegistryArgs.builder()\n            .name(\"foobar\")\n            .subscriptionTierSlug(\"starter\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new container registry\n  foobar:\n    type: digitalocean:ContainerRegistry\n    properties:\n      name: foobar\n      subscriptionTierSlug: starter\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContainer Registries can be imported using the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/containerRegistry:ContainerRegistry myregistry registryname\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the registry was created\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The URL endpoint of the container registry. Ex: `registry.digitalocean.com/my_registry`\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the container_registry\n"
                },
                "region": {
                    "type": "string",
                    "description": "The slug identifier of for region where registry data will be stored. When not provided, a region will be selected automatically.\n"
                },
                "serverUrl": {
                    "type": "string",
                    "description": "The domain of the container registry. Ex: `registry.digitalocean.com`\n"
                },
                "storageUsageBytes": {
                    "type": "integer",
                    "description": "The amount of storage used in the registry in bytes.\n"
                },
                "subscriptionTierSlug": {
                    "type": "string",
                    "description": "The slug identifier for the subscription tier to use (\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, \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`professional`\" pulumi-lang-dotnet=\"`Professional`\" pulumi-lang-go=\"`professional`\" pulumi-lang-python=\"`professional`\" pulumi-lang-yaml=\"`professional`\" pulumi-lang-java=\"`professional`\"\u003e`professional`\u003c/span\u003e)\n"
                }
            },
            "required": [
                "createdAt",
                "endpoint",
                "name",
                "region",
                "serverUrl",
                "storageUsageBytes",
                "subscriptionTierSlug"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the container_registry\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The slug identifier of for region where registry data will be stored. When not provided, a region will be selected automatically.\n",
                    "willReplaceOnChanges": true
                },
                "subscriptionTierSlug": {
                    "type": "string",
                    "description": "The slug identifier for the subscription tier to use (\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, \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`professional`\" pulumi-lang-dotnet=\"`Professional`\" pulumi-lang-go=\"`professional`\" pulumi-lang-python=\"`professional`\" pulumi-lang-yaml=\"`professional`\" pulumi-lang-java=\"`professional`\"\u003e`professional`\u003c/span\u003e)\n"
                }
            },
            "requiredInputs": [
                "subscriptionTierSlug"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ContainerRegistry resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the registry was created\n"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "The URL endpoint of the container registry. Ex: `registry.digitalocean.com/my_registry`\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the container_registry\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The slug identifier of for region where registry data will be stored. When not provided, a region will be selected automatically.\n",
                        "willReplaceOnChanges": true
                    },
                    "serverUrl": {
                        "type": "string",
                        "description": "The domain of the container registry. Ex: `registry.digitalocean.com`\n"
                    },
                    "storageUsageBytes": {
                        "type": "integer",
                        "description": "The amount of storage used in the registry in bytes.\n"
                    },
                    "subscriptionTierSlug": {
                        "type": "string",
                        "description": "The slug identifier for the subscription tier to use (\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, \u003cspan pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\"\u003e`basic`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`professional`\" pulumi-lang-dotnet=\"`Professional`\" pulumi-lang-go=\"`professional`\" pulumi-lang-python=\"`professional`\" pulumi-lang-yaml=\"`professional`\" pulumi-lang-java=\"`professional`\"\u003e`professional`\u003c/span\u003e)\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/containerRegistryDockerCredentials:ContainerRegistryDockerCredentials": {
            "description": "Get Docker credentials for your DigitalOcean container registry.\n\nAn error is triggered if the provided container registry name does not exist.\n\n## Example Usage\n\n### Basic Example\n\nGet the container registry:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ContainerRegistryDockerCredentials(\"example\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    properties:\n      registryName: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Docker Provider Example\n\nUse the \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`dockerCredentials`\" pulumi-lang-dotnet=\"`DockerCredentials`\" pulumi-lang-go=\"`dockerCredentials`\" pulumi-lang-python=\"`docker_credentials`\" pulumi-lang-yaml=\"`dockerCredentials`\" pulumi-lang-java=\"`dockerCredentials`\"\u003e`docker_credentials`\u003c/span\u003e with the Docker provider:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getContainerRegistry({\n    name: \"example\",\n});\nconst exampleContainerRegistryDockerCredentials = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_container_registry(name=\"example\")\nexample_container_registry_docker_credentials = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetContainerRegistry.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleContainerRegistryDockerCredentials = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupContainerRegistry(ctx, \u0026digitalocean.LookupContainerRegistryArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetContainerRegistryArgs;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getContainerRegistry(GetContainerRegistryArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleContainerRegistryDockerCredentials = new ContainerRegistryDockerCredentials(\"exampleContainerRegistryDockerCredentials\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleContainerRegistryDockerCredentials:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    name: example\n    properties:\n      registryName: example\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getContainerRegistry\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Kubernetes Example\n\nCombined with the Kubernetes Provider's \u003cspan pulumi-lang-nodejs=\"`kubernetesSecret`\" pulumi-lang-dotnet=\"`KubernetesSecret`\" pulumi-lang-go=\"`kubernetesSecret`\" pulumi-lang-python=\"`kubernetes_secret`\" pulumi-lang-yaml=\"`kubernetesSecret`\" pulumi-lang-java=\"`kubernetesSecret`\"\u003e`kubernetes_secret`\u003c/span\u003e resource, you can\naccess the registry from inside your cluster:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\n\nconst exampleContainerRegistryDockerCredentials = new digitalocean.ContainerRegistryDockerCredentials(\"example\", {registryName: \"example\"});\nconst example = digitalocean.getKubernetesCluster({\n    name: \"prod-cluster-01\",\n});\nconst exampleSecret = new kubernetes.index.Secret(\"example\", {\n    metadata: [{\n        name: \"docker-cfg\",\n    }],\n    data: {\n        \".dockerconfigjson\": exampleContainerRegistryDockerCredentials.dockerCredentials,\n    },\n    type: \"kubernetes.io/dockerconfigjson\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_kubernetes as kubernetes\n\nexample_container_registry_docker_credentials = digitalocean.ContainerRegistryDockerCredentials(\"example\", registry_name=\"example\")\nexample = digitalocean.get_kubernetes_cluster(name=\"prod-cluster-01\")\nexample_secret = kubernetes.index.Secret(\"example\",\n    metadata=[{\n        name: docker-cfg,\n    }],\n    data={\n        .dockerconfigjson: example_container_registry_docker_credentials.docker_credentials,\n    },\n    type=kubernetes.io/dockerconfigjson)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Kubernetes = Pulumi.Kubernetes;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleContainerRegistryDockerCredentials = new DigitalOcean.ContainerRegistryDockerCredentials(\"example\", new()\n    {\n        RegistryName = \"example\",\n    });\n\n    var example = DigitalOcean.GetKubernetesCluster.Invoke(new()\n    {\n        Name = \"prod-cluster-01\",\n    });\n\n    var exampleSecret = new Kubernetes.Index.Secret(\"example\", new()\n    {\n        Metadata = new[]\n        {\n            \n            {\n                { \"name\", \"docker-cfg\" },\n            },\n        },\n        Data = \n        {\n            { \".dockerconfigjson\", exampleContainerRegistryDockerCredentials.DockerCredentials },\n        },\n        Type = \"kubernetes.io/dockerconfigjson\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-kubernetes/sdk/v4/go/kubernetes\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleContainerRegistryDockerCredentials, err := digitalocean.NewContainerRegistryDockerCredentials(ctx, \"example\", \u0026digitalocean.ContainerRegistryDockerCredentialsArgs{\n\t\t\tRegistryName: pulumi.String(\"example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.LookupKubernetesCluster(ctx, \u0026digitalocean.LookupKubernetesClusterArgs{\n\t\t\tName: \"prod-cluster-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kubernetes.NewSecret(ctx, \"example\", \u0026kubernetes.SecretArgs{\n\t\t\tMetadata: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"docker-cfg\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tData: map[string]interface{}{\n\t\t\t\t\".dockerconfigjson\": exampleContainerRegistryDockerCredentials.DockerCredentials,\n\t\t\t},\n\t\t\tType: \"kubernetes.io/dockerconfigjson\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentials;\nimport com.pulumi.digitalocean.ContainerRegistryDockerCredentialsArgs;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesClusterArgs;\nimport com.pulumi.kubernetes.Secret;\nimport com.pulumi.kubernetes.SecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleContainerRegistryDockerCredentials = new ContainerRegistryDockerCredentials(\"exampleContainerRegistryDockerCredentials\", ContainerRegistryDockerCredentialsArgs.builder()\n            .registryName(\"example\")\n            .build());\n\n        final var example = DigitaloceanFunctions.getKubernetesCluster(GetKubernetesClusterArgs.builder()\n            .name(\"prod-cluster-01\")\n            .build());\n\n        var exampleSecret = new Secret(\"exampleSecret\", SecretArgs.builder()\n            .metadata(List.of(Map.of(\"name\", \"docker-cfg\")))\n            .data(Map.of(\".dockerconfigjson\", exampleContainerRegistryDockerCredentials.dockerCredentials()))\n            .type(\"kubernetes.io/dockerconfigjson\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleContainerRegistryDockerCredentials:\n    type: digitalocean:ContainerRegistryDockerCredentials\n    name: example\n    properties:\n      registryName: example\n  exampleSecret:\n    type: kubernetes:Secret\n    name: example\n    properties:\n      metadata:\n        - name: docker-cfg\n      data:\n        .dockerconfigjson: ${exampleContainerRegistryDockerCredentials.dockerCredentials}\n      type: kubernetes.io/dockerconfigjson\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesCluster\n      arguments:\n        name: prod-cluster-01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "credentialExpirationTime": {
                    "type": "string",
                    "description": "The date and time the registry access token will expire.\n"
                },
                "dockerCredentials": {
                    "type": "string",
                    "description": "Credentials for the container registry.\n",
                    "secret": true
                },
                "expirySeconds": {
                    "type": "integer",
                    "description": "The amount of time to pass before the Docker credentials expire in seconds. Defaults to 1576800000, or roughly 50 years. Must be greater than 0 and less than 1576800000.\n"
                },
                "registryName": {
                    "type": "string",
                    "description": "The name of the container registry.\n"
                },
                "write": {
                    "type": "boolean",
                    "description": "Allow for write access to the container registry. Defaults to false.\n"
                }
            },
            "required": [
                "credentialExpirationTime",
                "dockerCredentials",
                "registryName"
            ],
            "inputProperties": {
                "expirySeconds": {
                    "type": "integer",
                    "description": "The amount of time to pass before the Docker credentials expire in seconds. Defaults to 1576800000, or roughly 50 years. Must be greater than 0 and less than 1576800000.\n"
                },
                "registryName": {
                    "type": "string",
                    "description": "The name of the container registry.\n",
                    "willReplaceOnChanges": true
                },
                "write": {
                    "type": "boolean",
                    "description": "Allow for write access to the container registry. Defaults to false.\n"
                }
            },
            "requiredInputs": [
                "registryName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ContainerRegistryDockerCredentials resources.\n",
                "properties": {
                    "credentialExpirationTime": {
                        "type": "string",
                        "description": "The date and time the registry access token will expire.\n"
                    },
                    "dockerCredentials": {
                        "type": "string",
                        "description": "Credentials for the container registry.\n",
                        "secret": true
                    },
                    "expirySeconds": {
                        "type": "integer",
                        "description": "The amount of time to pass before the Docker credentials expire in seconds. Defaults to 1576800000, or roughly 50 years. Must be greater than 0 and less than 1576800000.\n"
                    },
                    "registryName": {
                        "type": "string",
                        "description": "The name of the container registry.\n",
                        "willReplaceOnChanges": true
                    },
                    "write": {
                        "type": "boolean",
                        "description": "Allow for write access to the container registry. Defaults to false.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/customImage:CustomImage": {
            "description": "Provides a resource which can be used to create a [custom image](https://www.digitalocean.com/docs/images/custom-images/)\nfrom a URL. The URL must point to an image in one of the following file formats:\n\n- Raw (.img) with an MBR or GPT partition table\n- qcow2\n- VHDX\n- VDI\n- VMDK\n\nThe image may be compressed using gzip or bzip2. See the DigitalOcean Custom\nImage documentation for [additional requirements](https://www.digitalocean.com/docs/images/custom-images/#image-requirements).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst flatcar = new digitalocean.CustomImage(\"flatcar\", {\n    name: \"flatcar\",\n    url: \"https://stable.release.flatcar-linux.net/amd64-usr/2605.7.0/flatcar_production_digitalocean_image.bin.bz2\",\n    regions: [\"nyc3\"],\n});\nconst example = new digitalocean.Droplet(\"example\", {\n    image: flatcar.id,\n    name: \"example-01\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    sshKeys: [\"12345\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nflatcar = digitalocean.CustomImage(\"flatcar\",\n    name=\"flatcar\",\n    url=\"https://stable.release.flatcar-linux.net/amd64-usr/2605.7.0/flatcar_production_digitalocean_image.bin.bz2\",\n    regions=[\"nyc3\"])\nexample = digitalocean.Droplet(\"example\",\n    image=flatcar.id,\n    name=\"example-01\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    ssh_keys=[\"12345\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var flatcar = new DigitalOcean.CustomImage(\"flatcar\", new()\n    {\n        Name = \"flatcar\",\n        Url = \"https://stable.release.flatcar-linux.net/amd64-usr/2605.7.0/flatcar_production_digitalocean_image.bin.bz2\",\n        Regions = new[]\n        {\n            \"nyc3\",\n        },\n    });\n\n    var example = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = flatcar.Id,\n        Name = \"example-01\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        SshKeys = new[]\n        {\n            \"12345\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tflatcar, err := digitalocean.NewCustomImage(ctx, \"flatcar\", \u0026digitalocean.CustomImageArgs{\n\t\t\tName: pulumi.String(\"flatcar\"),\n\t\t\tUrl:  pulumi.String(\"https://stable.release.flatcar-linux.net/amd64-usr/2605.7.0/flatcar_production_digitalocean_image.bin.bz2\"),\n\t\t\tRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"nyc3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  flatcar.ID(),\n\t\t\tName:   pulumi.String(\"example-01\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"12345\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.CustomImage;\nimport com.pulumi.digitalocean.CustomImageArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var flatcar = new CustomImage(\"flatcar\", CustomImageArgs.builder()\n            .name(\"flatcar\")\n            .url(\"https://stable.release.flatcar-linux.net/amd64-usr/2605.7.0/flatcar_production_digitalocean_image.bin.bz2\")\n            .regions(\"nyc3\")\n            .build());\n\n        var example = new Droplet(\"example\", DropletArgs.builder()\n            .image(flatcar.id())\n            .name(\"example-01\")\n            .region(\"nyc3\")\n            .size(\"s-1vcpu-1gb\")\n            .sshKeys(\"12345\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  flatcar:\n    type: digitalocean:CustomImage\n    properties:\n      name: flatcar\n      url: https://stable.release.flatcar-linux.net/amd64-usr/2605.7.0/flatcar_production_digitalocean_image.bin.bz2\n      regions:\n        - nyc3\n  example:\n    type: digitalocean:Droplet\n    properties:\n      image: ${flatcar.id}\n      name: example-01\n      region: nyc3\n      size: s-1vcpu-1gb\n      sshKeys:\n        - 12345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "A time value given in ISO8601 combined date and time format that represents when the image was created.\n"
                },
                "description": {
                    "type": "string",
                    "description": "An optional description for the image.\n"
                },
                "distribution": {
                    "type": "string",
                    "description": "An optional distribution name for the image. Valid values are documented [here](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Images/operation/images_create_custom)\n"
                },
                "imageId": {
                    "type": "integer",
                    "description": "A unique number that can be used to identify and reference a specific image.\n"
                },
                "minDiskSize": {
                    "type": "integer",
                    "description": "The minimum disk size in GB required for a Droplet to use this image.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the Custom Image.\n"
                },
                "public": {
                    "type": "boolean",
                    "description": "Indicates whether the image in question is public or not.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of regions. (Currently only one is supported).\n"
                },
                "sizeGigabytes": {
                    "type": "number",
                    "description": "The size of the image in gigabytes.\n"
                },
                "slug": {
                    "type": "string",
                    "description": "A uniquely identifying string for each image.\n"
                },
                "status": {
                    "type": "string",
                    "description": "A status string indicating the state of a custom image.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of optional tags for the image.\n"
                },
                "type": {
                    "type": "string",
                    "description": "Describes the kind of image.\n"
                },
                "url": {
                    "type": "string",
                    "description": "A URL from which the custom Linux virtual machine image may be retrieved.\n"
                }
            },
            "required": [
                "createdAt",
                "imageId",
                "minDiskSize",
                "name",
                "public",
                "regions",
                "sizeGigabytes",
                "slug",
                "status",
                "type",
                "url"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "An optional description for the image.\n"
                },
                "distribution": {
                    "type": "string",
                    "description": "An optional distribution name for the image. Valid values are documented [here](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Images/operation/images_create_custom)\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the Custom Image.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of regions. (Currently only one is supported).\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of optional tags for the image.\n"
                },
                "url": {
                    "type": "string",
                    "description": "A URL from which the custom Linux virtual machine image may be retrieved.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "regions",
                "url"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering CustomImage resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "A time value given in ISO8601 combined date and time format that represents when the image was created.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "An optional description for the image.\n"
                    },
                    "distribution": {
                        "type": "string",
                        "description": "An optional distribution name for the image. Valid values are documented [here](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Images/operation/images_create_custom)\n"
                    },
                    "imageId": {
                        "type": "integer",
                        "description": "A unique number that can be used to identify and reference a specific image.\n"
                    },
                    "minDiskSize": {
                        "type": "integer",
                        "description": "The minimum disk size in GB required for a Droplet to use this image.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the Custom Image.\n"
                    },
                    "public": {
                        "type": "boolean",
                        "description": "Indicates whether the image in question is public or not.\n"
                    },
                    "regions": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of regions. (Currently only one is supported).\n"
                    },
                    "sizeGigabytes": {
                        "type": "number",
                        "description": "The size of the image in gigabytes.\n"
                    },
                    "slug": {
                        "type": "string",
                        "description": "A uniquely identifying string for each image.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "A status string indicating the state of a custom image.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of optional tags for the image.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "Describes the kind of image.\n"
                    },
                    "url": {
                        "type": "string",
                        "description": "A URL from which the custom Linux virtual machine image may be retrieved.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseCluster:DatabaseCluster": {
            "description": "Provides a DigitalOcean database cluster resource.\n\n## Example Usage\n\n### Create a new PostgreSQL database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new MySQL database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst mysql_example = new digitalocean.DatabaseCluster(\"mysql-example\", {\n    name: \"example-mysql-cluster\",\n    engine: \"mysql\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmysql_example = digitalocean.DatabaseCluster(\"mysql-example\",\n    name=\"example-mysql-cluster\",\n    engine=\"mysql\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mysql_example = new DigitalOcean.DatabaseCluster(\"mysql-example\", new()\n    {\n        Name = \"example-mysql-cluster\",\n        Engine = \"mysql\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"mysql-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mysql-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mysql\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mysql_example = new DatabaseCluster(\"mysql-example\", DatabaseClusterArgs.builder()\n            .name(\"example-mysql-cluster\")\n            .engine(\"mysql\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mysql-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-mysql-cluster\n      engine: mysql\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new Valkey database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst valkey_example = new digitalocean.DatabaseCluster(\"valkey-example\", {\n    name: \"example-valkey-cluster\",\n    engine: \"valkey\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nvalkey_example = digitalocean.DatabaseCluster(\"valkey-example\",\n    name=\"example-valkey-cluster\",\n    engine=\"valkey\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var valkey_example = new DigitalOcean.DatabaseCluster(\"valkey-example\", new()\n    {\n        Name = \"example-valkey-cluster\",\n        Engine = \"valkey\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"valkey-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-valkey-cluster\"),\n\t\t\tEngine:    pulumi.String(\"valkey\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var valkey_example = new DatabaseCluster(\"valkey-example\", DatabaseClusterArgs.builder()\n            .name(\"example-valkey-cluster\")\n            .engine(\"valkey\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  valkey-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-valkey-cluster\n      engine: valkey\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new Kafka database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst kafka_example = new digitalocean.DatabaseCluster(\"kafka-example\", {\n    name: \"example-kafka-cluster\",\n    engine: \"kafka\",\n    version: \"3.5\",\n    size: \"db-s-2vcpu-2gb\",\n    region: digitalocean.Region.NYC1,\n    nodeCount: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkafka_example = digitalocean.DatabaseCluster(\"kafka-example\",\n    name=\"example-kafka-cluster\",\n    engine=\"kafka\",\n    version=\"3.5\",\n    size=\"db-s-2vcpu-2gb\",\n    region=digitalocean.Region.NYC1,\n    node_count=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafka_example = new DigitalOcean.DatabaseCluster(\"kafka-example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Engine = \"kafka\",\n        Version = \"3.5\",\n        Size = \"db-s-2vcpu-2gb\",\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 3,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"kafka-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-kafka-cluster\"),\n\t\t\tEngine:    pulumi.String(\"kafka\"),\n\t\t\tVersion:   pulumi.String(\"3.5\"),\n\t\t\tSize:      pulumi.String(\"db-s-2vcpu-2gb\"),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: 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.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var kafka_example = new DatabaseCluster(\"kafka-example\", DatabaseClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .engine(\"kafka\")\n            .version(\"3.5\")\n            .size(\"db-s-2vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  kafka-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-kafka-cluster\n      engine: kafka\n      version: '3.5'\n      size: db-s-2vcpu-2gb\n      region: nyc1\n      nodeCount: 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new MongoDB database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst mongodb_example = new digitalocean.DatabaseCluster(\"mongodb-example\", {\n    name: \"example-mongo-cluster\",\n    engine: \"mongodb\",\n    version: \"6\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmongodb_example = digitalocean.DatabaseCluster(\"mongodb-example\",\n    name=\"example-mongo-cluster\",\n    engine=\"mongodb\",\n    version=\"6\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mongodb_example = new DigitalOcean.DatabaseCluster(\"mongodb-example\", new()\n    {\n        Name = \"example-mongo-cluster\",\n        Engine = \"mongodb\",\n        Version = \"6\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"mongodb-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mongo-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mongodb\"),\n\t\t\tVersion:   pulumi.String(\"6\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mongodb_example = new DatabaseCluster(\"mongodb-example\", DatabaseClusterArgs.builder()\n            .name(\"example-mongo-cluster\")\n            .engine(\"mongodb\")\n            .version(\"6\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc3\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mongodb-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-mongo-cluster\n      engine: mongodb\n      version: '6'\n      size: db-s-1vcpu-1gb\n      region: nyc3\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new OpenSearch database cluster\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst opensearch_example = new digitalocean.DatabaseCluster(\"opensearch-example\", {\n    name: \"example-opensearch-cluster\",\n    engine: \"opensearch\",\n    version: \"2\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nopensearch_example = digitalocean.DatabaseCluster(\"opensearch-example\",\n    name=\"example-opensearch-cluster\",\n    engine=\"opensearch\",\n    version=\"2\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var opensearch_example = new DigitalOcean.DatabaseCluster(\"opensearch-example\", new()\n    {\n        Name = \"example-opensearch-cluster\",\n        Engine = \"opensearch\",\n        Version = \"2\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 1,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"opensearch-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-opensearch-cluster\"),\n\t\t\tEngine:    pulumi.String(\"opensearch\"),\n\t\t\tVersion:   pulumi.String(\"2\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var opensearch_example = new DatabaseCluster(\"opensearch-example\", DatabaseClusterArgs.builder()\n            .name(\"example-opensearch-cluster\")\n            .engine(\"opensearch\")\n            .version(\"2\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc3\")\n            .nodeCount(1)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  opensearch-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-opensearch-cluster\n      engine: opensearch\n      version: '2'\n      size: db-s-1vcpu-2gb\n      region: nyc3\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Create a new database cluster based on a backup of an existing cluster.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst doby = new digitalocean.DatabaseCluster(\"doby\", {\n    name: \"dobydb\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n    tags: [\"production\"],\n});\nconst dobyBackup = new digitalocean.DatabaseCluster(\"doby_backup\", {\n    name: \"dobydupe\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n    tags: [\"production\"],\n    backupRestore: {\n        databaseName: \"dobydb\",\n    },\n}, {\n    dependsOn: [doby],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ndoby = digitalocean.DatabaseCluster(\"doby\",\n    name=\"dobydb\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1,\n    tags=[\"production\"])\ndoby_backup = digitalocean.DatabaseCluster(\"doby_backup\",\n    name=\"dobydupe\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1,\n    tags=[\"production\"],\n    backup_restore={\n        \"database_name\": \"dobydb\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[doby]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var doby = new DigitalOcean.DatabaseCluster(\"doby\", new()\n    {\n        Name = \"dobydb\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n        Tags = new[]\n        {\n            \"production\",\n        },\n    });\n\n    var dobyBackup = new DigitalOcean.DatabaseCluster(\"doby_backup\", new()\n    {\n        Name = \"dobydupe\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n        Tags = new[]\n        {\n            \"production\",\n        },\n        BackupRestore = new DigitalOcean.Inputs.DatabaseClusterBackupRestoreArgs\n        {\n            DatabaseName = \"dobydb\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            doby,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdoby, err := digitalocean.NewDatabaseCluster(ctx, \"doby\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"dobydb\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseCluster(ctx, \"doby_backup\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"dobydupe\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t\tBackupRestore: \u0026digitalocean.DatabaseClusterBackupRestoreArgs{\n\t\t\t\tDatabaseName: pulumi.String(\"dobydb\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdoby,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseClusterBackupRestoreArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var doby = new DatabaseCluster(\"doby\", DatabaseClusterArgs.builder()\n            .name(\"dobydb\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .tags(\"production\")\n            .build());\n\n        var dobyBackup = new DatabaseCluster(\"dobyBackup\", DatabaseClusterArgs.builder()\n            .name(\"dobydupe\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .tags(\"production\")\n            .backupRestore(DatabaseClusterBackupRestoreArgs.builder()\n                .databaseName(\"dobydb\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(doby)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  doby:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: dobydb\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-2gb\n      region: nyc1\n      nodeCount: 1\n      tags:\n        - production\n  dobyBackup:\n    type: digitalocean:DatabaseCluster\n    name: doby_backup\n    properties:\n      name: dobydupe\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-2gb\n      region: nyc1\n      nodeCount: 1\n      tags:\n        - production\n      backupRestore:\n        databaseName: dobydb\n    options:\n      dependsOn:\n        - ${doby}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase clusters can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e returned from DigitalOcean, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseCluster:DatabaseCluster mycluster 245bcfd0-7f31-4ce6-a2bc-475a116cca97\n```\n\n",
            "properties": {
                "backupRestore": {
                    "$ref": "#/types/digitalocean:index/DatabaseClusterBackupRestore:DatabaseClusterBackupRestore"
                },
                "clusterUrn": {
                    "type": "string",
                    "description": "The uniform resource name of the database cluster.\n"
                },
                "database": {
                    "type": "string",
                    "description": "Name of the cluster's default database.\n"
                },
                "engine": {
                    "type": "string",
                    "description": "Database engine used by the cluster (ex. \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 for PostgreSQL, \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 for MySQL, \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 for Valkey, \u003cspan pulumi-lang-nodejs=\"`mongodb`\" pulumi-lang-dotnet=\"`Mongodb`\" pulumi-lang-go=\"`mongodb`\" pulumi-lang-python=\"`mongodb`\" pulumi-lang-yaml=\"`mongodb`\" pulumi-lang-java=\"`mongodb`\"\u003e`mongodb`\u003c/span\u003e for MongoDB, or \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 for Kafka).\n"
                },
                "evictionPolicy": {
                    "type": "string",
                    "description": "A string specifying the eviction policy for a Valkey cluster. Valid values are: \u003cspan pulumi-lang-nodejs=\"`noeviction`\" pulumi-lang-dotnet=\"`Noeviction`\" pulumi-lang-go=\"`noeviction`\" pulumi-lang-python=\"`noeviction`\" pulumi-lang-yaml=\"`noeviction`\" pulumi-lang-java=\"`noeviction`\"\u003e`noeviction`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`allkeysLru`\" pulumi-lang-dotnet=\"`AllkeysLru`\" pulumi-lang-go=\"`allkeysLru`\" pulumi-lang-python=\"`allkeys_lru`\" pulumi-lang-yaml=\"`allkeysLru`\" pulumi-lang-java=\"`allkeysLru`\"\u003e`allkeys_lru`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`allkeysRandom`\" pulumi-lang-dotnet=\"`AllkeysRandom`\" pulumi-lang-go=\"`allkeysRandom`\" pulumi-lang-python=\"`allkeys_random`\" pulumi-lang-yaml=\"`allkeysRandom`\" pulumi-lang-java=\"`allkeysRandom`\"\u003e`allkeys_random`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volatileLru`\" pulumi-lang-dotnet=\"`VolatileLru`\" pulumi-lang-go=\"`volatileLru`\" pulumi-lang-python=\"`volatile_lru`\" pulumi-lang-yaml=\"`volatileLru`\" pulumi-lang-java=\"`volatileLru`\"\u003e`volatile_lru`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volatileRandom`\" pulumi-lang-dotnet=\"`VolatileRandom`\" pulumi-lang-go=\"`volatileRandom`\" pulumi-lang-python=\"`volatile_random`\" pulumi-lang-yaml=\"`volatileRandom`\" pulumi-lang-java=\"`volatileRandom`\"\u003e`volatile_random`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`volatileTtl`\" pulumi-lang-dotnet=\"`VolatileTtl`\" pulumi-lang-go=\"`volatileTtl`\" pulumi-lang-python=\"`volatile_ttl`\" pulumi-lang-yaml=\"`volatileTtl`\" pulumi-lang-java=\"`volatileTtl`\"\u003e`volatile_ttl`\u003c/span\u003e.\n"
                },
                "host": {
                    "type": "string",
                    "description": "Database cluster's hostname.\n"
                },
                "maintenanceWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseClusterMaintenanceWindow:DatabaseClusterMaintenanceWindow"
                    },
                    "description": "Defines when the automatic maintenance should be performed for the database cluster.\n"
                },
                "metricsEndpoints": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of metrics endpoints for the database cluster, providing URLs to access Prometheus-compatible metrics.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the database cluster.\n"
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "Number of nodes that will be included in the cluster. For \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 clusters, this must be 3.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the cluster's default user.\n",
                    "secret": true
                },
                "port": {
                    "type": "integer",
                    "description": "Network port that the database cluster is listening on.\n"
                },
                "privateHost": {
                    "type": "string",
                    "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n"
                },
                "privateNetworkUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the database cluster will be located.\n"
                },
                "privateUri": {
                    "type": "string",
                    "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                    "secret": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project that the database cluster is assigned to. If excluded when creating a new database cluster, it will be assigned to your default project.\n"
                },
                "region": {
                    "type": "string",
                    "description": "DigitalOcean region where the cluster will reside.\n"
                },
                "size": {
                    "type": "string",
                    "description": "Database Droplet size associated with the cluster (ex. `db-s-1vcpu-1gb`). See the DigitalOcean API for a [list of valid size slugs](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Databases/operation/databases_list_options).\n"
                },
                "sqlMode": {
                    "type": "string",
                    "description": "A comma separated string specifying the  SQL modes for a MySQL cluster.\n"
                },
                "storageSizeMib": {
                    "type": "string",
                    "description": "Defines the disk size, in MiB, allocated to the cluster. This can be adjusted on MySQL and PostgreSQL clusters based on predefined ranges for each slug/droplet size.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names to be applied to the database cluster.\n"
                },
                "uiDatabase": {
                    "type": "string",
                    "description": "Name of the OpenSearch dashboard db.\n"
                },
                "uiHost": {
                    "type": "string",
                    "description": "Hostname for the OpenSearch dashboard.\n"
                },
                "uiPassword": {
                    "type": "string",
                    "description": "Password for the OpenSearch dashboard's default user.\n",
                    "secret": true
                },
                "uiPort": {
                    "type": "integer",
                    "description": "Network port that the OpenSearch dashboard is listening on.\n"
                },
                "uiUri": {
                    "type": "string",
                    "description": "The full URI for connecting to the OpenSearch dashboard.\n",
                    "secret": true
                },
                "uiUser": {
                    "type": "string",
                    "description": "Username for OpenSearch dashboard's default user.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The full URI for connecting to the database cluster.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username for the cluster's default user.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Engine version used by the cluster (ex. \u003cspan pulumi-lang-nodejs=\"`14`\" pulumi-lang-dotnet=\"`14`\" pulumi-lang-go=\"`14`\" pulumi-lang-python=\"`14`\" pulumi-lang-yaml=\"`14`\" pulumi-lang-java=\"`14`\"\u003e`14`\u003c/span\u003e for PostgreSQL 14).\nWhen this value is changed, a call to the [Upgrade major Version for a Database](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Databases/operation/databases_update_major_version) API operation is made with the new version.\n"
                }
            },
            "required": [
                "database",
                "engine",
                "host",
                "metricsEndpoints",
                "name",
                "nodeCount",
                "password",
                "port",
                "privateHost",
                "privateNetworkUuid",
                "privateUri",
                "projectId",
                "region",
                "size",
                "storageSizeMib",
                "uiDatabase",
                "uiHost",
                "uiPassword",
                "uiPort",
                "uiUri",
                "uiUser",
                "uri",
                "clusterUrn",
                "user"
            ],
            "inputProperties": {
                "backupRestore": {
                    "$ref": "#/types/digitalocean:index/DatabaseClusterBackupRestore:DatabaseClusterBackupRestore"
                },
                "engine": {
                    "type": "string",
                    "description": "Database engine used by the cluster (ex. \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 for PostgreSQL, \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 for MySQL, \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 for Valkey, \u003cspan pulumi-lang-nodejs=\"`mongodb`\" pulumi-lang-dotnet=\"`Mongodb`\" pulumi-lang-go=\"`mongodb`\" pulumi-lang-python=\"`mongodb`\" pulumi-lang-yaml=\"`mongodb`\" pulumi-lang-java=\"`mongodb`\"\u003e`mongodb`\u003c/span\u003e for MongoDB, or \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 for Kafka).\n",
                    "willReplaceOnChanges": true
                },
                "evictionPolicy": {
                    "type": "string",
                    "description": "A string specifying the eviction policy for a Valkey cluster. Valid values are: \u003cspan pulumi-lang-nodejs=\"`noeviction`\" pulumi-lang-dotnet=\"`Noeviction`\" pulumi-lang-go=\"`noeviction`\" pulumi-lang-python=\"`noeviction`\" pulumi-lang-yaml=\"`noeviction`\" pulumi-lang-java=\"`noeviction`\"\u003e`noeviction`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`allkeysLru`\" pulumi-lang-dotnet=\"`AllkeysLru`\" pulumi-lang-go=\"`allkeysLru`\" pulumi-lang-python=\"`allkeys_lru`\" pulumi-lang-yaml=\"`allkeysLru`\" pulumi-lang-java=\"`allkeysLru`\"\u003e`allkeys_lru`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`allkeysRandom`\" pulumi-lang-dotnet=\"`AllkeysRandom`\" pulumi-lang-go=\"`allkeysRandom`\" pulumi-lang-python=\"`allkeys_random`\" pulumi-lang-yaml=\"`allkeysRandom`\" pulumi-lang-java=\"`allkeysRandom`\"\u003e`allkeys_random`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volatileLru`\" pulumi-lang-dotnet=\"`VolatileLru`\" pulumi-lang-go=\"`volatileLru`\" pulumi-lang-python=\"`volatile_lru`\" pulumi-lang-yaml=\"`volatileLru`\" pulumi-lang-java=\"`volatileLru`\"\u003e`volatile_lru`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volatileRandom`\" pulumi-lang-dotnet=\"`VolatileRandom`\" pulumi-lang-go=\"`volatileRandom`\" pulumi-lang-python=\"`volatile_random`\" pulumi-lang-yaml=\"`volatileRandom`\" pulumi-lang-java=\"`volatileRandom`\"\u003e`volatile_random`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`volatileTtl`\" pulumi-lang-dotnet=\"`VolatileTtl`\" pulumi-lang-go=\"`volatileTtl`\" pulumi-lang-python=\"`volatile_ttl`\" pulumi-lang-yaml=\"`volatileTtl`\" pulumi-lang-java=\"`volatileTtl`\"\u003e`volatile_ttl`\u003c/span\u003e.\n"
                },
                "maintenanceWindows": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseClusterMaintenanceWindow:DatabaseClusterMaintenanceWindow"
                    },
                    "description": "Defines when the automatic maintenance should be performed for the database cluster.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the database cluster.\n",
                    "willReplaceOnChanges": true
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "Number of nodes that will be included in the cluster. For \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 clusters, this must be 3.\n"
                },
                "privateNetworkUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the database cluster will be located.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project that the database cluster is assigned to. If excluded when creating a new database cluster, it will be assigned to your default project.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:Region"
                        }
                    ],
                    "description": "DigitalOcean region where the cluster will reside.\n"
                },
                "size": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:DatabaseSlug"
                        }
                    ],
                    "description": "Database Droplet size associated with the cluster (ex. `db-s-1vcpu-1gb`). See the DigitalOcean API for a [list of valid size slugs](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Databases/operation/databases_list_options).\n"
                },
                "sqlMode": {
                    "type": "string",
                    "description": "A comma separated string specifying the  SQL modes for a MySQL cluster.\n"
                },
                "storageSizeMib": {
                    "type": "string",
                    "description": "Defines the disk size, in MiB, allocated to the cluster. This can be adjusted on MySQL and PostgreSQL clusters based on predefined ranges for each slug/droplet size.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names to be applied to the database cluster.\n"
                },
                "version": {
                    "type": "string",
                    "description": "Engine version used by the cluster (ex. \u003cspan pulumi-lang-nodejs=\"`14`\" pulumi-lang-dotnet=\"`14`\" pulumi-lang-go=\"`14`\" pulumi-lang-python=\"`14`\" pulumi-lang-yaml=\"`14`\" pulumi-lang-java=\"`14`\"\u003e`14`\u003c/span\u003e for PostgreSQL 14).\nWhen this value is changed, a call to the [Upgrade major Version for a Database](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Databases/operation/databases_update_major_version) API operation is made with the new version.\n"
                }
            },
            "requiredInputs": [
                "engine",
                "nodeCount",
                "region",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseCluster resources.\n",
                "properties": {
                    "backupRestore": {
                        "$ref": "#/types/digitalocean:index/DatabaseClusterBackupRestore:DatabaseClusterBackupRestore"
                    },
                    "clusterUrn": {
                        "type": "string",
                        "description": "The uniform resource name of the database cluster.\n"
                    },
                    "database": {
                        "type": "string",
                        "description": "Name of the cluster's default database.\n"
                    },
                    "engine": {
                        "type": "string",
                        "description": "Database engine used by the cluster (ex. \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 for PostgreSQL, \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 for MySQL, \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 for Valkey, \u003cspan pulumi-lang-nodejs=\"`mongodb`\" pulumi-lang-dotnet=\"`Mongodb`\" pulumi-lang-go=\"`mongodb`\" pulumi-lang-python=\"`mongodb`\" pulumi-lang-yaml=\"`mongodb`\" pulumi-lang-java=\"`mongodb`\"\u003e`mongodb`\u003c/span\u003e for MongoDB, or \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 for Kafka).\n",
                        "willReplaceOnChanges": true
                    },
                    "evictionPolicy": {
                        "type": "string",
                        "description": "A string specifying the eviction policy for a Valkey cluster. Valid values are: \u003cspan pulumi-lang-nodejs=\"`noeviction`\" pulumi-lang-dotnet=\"`Noeviction`\" pulumi-lang-go=\"`noeviction`\" pulumi-lang-python=\"`noeviction`\" pulumi-lang-yaml=\"`noeviction`\" pulumi-lang-java=\"`noeviction`\"\u003e`noeviction`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`allkeysLru`\" pulumi-lang-dotnet=\"`AllkeysLru`\" pulumi-lang-go=\"`allkeysLru`\" pulumi-lang-python=\"`allkeys_lru`\" pulumi-lang-yaml=\"`allkeysLru`\" pulumi-lang-java=\"`allkeysLru`\"\u003e`allkeys_lru`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`allkeysRandom`\" pulumi-lang-dotnet=\"`AllkeysRandom`\" pulumi-lang-go=\"`allkeysRandom`\" pulumi-lang-python=\"`allkeys_random`\" pulumi-lang-yaml=\"`allkeysRandom`\" pulumi-lang-java=\"`allkeysRandom`\"\u003e`allkeys_random`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volatileLru`\" pulumi-lang-dotnet=\"`VolatileLru`\" pulumi-lang-go=\"`volatileLru`\" pulumi-lang-python=\"`volatile_lru`\" pulumi-lang-yaml=\"`volatileLru`\" pulumi-lang-java=\"`volatileLru`\"\u003e`volatile_lru`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`volatileRandom`\" pulumi-lang-dotnet=\"`VolatileRandom`\" pulumi-lang-go=\"`volatileRandom`\" pulumi-lang-python=\"`volatile_random`\" pulumi-lang-yaml=\"`volatileRandom`\" pulumi-lang-java=\"`volatileRandom`\"\u003e`volatile_random`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`volatileTtl`\" pulumi-lang-dotnet=\"`VolatileTtl`\" pulumi-lang-go=\"`volatileTtl`\" pulumi-lang-python=\"`volatile_ttl`\" pulumi-lang-yaml=\"`volatileTtl`\" pulumi-lang-java=\"`volatileTtl`\"\u003e`volatile_ttl`\u003c/span\u003e.\n"
                    },
                    "host": {
                        "type": "string",
                        "description": "Database cluster's hostname.\n"
                    },
                    "maintenanceWindows": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/DatabaseClusterMaintenanceWindow:DatabaseClusterMaintenanceWindow"
                        },
                        "description": "Defines when the automatic maintenance should be performed for the database cluster.\n"
                    },
                    "metricsEndpoints": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of metrics endpoints for the database cluster, providing URLs to access Prometheus-compatible metrics.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the database cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "nodeCount": {
                        "type": "integer",
                        "description": "Number of nodes that will be included in the cluster. For \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 clusters, this must be 3.\n"
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the cluster's default user.\n",
                        "secret": true
                    },
                    "port": {
                        "type": "integer",
                        "description": "Network port that the database cluster is listening on.\n"
                    },
                    "privateHost": {
                        "type": "string",
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n"
                    },
                    "privateNetworkUuid": {
                        "type": "string",
                        "description": "The ID of the VPC where the database cluster will be located.\n",
                        "willReplaceOnChanges": true
                    },
                    "privateUri": {
                        "type": "string",
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "secret": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project that the database cluster is assigned to. If excluded when creating a new database cluster, it will be assigned to your default project.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:Region"
                            }
                        ],
                        "description": "DigitalOcean region where the cluster will reside.\n"
                    },
                    "size": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:DatabaseSlug"
                            }
                        ],
                        "description": "Database Droplet size associated with the cluster (ex. `db-s-1vcpu-1gb`). See the DigitalOcean API for a [list of valid size slugs](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Databases/operation/databases_list_options).\n"
                    },
                    "sqlMode": {
                        "type": "string",
                        "description": "A comma separated string specifying the  SQL modes for a MySQL cluster.\n"
                    },
                    "storageSizeMib": {
                        "type": "string",
                        "description": "Defines the disk size, in MiB, allocated to the cluster. This can be adjusted on MySQL and PostgreSQL clusters based on predefined ranges for each slug/droplet size.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tag names to be applied to the database cluster.\n"
                    },
                    "uiDatabase": {
                        "type": "string",
                        "description": "Name of the OpenSearch dashboard db.\n"
                    },
                    "uiHost": {
                        "type": "string",
                        "description": "Hostname for the OpenSearch dashboard.\n"
                    },
                    "uiPassword": {
                        "type": "string",
                        "description": "Password for the OpenSearch dashboard's default user.\n",
                        "secret": true
                    },
                    "uiPort": {
                        "type": "integer",
                        "description": "Network port that the OpenSearch dashboard is listening on.\n"
                    },
                    "uiUri": {
                        "type": "string",
                        "description": "The full URI for connecting to the OpenSearch dashboard.\n",
                        "secret": true
                    },
                    "uiUser": {
                        "type": "string",
                        "description": "Username for OpenSearch dashboard's default user.\n"
                    },
                    "uri": {
                        "type": "string",
                        "description": "The full URI for connecting to the database cluster.\n",
                        "secret": true
                    },
                    "user": {
                        "type": "string",
                        "description": "Username for the cluster's default user.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "Engine version used by the cluster (ex. \u003cspan pulumi-lang-nodejs=\"`14`\" pulumi-lang-dotnet=\"`14`\" pulumi-lang-go=\"`14`\" pulumi-lang-python=\"`14`\" pulumi-lang-yaml=\"`14`\" pulumi-lang-java=\"`14`\"\u003e`14`\u003c/span\u003e for PostgreSQL 14).\nWhen this value is changed, a call to the [Upgrade major Version for a Database](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Databases/operation/databases_update_major_version) API operation is made with the new version.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseConnectionPool:DatabaseConnectionPool": {
            "description": "Provides a DigitalOcean database connection pool resource.\n\n## Example Usage\n\n### Create a new PostgreSQL database connection pool\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst pool_01 = new digitalocean.DatabaseConnectionPool(\"pool-01\", {\n    clusterId: postgres_example.id,\n    name: \"pool-01\",\n    mode: \"transaction\",\n    size: 20,\n    dbName: \"defaultdb\",\n    user: \"doadmin\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\npool_01 = digitalocean.DatabaseConnectionPool(\"pool-01\",\n    cluster_id=postgres_example.id,\n    name=\"pool-01\",\n    mode=\"transaction\",\n    size=20,\n    db_name=\"defaultdb\",\n    user=\"doadmin\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var pool_01 = new DigitalOcean.DatabaseConnectionPool(\"pool-01\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"pool-01\",\n        Mode = \"transaction\",\n        Size = 20,\n        DbName = \"defaultdb\",\n        User = \"doadmin\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseConnectionPool(ctx, \"pool-01\", \u0026digitalocean.DatabaseConnectionPoolArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tName:      pulumi.String(\"pool-01\"),\n\t\t\tMode:      pulumi.String(\"transaction\"),\n\t\t\tSize:      pulumi.Int(20),\n\t\t\tDbName:    pulumi.String(\"defaultdb\"),\n\t\t\tUser:      pulumi.String(\"doadmin\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseConnectionPool;\nimport com.pulumi.digitalocean.DatabaseConnectionPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var pool_01 = new DatabaseConnectionPool(\"pool-01\", DatabaseConnectionPoolArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"pool-01\")\n            .mode(\"transaction\")\n            .size(20)\n            .dbName(\"defaultdb\")\n            .user(\"doadmin\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pool-01:\n    type: digitalocean:DatabaseConnectionPool\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: pool-01\n      mode: transaction\n      size: 20\n      dbName: defaultdb\n      user: doadmin\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase connection pools can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of the source database cluster\nand the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of the connection pool joined with a comma. For example:\n\n```sh\n$ pulumi import digitalocean:index/databaseConnectionPool:DatabaseConnectionPool pool-01 245bcfd0-7f31-4ce6-a2bc-475a116cca97,pool-01\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the source database cluster. Note: This must be a PostgreSQL cluster.\n"
                },
                "dbName": {
                    "type": "string",
                    "description": "The database for use with the connection pool.\n"
                },
                "host": {
                    "type": "string",
                    "description": "The hostname used to connect to the database connection pool.\n"
                },
                "mode": {
                    "type": "string",
                    "description": "The PGBouncer transaction mode for the connection pool. The allowed values are session, transaction, and statement.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the database connection pool.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the connection pool's user.\n",
                    "secret": true
                },
                "port": {
                    "type": "integer",
                    "description": "Network port that the database connection pool is listening on.\n"
                },
                "privateHost": {
                    "type": "string",
                    "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n"
                },
                "privateUri": {
                    "type": "string",
                    "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                    "secret": true
                },
                "size": {
                    "type": "integer",
                    "description": "The desired size of the PGBouncer connection pool.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The full URI for connecting to the database connection pool.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "The name of the database user for use with the connection pool. When excluded, all sessions connect to the database as the inbound user.\n"
                }
            },
            "required": [
                "clusterId",
                "dbName",
                "host",
                "mode",
                "name",
                "password",
                "port",
                "privateHost",
                "privateUri",
                "size",
                "uri"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the source database cluster. Note: This must be a PostgreSQL cluster.\n",
                    "willReplaceOnChanges": true
                },
                "dbName": {
                    "type": "string",
                    "description": "The database for use with the connection pool.\n",
                    "willReplaceOnChanges": true
                },
                "mode": {
                    "type": "string",
                    "description": "The PGBouncer transaction mode for the connection pool. The allowed values are session, transaction, and statement.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name for the database connection pool.\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "integer",
                    "description": "The desired size of the PGBouncer connection pool.\n",
                    "willReplaceOnChanges": true
                },
                "user": {
                    "type": "string",
                    "description": "The name of the database user for use with the connection pool. When excluded, all sessions connect to the database as the inbound user.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId",
                "dbName",
                "mode",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseConnectionPool resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the source database cluster. Note: This must be a PostgreSQL cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "dbName": {
                        "type": "string",
                        "description": "The database for use with the connection pool.\n",
                        "willReplaceOnChanges": true
                    },
                    "host": {
                        "type": "string",
                        "description": "The hostname used to connect to the database connection pool.\n"
                    },
                    "mode": {
                        "type": "string",
                        "description": "The PGBouncer transaction mode for the connection pool. The allowed values are session, transaction, and statement.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the database connection pool.\n",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the connection pool's user.\n",
                        "secret": true
                    },
                    "port": {
                        "type": "integer",
                        "description": "Network port that the database connection pool is listening on.\n"
                    },
                    "privateHost": {
                        "type": "string",
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n"
                    },
                    "privateUri": {
                        "type": "string",
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "secret": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The desired size of the PGBouncer connection pool.\n",
                        "willReplaceOnChanges": true
                    },
                    "uri": {
                        "type": "string",
                        "description": "The full URI for connecting to the database connection pool.\n",
                        "secret": true
                    },
                    "user": {
                        "type": "string",
                        "description": "The name of the database user for use with the connection pool. When excluded, all sessions connect to the database as the inbound user.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseDb:DatabaseDb": {
            "description": "Provides a DigitalOcean database resource. When creating a new database cluster, a default database with name \u003cspan pulumi-lang-nodejs=\"`defaultdb`\" pulumi-lang-dotnet=\"`Defaultdb`\" pulumi-lang-go=\"`defaultdb`\" pulumi-lang-python=\"`defaultdb`\" pulumi-lang-yaml=\"`defaultdb`\" pulumi-lang-java=\"`defaultdb`\"\u003e`defaultdb`\u003c/span\u003e will be created. Then, this resource can be used to provide additional database inside the cluster.\n\n## Example Usage\n\n### Create a new PostgreSQL database\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst database_example = new digitalocean.DatabaseDb(\"database-example\", {\n    clusterId: postgres_example.id,\n    name: \"foobar\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\ndatabase_example = digitalocean.DatabaseDb(\"database-example\",\n    cluster_id=postgres_example.id,\n    name=\"foobar\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var database_example = new DigitalOcean.DatabaseDb(\"database-example\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"foobar\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseDb(ctx, \"database-example\", \u0026digitalocean.DatabaseDbArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tName:      pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseDb;\nimport com.pulumi.digitalocean.DatabaseDbArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var database_example = new DatabaseDb(\"database-example\", DatabaseDbArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"foobar\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  database-example:\n    type: digitalocean:DatabaseDb\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: foobar\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of the source database cluster\nand the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of the database joined with a comma. For example:\n\n```sh\n$ pulumi import digitalocean:index/databaseDb:DatabaseDb database-example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,foobar\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the original source database cluster.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the database.\n"
                }
            },
            "required": [
                "clusterId",
                "name"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the original source database cluster.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name for the database.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseDb resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the original source database cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the database.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseFirewall:DatabaseFirewall": {
            "description": "Provides a DigitalOcean database firewall resource allowing you to restrict\nconnections to your database to trusted sources. You may limit connections to\nspecific Droplets, Kubernetes clusters, or IP addresses.\n\n## Example Usage\n\n### Create a new database firewall allowing multiple IP addresses\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst example_fw = new digitalocean.DatabaseFirewall(\"example-fw\", {\n    clusterId: postgres_example.id,\n    rules: [\n        {\n            type: \"ip_addr\",\n            value: \"192.168.1.1\",\n        },\n        {\n            type: \"ip_addr\",\n            value: \"192.0.2.0\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nexample_fw = digitalocean.DatabaseFirewall(\"example-fw\",\n    cluster_id=postgres_example.id,\n    rules=[\n        {\n            \"type\": \"ip_addr\",\n            \"value\": \"192.168.1.1\",\n        },\n        {\n            \"type\": \"ip_addr\",\n            \"value\": \"192.0.2.0\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var example_fw = new DigitalOcean.DatabaseFirewall(\"example-fw\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Rules = new[]\n        {\n            new DigitalOcean.Inputs.DatabaseFirewallRuleArgs\n            {\n                Type = \"ip_addr\",\n                Value = \"192.168.1.1\",\n            },\n            new DigitalOcean.Inputs.DatabaseFirewallRuleArgs\n            {\n                Type = \"ip_addr\",\n                Value = \"192.0.2.0\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseFirewall(ctx, \"example-fw\", \u0026digitalocean.DatabaseFirewallArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tRules: digitalocean.DatabaseFirewallRuleArray{\n\t\t\t\t\u0026digitalocean.DatabaseFirewallRuleArgs{\n\t\t\t\t\tType:  pulumi.String(\"ip_addr\"),\n\t\t\t\t\tValue: pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t\t\u0026digitalocean.DatabaseFirewallRuleArgs{\n\t\t\t\t\tType:  pulumi.String(\"ip_addr\"),\n\t\t\t\t\tValue: pulumi.String(\"192.0.2.0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseFirewall;\nimport com.pulumi.digitalocean.DatabaseFirewallArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseFirewallRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var example_fw = new DatabaseFirewall(\"example-fw\", DatabaseFirewallArgs.builder()\n            .clusterId(postgres_example.id())\n            .rules(            \n                DatabaseFirewallRuleArgs.builder()\n                    .type(\"ip_addr\")\n                    .value(\"192.168.1.1\")\n                    .build(),\n                DatabaseFirewallRuleArgs.builder()\n                    .type(\"ip_addr\")\n                    .value(\"192.0.2.0\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-fw:\n    type: digitalocean:DatabaseFirewall\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      rules:\n        - type: ip_addr\n          value: 192.168.1.1\n        - type: ip_addr\n          value: 192.0.2.0\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new database firewall allowing a Droplet\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web = new digitalocean.Droplet(\"web\", {\n    name: \"web-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-22-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst example_fw = new digitalocean.DatabaseFirewall(\"example-fw\", {\n    clusterId: postgres_example.id,\n    rules: [{\n        type: \"droplet\",\n        value: web.id,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb = digitalocean.Droplet(\"web\",\n    name=\"web-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-22-04-x64\",\n    region=digitalocean.Region.NYC3)\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nexample_fw = digitalocean.DatabaseFirewall(\"example-fw\",\n    cluster_id=postgres_example.id,\n    rules=[{\n        \"type\": \"droplet\",\n        \"value\": web.id,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Name = \"web-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-22-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var example_fw = new DigitalOcean.DatabaseFirewall(\"example-fw\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Rules = new[]\n        {\n            new DigitalOcean.Inputs.DatabaseFirewallRuleArgs\n            {\n                Type = \"droplet\",\n                Value = web.Id,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb, err := digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"web-01\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-22-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseFirewall(ctx, \"example-fw\", \u0026digitalocean.DatabaseFirewallArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tRules: digitalocean.DatabaseFirewallRuleArray{\n\t\t\t\t\u0026digitalocean.DatabaseFirewallRuleArgs{\n\t\t\t\t\tType:  pulumi.String(\"droplet\"),\n\t\t\t\t\tValue: web.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseFirewall;\nimport com.pulumi.digitalocean.DatabaseFirewallArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseFirewallRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .name(\"web-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-22-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var example_fw = new DatabaseFirewall(\"example-fw\", DatabaseFirewallArgs.builder()\n            .clusterId(postgres_example.id())\n            .rules(DatabaseFirewallRuleArgs.builder()\n                .type(\"droplet\")\n                .value(web.id())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-fw:\n    type: digitalocean:DatabaseFirewall\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      rules:\n        - type: droplet\n          value: ${web.id}\n  web:\n    type: digitalocean:Droplet\n    properties:\n      name: web-01\n      size: s-1vcpu-1gb\n      image: ubuntu-22-04-x64\n      region: nyc3\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new database firewall for a database replica\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst replica_example = new digitalocean.DatabaseReplica(\"replica-example\", {\n    clusterId: postgres_example.id,\n    name: \"replica-example\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n});\n// Create firewall rule for database replica\nconst example_fw = new digitalocean.DatabaseFirewall(\"example-fw\", {\n    clusterId: replica_example.uuid,\n    rules: [{\n        type: \"ip_addr\",\n        value: \"192.168.1.1\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nreplica_example = digitalocean.DatabaseReplica(\"replica-example\",\n    cluster_id=postgres_example.id,\n    name=\"replica-example\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1)\n# Create firewall rule for database replica\nexample_fw = digitalocean.DatabaseFirewall(\"example-fw\",\n    cluster_id=replica_example.uuid,\n    rules=[{\n        \"type\": \"ip_addr\",\n        \"value\": \"192.168.1.1\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var replica_example = new DigitalOcean.DatabaseReplica(\"replica-example\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"replica-example\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n    });\n\n    // Create firewall rule for database replica\n    var example_fw = new DigitalOcean.DatabaseFirewall(\"example-fw\", new()\n    {\n        ClusterId = replica_example.Uuid,\n        Rules = new[]\n        {\n            new DigitalOcean.Inputs.DatabaseFirewallRuleArgs\n            {\n                Type = \"ip_addr\",\n                Value = \"192.168.1.1\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treplica_example, err := digitalocean.NewDatabaseReplica(ctx, \"replica-example\", \u0026digitalocean.DatabaseReplicaArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tName:      pulumi.String(\"replica-example\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create firewall rule for database replica\n\t\t_, err = digitalocean.NewDatabaseFirewall(ctx, \"example-fw\", \u0026digitalocean.DatabaseFirewallArgs{\n\t\t\tClusterId: replica_example.Uuid,\n\t\t\tRules: digitalocean.DatabaseFirewallRuleArray{\n\t\t\t\t\u0026digitalocean.DatabaseFirewallRuleArgs{\n\t\t\t\t\tType:  pulumi.String(\"ip_addr\"),\n\t\t\t\t\tValue: pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseReplica;\nimport com.pulumi.digitalocean.DatabaseReplicaArgs;\nimport com.pulumi.digitalocean.DatabaseFirewall;\nimport com.pulumi.digitalocean.DatabaseFirewallArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseFirewallRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var replica_example = new DatabaseReplica(\"replica-example\", DatabaseReplicaArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"replica-example\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .build());\n\n        // Create firewall rule for database replica\n        var example_fw = new DatabaseFirewall(\"example-fw\", DatabaseFirewallArgs.builder()\n            .clusterId(replica_example.uuid())\n            .rules(DatabaseFirewallRuleArgs.builder()\n                .type(\"ip_addr\")\n                .value(\"192.168.1.1\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n  replica-example:\n    type: digitalocean:DatabaseReplica\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: replica-example\n      size: db-s-1vcpu-1gb\n      region: nyc1\n  # Create firewall rule for database replica\n  example-fw:\n    type: digitalocean:DatabaseFirewall\n    properties:\n      clusterId: ${[\"replica-example\"].uuid}\n      rules:\n        - type: ip_addr\n          value: 192.168.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase firewalls can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of the target database cluster\nFor example:\n\n```sh\n$ pulumi import digitalocean:index/databaseFirewall:DatabaseFirewall example-fw 5f55c6cd-863b-4907-99b8-7e09b0275d54\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target database cluster.\n"
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseFirewallRule:DatabaseFirewallRule"
                    },
                    "description": "A rule specifying a resource allowed to access the database cluster. The following arguments must be specified:\n"
                }
            },
            "required": [
                "clusterId",
                "rules"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target database cluster.\n",
                    "willReplaceOnChanges": true
                },
                "rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseFirewallRule:DatabaseFirewallRule"
                    },
                    "description": "A rule specifying a resource allowed to access the database cluster. The following arguments must be specified:\n"
                }
            },
            "requiredInputs": [
                "clusterId",
                "rules"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseFirewall resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target database cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/DatabaseFirewallRule:DatabaseFirewallRule"
                        },
                        "description": "A rule specifying a resource allowed to access the database cluster. The following arguments must be specified:\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseKafkaConfig:DatabaseKafkaConfig": {
            "description": "Provides a virtual resource that can be used to change advanced configuration\noptions for a DigitalOcean managed Kafka database cluster.\n\n\u003e **Note** Kafka configurations are only removed from state when destroyed. The remote configuration is not unset.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleDatabaseCluster = new digitalocean.DatabaseCluster(\"example\", {\n    name: \"example-kafka-cluster\",\n    engine: \"kafka\",\n    version: \"3.7\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 3,\n});\nconst example = new digitalocean.DatabaseKafkaConfig(\"example\", {\n    clusterId: exampleDatabaseCluster.id,\n    groupInitialRebalanceDelayMs: 3000,\n    groupMinSessionTimeoutMs: 6000,\n    groupMaxSessionTimeoutMs: 1800000,\n    messageMaxBytes: 1048588,\n    logCleanerDeleteRetentionMs: 86400000,\n    logCleanerMinCompactionLagMs: \"0\",\n    logFlushIntervalMs: \"9223372036854775807\",\n    logIndexIntervalBytes: 4096,\n    logMessageDownconversionEnable: true,\n    logMessageTimestampDifferenceMaxMs: \"9223372036854775807\",\n    logPreallocate: false,\n    logRetentionBytes: \"-1\",\n    logRetentionHours: 168,\n    logRetentionMs: \"604800000\",\n    logRollJitterMs: \"0\",\n    logSegmentDeleteDelayMs: 60000,\n    autoCreateTopicsEnable: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_database_cluster = digitalocean.DatabaseCluster(\"example\",\n    name=\"example-kafka-cluster\",\n    engine=\"kafka\",\n    version=\"3.7\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=3)\nexample = digitalocean.DatabaseKafkaConfig(\"example\",\n    cluster_id=example_database_cluster.id,\n    group_initial_rebalance_delay_ms=3000,\n    group_min_session_timeout_ms=6000,\n    group_max_session_timeout_ms=1800000,\n    message_max_bytes=1048588,\n    log_cleaner_delete_retention_ms=86400000,\n    log_cleaner_min_compaction_lag_ms=\"0\",\n    log_flush_interval_ms=\"9223372036854775807\",\n    log_index_interval_bytes=4096,\n    log_message_downconversion_enable=True,\n    log_message_timestamp_difference_max_ms=\"9223372036854775807\",\n    log_preallocate=False,\n    log_retention_bytes=\"-1\",\n    log_retention_hours=168,\n    log_retention_ms=\"604800000\",\n    log_roll_jitter_ms=\"0\",\n    log_segment_delete_delay_ms=60000,\n    auto_create_topics_enable=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleDatabaseCluster = new DigitalOcean.DatabaseCluster(\"example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Engine = \"kafka\",\n        Version = \"3.7\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 3,\n    });\n\n    var example = new DigitalOcean.DatabaseKafkaConfig(\"example\", new()\n    {\n        ClusterId = exampleDatabaseCluster.Id,\n        GroupInitialRebalanceDelayMs = 3000,\n        GroupMinSessionTimeoutMs = 6000,\n        GroupMaxSessionTimeoutMs = 1800000,\n        MessageMaxBytes = 1048588,\n        LogCleanerDeleteRetentionMs = 86400000,\n        LogCleanerMinCompactionLagMs = \"0\",\n        LogFlushIntervalMs = \"9223372036854775807\",\n        LogIndexIntervalBytes = 4096,\n        LogMessageDownconversionEnable = true,\n        LogMessageTimestampDifferenceMaxMs = \"9223372036854775807\",\n        LogPreallocate = false,\n        LogRetentionBytes = \"-1\",\n        LogRetentionHours = 168,\n        LogRetentionMs = \"604800000\",\n        LogRollJitterMs = \"0\",\n        LogSegmentDeleteDelayMs = 60000,\n        AutoCreateTopicsEnable = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleDatabaseCluster, err := digitalocean.NewDatabaseCluster(ctx, \"example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-kafka-cluster\"),\n\t\t\tEngine:    pulumi.String(\"kafka\"),\n\t\t\tVersion:   pulumi.String(\"3.7\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseKafkaConfig(ctx, \"example\", \u0026digitalocean.DatabaseKafkaConfigArgs{\n\t\t\tClusterId:                          exampleDatabaseCluster.ID(),\n\t\t\tGroupInitialRebalanceDelayMs:       pulumi.Int(3000),\n\t\t\tGroupMinSessionTimeoutMs:           pulumi.Int(6000),\n\t\t\tGroupMaxSessionTimeoutMs:           pulumi.Int(1800000),\n\t\t\tMessageMaxBytes:                    pulumi.Int(1048588),\n\t\t\tLogCleanerDeleteRetentionMs:        pulumi.Int(86400000),\n\t\t\tLogCleanerMinCompactionLagMs:       pulumi.String(\"0\"),\n\t\t\tLogFlushIntervalMs:                 pulumi.String(\"9223372036854775807\"),\n\t\t\tLogIndexIntervalBytes:              pulumi.Int(4096),\n\t\t\tLogMessageDownconversionEnable:     pulumi.Bool(true),\n\t\t\tLogMessageTimestampDifferenceMaxMs: pulumi.String(\"9223372036854775807\"),\n\t\t\tLogPreallocate:                     pulumi.Bool(false),\n\t\t\tLogRetentionBytes:                  pulumi.String(\"-1\"),\n\t\t\tLogRetentionHours:                  pulumi.Int(168),\n\t\t\tLogRetentionMs:                     pulumi.String(\"604800000\"),\n\t\t\tLogRollJitterMs:                    pulumi.String(\"0\"),\n\t\t\tLogSegmentDeleteDelayMs:            pulumi.Int(60000),\n\t\t\tAutoCreateTopicsEnable:             pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseKafkaConfig;\nimport com.pulumi.digitalocean.DatabaseKafkaConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleDatabaseCluster = new DatabaseCluster(\"exampleDatabaseCluster\", DatabaseClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .engine(\"kafka\")\n            .version(\"3.7\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc3\")\n            .nodeCount(3)\n            .build());\n\n        var example = new DatabaseKafkaConfig(\"example\", DatabaseKafkaConfigArgs.builder()\n            .clusterId(exampleDatabaseCluster.id())\n            .groupInitialRebalanceDelayMs(3000)\n            .groupMinSessionTimeoutMs(6000)\n            .groupMaxSessionTimeoutMs(1800000)\n            .messageMaxBytes(1048588)\n            .logCleanerDeleteRetentionMs(86400000)\n            .logCleanerMinCompactionLagMs(\"0\")\n            .logFlushIntervalMs(\"9223372036854775807\")\n            .logIndexIntervalBytes(4096)\n            .logMessageDownconversionEnable(true)\n            .logMessageTimestampDifferenceMaxMs(\"9223372036854775807\")\n            .logPreallocate(false)\n            .logRetentionBytes(\"-1\")\n            .logRetentionHours(168)\n            .logRetentionMs(\"604800000\")\n            .logRollJitterMs(\"0\")\n            .logSegmentDeleteDelayMs(60000)\n            .autoCreateTopicsEnable(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabaseKafkaConfig\n    properties:\n      clusterId: ${exampleDatabaseCluster.id}\n      groupInitialRebalanceDelayMs: 3000\n      groupMinSessionTimeoutMs: 6000\n      groupMaxSessionTimeoutMs: 1.8e+06\n      messageMaxBytes: 1.048588e+06\n      logCleanerDeleteRetentionMs: 8.64e+07\n      logCleanerMinCompactionLagMs: 0\n      logFlushIntervalMs: 9.223372036854776e+18\n      logIndexIntervalBytes: 4096\n      logMessageDownconversionEnable: true\n      logMessageTimestampDifferenceMaxMs: 9.223372036854776e+18\n      logPreallocate: false\n      logRetentionBytes: -1\n      logRetentionHours: 168\n      logRetentionMs: 6.048e+08\n      logRollJitterMs: 0\n      logSegmentDeleteDelayMs: 60000\n      autoCreateTopicsEnable: true\n  exampleDatabaseCluster:\n    type: digitalocean:DatabaseCluster\n    name: example\n    properties:\n      name: example-kafka-cluster\n      engine: kafka\n      version: '3.7'\n      size: db-s-1vcpu-1gb\n      region: nyc3\n      nodeCount: 3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Kafka database cluster's configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e the parent cluster, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseKafkaConfig:DatabaseKafkaConfig example 4b62829a-9c42-465b-aaa3-84051048e712\n```\n\n",
            "properties": {
                "autoCreateTopicsEnable": {
                    "type": "boolean",
                    "description": "Enable auto creation of topics.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Kafka cluster.\n"
                },
                "groupInitialRebalanceDelayMs": {
                    "type": "integer",
                    "description": "The amount of time, in milliseconds, the group coordinator will wait for more consumers to join a new group before performing the first rebalance. A longer delay means potentially fewer rebalances, but increases the time until processing begins. The default value for this is 3 seconds. During development and testing it might be desirable to set this to 0 in order to not delay test execution time.\n"
                },
                "groupMaxSessionTimeoutMs": {
                    "type": "integer",
                    "description": "The maximum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures.\n"
                },
                "groupMinSessionTimeoutMs": {
                    "type": "integer",
                    "description": "The minimum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures.\n"
                },
                "logCleanerDeleteRetentionMs": {
                    "type": "integer",
                    "description": "How long are delete records retained?\n"
                },
                "logCleanerMinCompactionLagMs": {
                    "type": "string",
                    "description": "The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted.\n"
                },
                "logFlushIntervalMs": {
                    "type": "string",
                    "description": "The maximum time in ms that a message in any topic is kept in memory before flushed to disk. If not set, the value in log.flush.scheduler.interval.ms is used.\n"
                },
                "logIndexIntervalBytes": {
                    "type": "integer",
                    "description": "The interval with which Kafka adds an entry to the offset index.\n"
                },
                "logMessageDownconversionEnable": {
                    "type": "boolean",
                    "description": "This configuration controls whether down-conversion of message formats is enabled to satisfy consume requests.\n"
                },
                "logMessageTimestampDifferenceMaxMs": {
                    "type": "string",
                    "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message.\n"
                },
                "logPreallocate": {
                    "type": "boolean",
                    "description": "Controls whether to preallocate a file when creating a new segment.\n"
                },
                "logRetentionBytes": {
                    "type": "string",
                    "description": "The maximum size of the log before deleting messages.\n"
                },
                "logRetentionHours": {
                    "type": "integer",
                    "description": "The number of hours to keep a log file before deleting it.\n"
                },
                "logRetentionMs": {
                    "type": "string",
                    "description": "The number of milliseconds to keep a log file before deleting it (in milliseconds), If not set, the value in log.retention.minutes is used. If set to -1, no time limit is applied.\n"
                },
                "logRollJitterMs": {
                    "type": "string",
                    "description": "The maximum jitter to subtract from logRollTimeMillis (in milliseconds). If not set, the value in log.roll.jitter.hours is used.\n"
                },
                "logSegmentDeleteDelayMs": {
                    "type": "integer",
                    "description": "The amount of time to wait before deleting a file from the filesystem.\n"
                },
                "messageMaxBytes": {
                    "type": "integer",
                    "description": "The maximum size of message that the server can receive.\n"
                }
            },
            "required": [
                "autoCreateTopicsEnable",
                "clusterId",
                "groupInitialRebalanceDelayMs",
                "groupMaxSessionTimeoutMs",
                "groupMinSessionTimeoutMs",
                "logCleanerDeleteRetentionMs",
                "logCleanerMinCompactionLagMs",
                "logFlushIntervalMs",
                "logIndexIntervalBytes",
                "logMessageDownconversionEnable",
                "logMessageTimestampDifferenceMaxMs",
                "logPreallocate",
                "logRetentionBytes",
                "logRetentionHours",
                "logRetentionMs",
                "logRollJitterMs",
                "logSegmentDeleteDelayMs",
                "messageMaxBytes"
            ],
            "inputProperties": {
                "autoCreateTopicsEnable": {
                    "type": "boolean",
                    "description": "Enable auto creation of topics.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Kafka cluster.\n",
                    "willReplaceOnChanges": true
                },
                "groupInitialRebalanceDelayMs": {
                    "type": "integer",
                    "description": "The amount of time, in milliseconds, the group coordinator will wait for more consumers to join a new group before performing the first rebalance. A longer delay means potentially fewer rebalances, but increases the time until processing begins. The default value for this is 3 seconds. During development and testing it might be desirable to set this to 0 in order to not delay test execution time.\n"
                },
                "groupMaxSessionTimeoutMs": {
                    "type": "integer",
                    "description": "The maximum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures.\n"
                },
                "groupMinSessionTimeoutMs": {
                    "type": "integer",
                    "description": "The minimum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures.\n"
                },
                "logCleanerDeleteRetentionMs": {
                    "type": "integer",
                    "description": "How long are delete records retained?\n"
                },
                "logCleanerMinCompactionLagMs": {
                    "type": "string",
                    "description": "The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted.\n"
                },
                "logFlushIntervalMs": {
                    "type": "string",
                    "description": "The maximum time in ms that a message in any topic is kept in memory before flushed to disk. If not set, the value in log.flush.scheduler.interval.ms is used.\n"
                },
                "logIndexIntervalBytes": {
                    "type": "integer",
                    "description": "The interval with which Kafka adds an entry to the offset index.\n"
                },
                "logMessageDownconversionEnable": {
                    "type": "boolean",
                    "description": "This configuration controls whether down-conversion of message formats is enabled to satisfy consume requests.\n"
                },
                "logMessageTimestampDifferenceMaxMs": {
                    "type": "string",
                    "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message.\n"
                },
                "logPreallocate": {
                    "type": "boolean",
                    "description": "Controls whether to preallocate a file when creating a new segment.\n"
                },
                "logRetentionBytes": {
                    "type": "string",
                    "description": "The maximum size of the log before deleting messages.\n"
                },
                "logRetentionHours": {
                    "type": "integer",
                    "description": "The number of hours to keep a log file before deleting it.\n"
                },
                "logRetentionMs": {
                    "type": "string",
                    "description": "The number of milliseconds to keep a log file before deleting it (in milliseconds), If not set, the value in log.retention.minutes is used. If set to -1, no time limit is applied.\n"
                },
                "logRollJitterMs": {
                    "type": "string",
                    "description": "The maximum jitter to subtract from logRollTimeMillis (in milliseconds). If not set, the value in log.roll.jitter.hours is used.\n"
                },
                "logSegmentDeleteDelayMs": {
                    "type": "integer",
                    "description": "The amount of time to wait before deleting a file from the filesystem.\n"
                },
                "messageMaxBytes": {
                    "type": "integer",
                    "description": "The maximum size of message that the server can receive.\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseKafkaConfig resources.\n",
                "properties": {
                    "autoCreateTopicsEnable": {
                        "type": "boolean",
                        "description": "Enable auto creation of topics.\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target Kafka cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "groupInitialRebalanceDelayMs": {
                        "type": "integer",
                        "description": "The amount of time, in milliseconds, the group coordinator will wait for more consumers to join a new group before performing the first rebalance. A longer delay means potentially fewer rebalances, but increases the time until processing begins. The default value for this is 3 seconds. During development and testing it might be desirable to set this to 0 in order to not delay test execution time.\n"
                    },
                    "groupMaxSessionTimeoutMs": {
                        "type": "integer",
                        "description": "The maximum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures.\n"
                    },
                    "groupMinSessionTimeoutMs": {
                        "type": "integer",
                        "description": "The minimum allowed session timeout for registered consumers. Longer timeouts give consumers more time to process messages in between heartbeats at the cost of a longer time to detect failures.\n"
                    },
                    "logCleanerDeleteRetentionMs": {
                        "type": "integer",
                        "description": "How long are delete records retained?\n"
                    },
                    "logCleanerMinCompactionLagMs": {
                        "type": "string",
                        "description": "The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted.\n"
                    },
                    "logFlushIntervalMs": {
                        "type": "string",
                        "description": "The maximum time in ms that a message in any topic is kept in memory before flushed to disk. If not set, the value in log.flush.scheduler.interval.ms is used.\n"
                    },
                    "logIndexIntervalBytes": {
                        "type": "integer",
                        "description": "The interval with which Kafka adds an entry to the offset index.\n"
                    },
                    "logMessageDownconversionEnable": {
                        "type": "boolean",
                        "description": "This configuration controls whether down-conversion of message formats is enabled to satisfy consume requests.\n"
                    },
                    "logMessageTimestampDifferenceMaxMs": {
                        "type": "string",
                        "description": "The maximum difference allowed between the timestamp when a broker receives a message and the timestamp specified in the message.\n"
                    },
                    "logPreallocate": {
                        "type": "boolean",
                        "description": "Controls whether to preallocate a file when creating a new segment.\n"
                    },
                    "logRetentionBytes": {
                        "type": "string",
                        "description": "The maximum size of the log before deleting messages.\n"
                    },
                    "logRetentionHours": {
                        "type": "integer",
                        "description": "The number of hours to keep a log file before deleting it.\n"
                    },
                    "logRetentionMs": {
                        "type": "string",
                        "description": "The number of milliseconds to keep a log file before deleting it (in milliseconds), If not set, the value in log.retention.minutes is used. If set to -1, no time limit is applied.\n"
                    },
                    "logRollJitterMs": {
                        "type": "string",
                        "description": "The maximum jitter to subtract from logRollTimeMillis (in milliseconds). If not set, the value in log.roll.jitter.hours is used.\n"
                    },
                    "logSegmentDeleteDelayMs": {
                        "type": "integer",
                        "description": "The amount of time to wait before deleting a file from the filesystem.\n"
                    },
                    "messageMaxBytes": {
                        "type": "integer",
                        "description": "The maximum size of message that the server can receive.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseKafkaSchemaRegistry:DatabaseKafkaSchemaRegistry": {
            "description": "Provides a DigitalOcean Kafka schema registry for Kafka clusters.\n\n## Example Usage\n\n### Create a new Kafka Schema Registry\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst kafka_example = new digitalocean.DatabaseCluster(\"kafka-example\", {\n    name: \"example-kafka-cluster\",\n    engine: \"kafka\",\n    version: \"3.5\",\n    size: \"gd-2vcpu-8gb\",\n    region: digitalocean.Region.BLR1,\n    nodeCount: 3,\n    tags: [\"production\"],\n});\nconst schema_01 = new digitalocean.DatabaseKafkaSchemaRegistry(\"schema-01\", {\n    clusterId: kafka_example.id,\n    subjectName: \"test-schema\",\n    schemaType: \"avro\",\n    schema: `{\n  \\\\\"type\\\\\": \\\\\"record\\\\\",\n  \\\\\"namespace\\\\\": \\\\\"example\\\\\",\n  \\\\\"name\\\\\": \\\\\"TestRecord\\\\\",\n  \\\\\"fields\\\\\": [\n    {\\\\\"name\\\\\": \\\\\"id\\\\\", \\\\\"type\\\\\": \\\\\"string\\\\\"},\n    {\\\\\"name\\\\\": \\\\\"name\\\\\", \\\\\"type\\\\\": \\\\\"string\\\\\"},\n    {\\\\\"name\\\\\": \\\\\"value\\\\\", \\\\\"type\\\\\": \\\\\"int\\\\\"}\n  ]\n}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkafka_example = digitalocean.DatabaseCluster(\"kafka-example\",\n    name=\"example-kafka-cluster\",\n    engine=\"kafka\",\n    version=\"3.5\",\n    size=\"gd-2vcpu-8gb\",\n    region=digitalocean.Region.BLR1,\n    node_count=3,\n    tags=[\"production\"])\nschema_01 = digitalocean.DatabaseKafkaSchemaRegistry(\"schema-01\",\n    cluster_id=kafka_example.id,\n    subject_name=\"test-schema\",\n    schema_type=\"avro\",\n    schema=\"\"\"{\n  \\\"type\\\": \\\"record\\\",\n  \\\"namespace\\\": \\\"example\\\",\n  \\\"name\\\": \\\"TestRecord\\\",\n  \\\"fields\\\": [\n    {\\\"name\\\": \\\"id\\\", \\\"type\\\": \\\"string\\\"},\n    {\\\"name\\\": \\\"name\\\", \\\"type\\\": \\\"string\\\"},\n    {\\\"name\\\": \\\"value\\\", \\\"type\\\": \\\"int\\\"}\n  ]\n}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafka_example = new DigitalOcean.DatabaseCluster(\"kafka-example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Engine = \"kafka\",\n        Version = \"3.5\",\n        Size = \"gd-2vcpu-8gb\",\n        Region = DigitalOcean.Region.BLR1,\n        NodeCount = 3,\n        Tags = new[]\n        {\n            \"production\",\n        },\n    });\n\n    var schema_01 = new DigitalOcean.DatabaseKafkaSchemaRegistry(\"schema-01\", new()\n    {\n        ClusterId = kafka_example.Id,\n        SubjectName = \"test-schema\",\n        SchemaType = \"avro\",\n        Schema = @\"{\n  \\\"\"type\\\"\": \\\"\"record\\\"\",\n  \\\"\"namespace\\\"\": \\\"\"example\\\"\",\n  \\\"\"name\\\"\": \\\"\"TestRecord\\\"\",\n  \\\"\"fields\\\"\": [\n    {\\\"\"name\\\"\": \\\"\"id\\\"\", \\\"\"type\\\"\": \\\"\"string\\\"\"},\n    {\\\"\"name\\\"\": \\\"\"name\\\"\", \\\"\"type\\\"\": \\\"\"string\\\"\"},\n    {\\\"\"name\\\"\": \\\"\"value\\\"\", \\\"\"type\\\"\": \\\"\"int\\\"\"}\n  ]\n}\n\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkafka_example, err := digitalocean.NewDatabaseCluster(ctx, \"kafka-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-kafka-cluster\"),\n\t\t\tEngine:    pulumi.String(\"kafka\"),\n\t\t\tVersion:   pulumi.String(\"3.5\"),\n\t\t\tSize:      pulumi.String(\"gd-2vcpu-8gb\"),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionBLR1),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseKafkaSchemaRegistry(ctx, \"schema-01\", \u0026digitalocean.DatabaseKafkaSchemaRegistryArgs{\n\t\t\tClusterId:   kafka_example.ID(),\n\t\t\tSubjectName: pulumi.String(\"test-schema\"),\n\t\t\tSchemaType:  pulumi.String(\"avro\"),\n\t\t\tSchema: pulumi.String(`{\n  \\\"type\\\": \\\"record\\\",\n  \\\"namespace\\\": \\\"example\\\",\n  \\\"name\\\": \\\"TestRecord\\\",\n  \\\"fields\\\": [\n    {\\\"name\\\": \\\"id\\\", \\\"type\\\": \\\"string\\\"},\n    {\\\"name\\\": \\\"name\\\", \\\"type\\\": \\\"string\\\"},\n    {\\\"name\\\": \\\"value\\\", \\\"type\\\": \\\"int\\\"}\n  ]\n}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseKafkaSchemaRegistry;\nimport com.pulumi.digitalocean.DatabaseKafkaSchemaRegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var kafka_example = new DatabaseCluster(\"kafka-example\", DatabaseClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .engine(\"kafka\")\n            .version(\"3.5\")\n            .size(\"gd-2vcpu-8gb\")\n            .region(\"blr1\")\n            .nodeCount(3)\n            .tags(\"production\")\n            .build());\n\n        var schema_01 = new DatabaseKafkaSchemaRegistry(\"schema-01\", DatabaseKafkaSchemaRegistryArgs.builder()\n            .clusterId(kafka_example.id())\n            .subjectName(\"test-schema\")\n            .schemaType(\"avro\")\n            .schema(\"\"\"\n{\n  \\\"type\\\": \\\"record\\\",\n  \\\"namespace\\\": \\\"example\\\",\n  \\\"name\\\": \\\"TestRecord\\\",\n  \\\"fields\\\": [\n    {\\\"name\\\": \\\"id\\\", \\\"type\\\": \\\"string\\\"},\n    {\\\"name\\\": \\\"name\\\", \\\"type\\\": \\\"string\\\"},\n    {\\\"name\\\": \\\"value\\\", \\\"type\\\": \\\"int\\\"}\n  ]\n}\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  schema-01:\n    type: digitalocean:DatabaseKafkaSchemaRegistry\n    properties:\n      clusterId: ${[\"kafka-example\"].id}\n      subjectName: test-schema\n      schemaType: avro\n      schema: |\n        {\n          \\\"type\\\": \\\"record\\\",\n          \\\"namespace\\\": \\\"example\\\",\n          \\\"name\\\": \\\"TestRecord\\\",\n          \\\"fields\\\": [\n            {\\\"name\\\": \\\"id\\\", \\\"type\\\": \\\"string\\\"},\n            {\\\"name\\\": \\\"name\\\", \\\"type\\\": \\\"string\\\"},\n            {\\\"name\\\": \\\"value\\\", \\\"type\\\": \\\"int\\\"}\n          ]\n        }\n  kafka-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-kafka-cluster\n      engine: kafka\n      version: '3.5'\n      size: gd-2vcpu-8gb\n      region: blr1\n      nodeCount: 3\n      tags:\n        - production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Kafka cluster.\n"
                },
                "schema": {
                    "type": "string",
                    "description": "The schema definition as a string.\n"
                },
                "schemaType": {
                    "type": "string",
                    "description": "The schema type. Available values are: avro, json, or protobuf.\n"
                },
                "subjectName": {
                    "type": "string",
                    "description": "The name of the schema subject.\n"
                }
            },
            "required": [
                "clusterId",
                "schema",
                "schemaType",
                "subjectName"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Kafka cluster.\n",
                    "willReplaceOnChanges": true
                },
                "schema": {
                    "type": "string",
                    "description": "The schema definition as a string.\n",
                    "willReplaceOnChanges": true
                },
                "schemaType": {
                    "type": "string",
                    "description": "The schema type. Available values are: avro, json, or protobuf.\n",
                    "willReplaceOnChanges": true
                },
                "subjectName": {
                    "type": "string",
                    "description": "The name of the schema subject.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId",
                "schema",
                "schemaType",
                "subjectName"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseKafkaSchemaRegistry resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target Kafka cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "schema": {
                        "type": "string",
                        "description": "The schema definition as a string.\n",
                        "willReplaceOnChanges": true
                    },
                    "schemaType": {
                        "type": "string",
                        "description": "The schema type. Available values are: avro, json, or protobuf.\n",
                        "willReplaceOnChanges": true
                    },
                    "subjectName": {
                        "type": "string",
                        "description": "The name of the schema subject.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseKafkaTopic:DatabaseKafkaTopic": {
            "description": "Provides a DigitalOcean Kafka topic for Kafka clusters.\n\n## Example Usage\n\n### Create a new Kafka topic\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst kafka_example = new digitalocean.DatabaseCluster(\"kafka-example\", {\n    name: \"example-kafka-cluster\",\n    engine: \"kafka\",\n    version: \"3.5\",\n    size: \"db-s-2vcpu-2gb\",\n    region: digitalocean.Region.NYC1,\n    nodeCount: 3,\n    tags: [\"production\"],\n});\nconst topic_01 = new digitalocean.DatabaseKafkaTopic(\"topic-01\", {\n    clusterId: kafka_example.id,\n    name: \"topic-01\",\n    partitionCount: 3,\n    replicationFactor: 2,\n    configs: [{\n        cleanupPolicy: \"compact\",\n        compressionType: \"uncompressed\",\n        deleteRetentionMs: \"14000\",\n        fileDeleteDelayMs: \"170000\",\n        flushMessages: \"92233\",\n        flushMs: \"92233720368\",\n        indexIntervalBytes: \"40962\",\n        maxCompactionLagMs: \"9223372036854775807\",\n        maxMessageBytes: \"1048588\",\n        messageDownConversionEnable: true,\n        messageFormatVersion: \"3.0-IV1\",\n        messageTimestampDifferenceMaxMs: \"9223372036854775807\",\n        messageTimestampType: \"log_append_time\",\n        minCleanableDirtyRatio: 0.5,\n        minCompactionLagMs: \"20000\",\n        minInsyncReplicas: 2,\n        preallocate: false,\n        retentionBytes: \"-1\",\n        retentionMs: \"-1\",\n        segmentBytes: \"209715200\",\n        segmentIndexBytes: \"10485760\",\n        segmentJitterMs: \"0\",\n        segmentMs: \"604800000\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkafka_example = digitalocean.DatabaseCluster(\"kafka-example\",\n    name=\"example-kafka-cluster\",\n    engine=\"kafka\",\n    version=\"3.5\",\n    size=\"db-s-2vcpu-2gb\",\n    region=digitalocean.Region.NYC1,\n    node_count=3,\n    tags=[\"production\"])\ntopic_01 = digitalocean.DatabaseKafkaTopic(\"topic-01\",\n    cluster_id=kafka_example.id,\n    name=\"topic-01\",\n    partition_count=3,\n    replication_factor=2,\n    configs=[{\n        \"cleanup_policy\": \"compact\",\n        \"compression_type\": \"uncompressed\",\n        \"delete_retention_ms\": \"14000\",\n        \"file_delete_delay_ms\": \"170000\",\n        \"flush_messages\": \"92233\",\n        \"flush_ms\": \"92233720368\",\n        \"index_interval_bytes\": \"40962\",\n        \"max_compaction_lag_ms\": \"9223372036854775807\",\n        \"max_message_bytes\": \"1048588\",\n        \"message_down_conversion_enable\": True,\n        \"message_format_version\": \"3.0-IV1\",\n        \"message_timestamp_difference_max_ms\": \"9223372036854775807\",\n        \"message_timestamp_type\": \"log_append_time\",\n        \"min_cleanable_dirty_ratio\": 0.5,\n        \"min_compaction_lag_ms\": \"20000\",\n        \"min_insync_replicas\": 2,\n        \"preallocate\": False,\n        \"retention_bytes\": \"-1\",\n        \"retention_ms\": \"-1\",\n        \"segment_bytes\": \"209715200\",\n        \"segment_index_bytes\": \"10485760\",\n        \"segment_jitter_ms\": \"0\",\n        \"segment_ms\": \"604800000\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafka_example = new DigitalOcean.DatabaseCluster(\"kafka-example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Engine = \"kafka\",\n        Version = \"3.5\",\n        Size = \"db-s-2vcpu-2gb\",\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 3,\n        Tags = new[]\n        {\n            \"production\",\n        },\n    });\n\n    var topic_01 = new DigitalOcean.DatabaseKafkaTopic(\"topic-01\", new()\n    {\n        ClusterId = kafka_example.Id,\n        Name = \"topic-01\",\n        PartitionCount = 3,\n        ReplicationFactor = 2,\n        Configs = new[]\n        {\n            new DigitalOcean.Inputs.DatabaseKafkaTopicConfigArgs\n            {\n                CleanupPolicy = \"compact\",\n                CompressionType = \"uncompressed\",\n                DeleteRetentionMs = \"14000\",\n                FileDeleteDelayMs = \"170000\",\n                FlushMessages = \"92233\",\n                FlushMs = \"92233720368\",\n                IndexIntervalBytes = \"40962\",\n                MaxCompactionLagMs = \"9223372036854775807\",\n                MaxMessageBytes = \"1048588\",\n                MessageDownConversionEnable = true,\n                MessageFormatVersion = \"3.0-IV1\",\n                MessageTimestampDifferenceMaxMs = \"9223372036854775807\",\n                MessageTimestampType = \"log_append_time\",\n                MinCleanableDirtyRatio = 0.5,\n                MinCompactionLagMs = \"20000\",\n                MinInsyncReplicas = 2,\n                Preallocate = false,\n                RetentionBytes = \"-1\",\n                RetentionMs = \"-1\",\n                SegmentBytes = \"209715200\",\n                SegmentIndexBytes = \"10485760\",\n                SegmentJitterMs = \"0\",\n                SegmentMs = \"604800000\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkafka_example, err := digitalocean.NewDatabaseCluster(ctx, \"kafka-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-kafka-cluster\"),\n\t\t\tEngine:    pulumi.String(\"kafka\"),\n\t\t\tVersion:   pulumi.String(\"3.5\"),\n\t\t\tSize:      pulumi.String(\"db-s-2vcpu-2gb\"),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseKafkaTopic(ctx, \"topic-01\", \u0026digitalocean.DatabaseKafkaTopicArgs{\n\t\t\tClusterId:         kafka_example.ID(),\n\t\t\tName:              pulumi.String(\"topic-01\"),\n\t\t\tPartitionCount:    pulumi.Int(3),\n\t\t\tReplicationFactor: pulumi.Int(2),\n\t\t\tConfigs: digitalocean.DatabaseKafkaTopicConfigArray{\n\t\t\t\t\u0026digitalocean.DatabaseKafkaTopicConfigArgs{\n\t\t\t\t\tCleanupPolicy:                   pulumi.String(\"compact\"),\n\t\t\t\t\tCompressionType:                 pulumi.String(\"uncompressed\"),\n\t\t\t\t\tDeleteRetentionMs:               pulumi.String(\"14000\"),\n\t\t\t\t\tFileDeleteDelayMs:               pulumi.String(\"170000\"),\n\t\t\t\t\tFlushMessages:                   pulumi.String(\"92233\"),\n\t\t\t\t\tFlushMs:                         pulumi.String(\"92233720368\"),\n\t\t\t\t\tIndexIntervalBytes:              pulumi.String(\"40962\"),\n\t\t\t\t\tMaxCompactionLagMs:              pulumi.String(\"9223372036854775807\"),\n\t\t\t\t\tMaxMessageBytes:                 pulumi.String(\"1048588\"),\n\t\t\t\t\tMessageDownConversionEnable:     pulumi.Bool(true),\n\t\t\t\t\tMessageFormatVersion:            pulumi.String(\"3.0-IV1\"),\n\t\t\t\t\tMessageTimestampDifferenceMaxMs: pulumi.String(\"9223372036854775807\"),\n\t\t\t\t\tMessageTimestampType:            pulumi.String(\"log_append_time\"),\n\t\t\t\t\tMinCleanableDirtyRatio:          pulumi.Float64(0.5),\n\t\t\t\t\tMinCompactionLagMs:              pulumi.String(\"20000\"),\n\t\t\t\t\tMinInsyncReplicas:               pulumi.Int(2),\n\t\t\t\t\tPreallocate:                     pulumi.Bool(false),\n\t\t\t\t\tRetentionBytes:                  pulumi.String(\"-1\"),\n\t\t\t\t\tRetentionMs:                     pulumi.String(\"-1\"),\n\t\t\t\t\tSegmentBytes:                    pulumi.String(\"209715200\"),\n\t\t\t\t\tSegmentIndexBytes:               pulumi.String(\"10485760\"),\n\t\t\t\t\tSegmentJitterMs:                 pulumi.String(\"0\"),\n\t\t\t\t\tSegmentMs:                       pulumi.String(\"604800000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseKafkaTopic;\nimport com.pulumi.digitalocean.DatabaseKafkaTopicArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseKafkaTopicConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var kafka_example = new DatabaseCluster(\"kafka-example\", DatabaseClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .engine(\"kafka\")\n            .version(\"3.5\")\n            .size(\"db-s-2vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(3)\n            .tags(\"production\")\n            .build());\n\n        var topic_01 = new DatabaseKafkaTopic(\"topic-01\", DatabaseKafkaTopicArgs.builder()\n            .clusterId(kafka_example.id())\n            .name(\"topic-01\")\n            .partitionCount(3)\n            .replicationFactor(2)\n            .configs(DatabaseKafkaTopicConfigArgs.builder()\n                .cleanupPolicy(\"compact\")\n                .compressionType(\"uncompressed\")\n                .deleteRetentionMs(\"14000\")\n                .fileDeleteDelayMs(\"170000\")\n                .flushMessages(\"92233\")\n                .flushMs(\"92233720368\")\n                .indexIntervalBytes(\"40962\")\n                .maxCompactionLagMs(\"9223372036854775807\")\n                .maxMessageBytes(\"1048588\")\n                .messageDownConversionEnable(true)\n                .messageFormatVersion(\"3.0-IV1\")\n                .messageTimestampDifferenceMaxMs(\"9223372036854775807\")\n                .messageTimestampType(\"log_append_time\")\n                .minCleanableDirtyRatio(0.5)\n                .minCompactionLagMs(\"20000\")\n                .minInsyncReplicas(2)\n                .preallocate(false)\n                .retentionBytes(\"-1\")\n                .retentionMs(\"-1\")\n                .segmentBytes(\"209715200\")\n                .segmentIndexBytes(\"10485760\")\n                .segmentJitterMs(\"0\")\n                .segmentMs(\"604800000\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  topic-01:\n    type: digitalocean:DatabaseKafkaTopic\n    properties:\n      clusterId: ${[\"kafka-example\"].id}\n      name: topic-01\n      partitionCount: 3\n      replicationFactor: 2\n      configs:\n        - cleanupPolicy: compact\n          compressionType: uncompressed\n          deleteRetentionMs: 14000\n          fileDeleteDelayMs: 170000\n          flushMessages: 92233\n          flushMs: 9.2233720368e+10\n          indexIntervalBytes: 40962\n          maxCompactionLagMs: 9.223372036854776e+18\n          maxMessageBytes: 1.048588e+06\n          messageDownConversionEnable: true\n          messageFormatVersion: 3.0-IV1\n          messageTimestampDifferenceMaxMs: 9.223372036854776e+18\n          messageTimestampType: log_append_time\n          minCleanableDirtyRatio: 0.5\n          minCompactionLagMs: 20000\n          minInsyncReplicas: 2\n          preallocate: false\n          retentionBytes: -1\n          retentionMs: -1\n          segmentBytes: 2.097152e+08\n          segmentIndexBytes: 1.048576e+07\n          segmentJitterMs: 0\n          segmentMs: 6.048e+08\n  kafka-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-kafka-cluster\n      engine: kafka\n      version: '3.5'\n      size: db-s-2vcpu-2gb\n      region: nyc1\n      nodeCount: 3\n      tags:\n        - production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopics can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of the source cluster and the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of the topic joined with a comma. For example:\n\n```sh\n$ pulumi import digitalocean:index/databaseKafkaTopic:DatabaseKafkaTopic topic-01 245bcfd0-7f31-4ce6-a2bc-475a116cca97,topic-01\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the source database cluster. Note: This must be a Kafka cluster.\n"
                },
                "configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseKafkaTopicConfig:DatabaseKafkaTopicConfig"
                    },
                    "description": "A set of advanced configuration parameters. Defaults will be set for any of the parameters that are not included.\nThe \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e block is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the topic.\n"
                },
                "partitionCount": {
                    "type": "integer",
                    "description": "The number of partitions for the topic. Default and minimum set at 3, maximum is 2048.\n"
                },
                "replicationFactor": {
                    "type": "integer",
                    "description": "The number of nodes that topics are replicated across. Default and minimum set at 2, maximum is the number of nodes in the cluster.\n"
                },
                "state": {
                    "type": "string",
                    "description": "The current status of the topic. Possible values are 'active', 'configuring', and 'deleting'.\n"
                }
            },
            "required": [
                "clusterId",
                "configs",
                "name",
                "state"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the source database cluster. Note: This must be a Kafka cluster.\n",
                    "willReplaceOnChanges": true
                },
                "configs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseKafkaTopicConfig:DatabaseKafkaTopicConfig"
                    },
                    "description": "A set of advanced configuration parameters. Defaults will be set for any of the parameters that are not included.\nThe \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e block is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the topic.\n",
                    "willReplaceOnChanges": true
                },
                "partitionCount": {
                    "type": "integer",
                    "description": "The number of partitions for the topic. Default and minimum set at 3, maximum is 2048.\n"
                },
                "replicationFactor": {
                    "type": "integer",
                    "description": "The number of nodes that topics are replicated across. Default and minimum set at 2, maximum is the number of nodes in the cluster.\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseKafkaTopic resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the source database cluster. Note: This must be a Kafka cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "configs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/DatabaseKafkaTopicConfig:DatabaseKafkaTopicConfig"
                        },
                        "description": "A set of advanced configuration parameters. Defaults will be set for any of the parameters that are not included.\nThe \u003cspan pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\"\u003e`config`\u003c/span\u003e block is documented below.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the topic.\n",
                        "willReplaceOnChanges": true
                    },
                    "partitionCount": {
                        "type": "integer",
                        "description": "The number of partitions for the topic. Default and minimum set at 3, maximum is 2048.\n"
                    },
                    "replicationFactor": {
                        "type": "integer",
                        "description": "The number of nodes that topics are replicated across. Default and minimum set at 2, maximum is the number of nodes in the cluster.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "The current status of the topic. Possible values are 'active', 'configuring', and 'deleting'.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch": {
            "description": "Provides a DigitalOcean database logsink resource allowing you to forward logs from a managed database cluster to an external OpenSearch cluster or Elasticsearch endpoint.\n\nThis resource is compatible with both OpenSearch and Elasticsearch endpoints due to API compatibility. You can use this resource to connect to either service.\n\nThis resource supports the following DigitalOcean managed database engines:\n\n* PostgreSQL\n* MySQL\n* Kafka\n* Valkey\n\n**Note**: MongoDB databases use a different log forwarding mechanism and require Datadog logsinks (not currently available in this provider).\n\n## Example Usage\n\n### Basic OpenSearch configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst example = new digitalocean.DatabaseLogsinkOpensearch(\"example\", {\n    clusterId: postgres_example.id,\n    name: \"opensearch-logs\",\n    endpoint: \"https://opensearch.example.com:9200\",\n    indexPrefix: \"db-logs\",\n    indexDaysMax: 7,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nexample = digitalocean.DatabaseLogsinkOpensearch(\"example\",\n    cluster_id=postgres_example.id,\n    name=\"opensearch-logs\",\n    endpoint=\"https://opensearch.example.com:9200\",\n    index_prefix=\"db-logs\",\n    index_days_max=7)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var example = new DigitalOcean.DatabaseLogsinkOpensearch(\"example\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"opensearch-logs\",\n        Endpoint = \"https://opensearch.example.com:9200\",\n        IndexPrefix = \"db-logs\",\n        IndexDaysMax = 7,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseLogsinkOpensearch(ctx, \"example\", \u0026digitalocean.DatabaseLogsinkOpensearchArgs{\n\t\t\tClusterId:    postgres_example.ID(),\n\t\t\tName:         pulumi.String(\"opensearch-logs\"),\n\t\t\tEndpoint:     pulumi.String(\"https://opensearch.example.com:9200\"),\n\t\t\tIndexPrefix:  pulumi.String(\"db-logs\"),\n\t\t\tIndexDaysMax: pulumi.Int(7),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseLogsinkOpensearch;\nimport com.pulumi.digitalocean.DatabaseLogsinkOpensearchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var example = new DatabaseLogsinkOpensearch(\"example\", DatabaseLogsinkOpensearchArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"opensearch-logs\")\n            .endpoint(\"https://opensearch.example.com:9200\")\n            .indexPrefix(\"db-logs\")\n            .indexDaysMax(7)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabaseLogsinkOpensearch\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: opensearch-logs\n      endpoint: https://opensearch.example.com:9200\n      indexPrefix: db-logs\n      indexDaysMax: 7\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenSearch with authentication and CA certificate\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\nconst example_secure = new digitalocean.DatabaseLogsinkOpensearch(\"example-secure\", {\n    clusterId: postgres_example.id,\n    name: \"opensearch-secure\",\n    endpoint: \"https://user:password@opensearch.example.com:9200\",\n    indexPrefix: \"secure-logs\",\n    indexDaysMax: 14,\n    caCert: std.file({\n        input: \"/path/to/ca.pem\",\n    }).then(invoke =\u003e invoke.result),\n    timeoutSeconds: 30,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\nexample_secure = digitalocean.DatabaseLogsinkOpensearch(\"example-secure\",\n    cluster_id=postgres_example[\"id\"],\n    name=\"opensearch-secure\",\n    endpoint=\"https://user:password@opensearch.example.com:9200\",\n    index_prefix=\"secure-logs\",\n    index_days_max=14,\n    ca_cert=std.file(input=\"/path/to/ca.pem\").result,\n    timeout_seconds=30)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example_secure = new DigitalOcean.DatabaseLogsinkOpensearch(\"example-secure\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"opensearch-secure\",\n        Endpoint = \"https://user:password@opensearch.example.com:9200\",\n        IndexPrefix = \"secure-logs\",\n        IndexDaysMax = 14,\n        CaCert = Std.File.Invoke(new()\n        {\n            Input = \"/path/to/ca.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        TimeoutSeconds = 30,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/path/to/ca.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseLogsinkOpensearch(ctx, \"example-secure\", \u0026digitalocean.DatabaseLogsinkOpensearchArgs{\n\t\t\tClusterId:      pulumi.Any(postgres_example.Id),\n\t\t\tName:           pulumi.String(\"opensearch-secure\"),\n\t\t\tEndpoint:       pulumi.String(\"https://user:password@opensearch.example.com:9200\"),\n\t\t\tIndexPrefix:    pulumi.String(\"secure-logs\"),\n\t\t\tIndexDaysMax:   pulumi.Int(14),\n\t\t\tCaCert:         pulumi.String(invokeFile.Result),\n\t\t\tTimeoutSeconds: pulumi.Int(30),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseLogsinkOpensearch;\nimport com.pulumi.digitalocean.DatabaseLogsinkOpensearchArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example_secure = new DatabaseLogsinkOpensearch(\"example-secure\", DatabaseLogsinkOpensearchArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"opensearch-secure\")\n            .endpoint(\"https://user:password@opensearch.example.com:9200\")\n            .indexPrefix(\"secure-logs\")\n            .indexDaysMax(14)\n            .caCert(StdFunctions.file(FileArgs.builder()\n                .input(\"/path/to/ca.pem\")\n                .build()).result())\n            .timeoutSeconds(30)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-secure:\n    type: digitalocean:DatabaseLogsinkOpensearch\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: opensearch-secure\n      endpoint: https://user:password@opensearch.example.com:9200\n      indexPrefix: secure-logs\n      indexDaysMax: 14\n      caCert:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /path/to/ca.pem\n          return: result\n      timeoutSeconds: 30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Elasticsearch endpoint configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst elasticsearch = new digitalocean.DatabaseLogsinkOpensearch(\"elasticsearch\", {\n    clusterId: postgres_example.id,\n    name: \"elasticsearch-logs\",\n    endpoint: \"https://elasticsearch.example.com:9243\",\n    indexPrefix: \"es-logs\",\n    indexDaysMax: 30,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nelasticsearch = digitalocean.DatabaseLogsinkOpensearch(\"elasticsearch\",\n    cluster_id=postgres_example[\"id\"],\n    name=\"elasticsearch-logs\",\n    endpoint=\"https://elasticsearch.example.com:9243\",\n    index_prefix=\"es-logs\",\n    index_days_max=30)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var elasticsearch = new DigitalOcean.DatabaseLogsinkOpensearch(\"elasticsearch\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"elasticsearch-logs\",\n        Endpoint = \"https://elasticsearch.example.com:9243\",\n        IndexPrefix = \"es-logs\",\n        IndexDaysMax = 30,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseLogsinkOpensearch(ctx, \"elasticsearch\", \u0026digitalocean.DatabaseLogsinkOpensearchArgs{\n\t\t\tClusterId:    pulumi.Any(postgres_example.Id),\n\t\t\tName:         pulumi.String(\"elasticsearch-logs\"),\n\t\t\tEndpoint:     pulumi.String(\"https://elasticsearch.example.com:9243\"),\n\t\t\tIndexPrefix:  pulumi.String(\"es-logs\"),\n\t\t\tIndexDaysMax: pulumi.Int(30),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseLogsinkOpensearch;\nimport com.pulumi.digitalocean.DatabaseLogsinkOpensearchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var elasticsearch = new DatabaseLogsinkOpensearch(\"elasticsearch\", DatabaseLogsinkOpensearchArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"elasticsearch-logs\")\n            .endpoint(\"https://elasticsearch.example.com:9243\")\n            .indexPrefix(\"es-logs\")\n            .indexDaysMax(30)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  elasticsearch:\n    type: digitalocean:DatabaseLogsinkOpensearch\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: elasticsearch-logs\n      endpoint: https://elasticsearch.example.com:9243\n      indexPrefix: es-logs\n      indexDaysMax: 30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### MySQL to OpenSearch configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst mysql_example = new digitalocean.DatabaseCluster(\"mysql-example\", {\n    name: \"example-mysql-cluster\",\n    engine: \"mysql\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst mysql = new digitalocean.DatabaseLogsinkOpensearch(\"mysql\", {\n    clusterId: mysql_example.id,\n    name: \"mysql-logs\",\n    endpoint: \"https://opensearch.example.com:9200\",\n    indexPrefix: \"mysql-logs\",\n    indexDaysMax: 7,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmysql_example = digitalocean.DatabaseCluster(\"mysql-example\",\n    name=\"example-mysql-cluster\",\n    engine=\"mysql\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nmysql = digitalocean.DatabaseLogsinkOpensearch(\"mysql\",\n    cluster_id=mysql_example.id,\n    name=\"mysql-logs\",\n    endpoint=\"https://opensearch.example.com:9200\",\n    index_prefix=\"mysql-logs\",\n    index_days_max=7)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mysql_example = new DigitalOcean.DatabaseCluster(\"mysql-example\", new()\n    {\n        Name = \"example-mysql-cluster\",\n        Engine = \"mysql\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var mysql = new DigitalOcean.DatabaseLogsinkOpensearch(\"mysql\", new()\n    {\n        ClusterId = mysql_example.Id,\n        Name = \"mysql-logs\",\n        Endpoint = \"https://opensearch.example.com:9200\",\n        IndexPrefix = \"mysql-logs\",\n        IndexDaysMax = 7,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmysql_example, err := digitalocean.NewDatabaseCluster(ctx, \"mysql-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mysql-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mysql\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseLogsinkOpensearch(ctx, \"mysql\", \u0026digitalocean.DatabaseLogsinkOpensearchArgs{\n\t\t\tClusterId:    mysql_example.ID(),\n\t\t\tName:         pulumi.String(\"mysql-logs\"),\n\t\t\tEndpoint:     pulumi.String(\"https://opensearch.example.com:9200\"),\n\t\t\tIndexPrefix:  pulumi.String(\"mysql-logs\"),\n\t\t\tIndexDaysMax: pulumi.Int(7),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseLogsinkOpensearch;\nimport com.pulumi.digitalocean.DatabaseLogsinkOpensearchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var mysql_example = new DatabaseCluster(\"mysql-example\", DatabaseClusterArgs.builder()\n            .name(\"example-mysql-cluster\")\n            .engine(\"mysql\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var mysql = new DatabaseLogsinkOpensearch(\"mysql\", DatabaseLogsinkOpensearchArgs.builder()\n            .clusterId(mysql_example.id())\n            .name(\"mysql-logs\")\n            .endpoint(\"https://opensearch.example.com:9200\")\n            .indexPrefix(\"mysql-logs\")\n            .indexDaysMax(7)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  mysql:\n    type: digitalocean:DatabaseLogsinkOpensearch\n    properties:\n      clusterId: ${[\"mysql-example\"].id}\n      name: mysql-logs\n      endpoint: https://opensearch.example.com:9200\n      indexPrefix: mysql-logs\n      indexDaysMax: 7\n  mysql-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-mysql-cluster\n      engine: mysql\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\n### Elasticsearch Compatibility\nThis resource works with both OpenSearch and Elasticsearch endpoints due to their API compatibility. Use the same resource type regardless of whether you're connecting to OpenSearch or Elasticsearch.\n\n### Managed OpenSearch with Trusted Sources\nWhen forwarding logs to a DigitalOcean Managed OpenSearch cluster with trusted sources enabled, you must manually allow-list the IP addresses of your database cluster nodes.\n\n### Authentication\nInclude authentication credentials directly in the endpoint URL using the format `https://username:password@host:port`. Alternatively, configure authentication on your OpenSearch/Elasticsearch cluster to accept connections from your database cluster's IP addresses.\n\n## Import\n\nDatabase logsink OpenSearch resources can be imported using the composite ID format `cluster_id,logsink_id`. For example:\n\n```sh\n$ pulumi import digitalocean:index/databaseLogsinkOpensearch:DatabaseLogsinkOpensearch example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,f38db7c8-1f31-4ce6-a2bc-475a116cca97\n```\n\n**Note**: The cluster ID and logsink ID must be separated by a comma.\n\n",
            "properties": {
                "caCert": {
                    "type": "string",
                    "description": "CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.\n",
                    "secret": true
                },
                "clusterId": {
                    "type": "string",
                    "description": "UUID of the source database cluster that will forward logs.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.\n"
                },
                "indexDaysMax": {
                    "type": "integer",
                    "description": "Maximum number of days to retain indices. Must be 1 or greater.\n"
                },
                "indexPrefix": {
                    "type": "string",
                    "description": "Prefix for the indices where logs will be stored.\n"
                },
                "logsinkId": {
                    "type": "string",
                    "description": "The unique identifier for the logsink as returned by the DigitalOcean API.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.\n"
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Request timeout for log deliveries in seconds. Must be 1 or greater.\n"
                }
            },
            "required": [
                "clusterId",
                "endpoint",
                "indexPrefix",
                "logsinkId",
                "name"
            ],
            "inputProperties": {
                "caCert": {
                    "type": "string",
                    "description": "CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.\n",
                    "secret": true
                },
                "clusterId": {
                    "type": "string",
                    "description": "UUID of the source database cluster that will forward logs.\n",
                    "willReplaceOnChanges": true
                },
                "endpoint": {
                    "type": "string",
                    "description": "HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.\n"
                },
                "indexDaysMax": {
                    "type": "integer",
                    "description": "Maximum number of days to retain indices. Must be 1 or greater.\n"
                },
                "indexPrefix": {
                    "type": "string",
                    "description": "Prefix for the indices where logs will be stored.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.\n",
                    "willReplaceOnChanges": true
                },
                "timeoutSeconds": {
                    "type": "integer",
                    "description": "Request timeout for log deliveries in seconds. Must be 1 or greater.\n"
                }
            },
            "requiredInputs": [
                "clusterId",
                "endpoint",
                "indexPrefix"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseLogsinkOpensearch resources.\n",
                "properties": {
                    "caCert": {
                        "type": "string",
                        "description": "CA certificate for TLS verification in PEM format. Can be specified using `file()` function. This field is marked as sensitive.\n",
                        "secret": true
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "UUID of the source database cluster that will forward logs.\n",
                        "willReplaceOnChanges": true
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "HTTPS URL to the OpenSearch or Elasticsearch cluster (e.g., `https://host:port`). **Note**: Only HTTPS URLs are supported.\n"
                    },
                    "indexDaysMax": {
                        "type": "integer",
                        "description": "Maximum number of days to retain indices. Must be 1 or greater.\n"
                    },
                    "indexPrefix": {
                        "type": "string",
                        "description": "Prefix for the indices where logs will be stored.\n"
                    },
                    "logsinkId": {
                        "type": "string",
                        "description": "The unique identifier for the logsink as returned by the DigitalOcean API.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "timeoutSeconds": {
                        "type": "integer",
                        "description": "Request timeout for log deliveries in seconds. Must be 1 or greater.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseLogsinkRsyslog:DatabaseLogsinkRsyslog": {
            "description": "Provides a DigitalOcean database logsink resource allowing you to forward logs from a managed database cluster to an external rsyslog server.\n\nThis resource supports the following DigitalOcean managed database engines:\n\n* PostgreSQL\n* MySQL\n* Kafka\n* Valkey\n\n**Note**: MongoDB databases use a different log forwarding mechanism and require Datadog logsinks (not currently available in this provider).\n\n## Example Usage\n\n### Basic rsyslog configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst example = new digitalocean.DatabaseLogsinkRsyslog(\"example\", {\n    clusterId: postgres_example.id,\n    name: \"rsyslog-prod\",\n    server: \"192.0.2.10\",\n    port: 514,\n    format: \"rfc5424\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nexample = digitalocean.DatabaseLogsinkRsyslog(\"example\",\n    cluster_id=postgres_example.id,\n    name=\"rsyslog-prod\",\n    server=\"192.0.2.10\",\n    port=514,\n    format=\"rfc5424\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var example = new DigitalOcean.DatabaseLogsinkRsyslog(\"example\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"rsyslog-prod\",\n        Server = \"192.0.2.10\",\n        Port = 514,\n        Format = \"rfc5424\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseLogsinkRsyslog(ctx, \"example\", \u0026digitalocean.DatabaseLogsinkRsyslogArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tName:      pulumi.String(\"rsyslog-prod\"),\n\t\t\tServer:    pulumi.String(\"192.0.2.10\"),\n\t\t\tPort:      pulumi.Int(514),\n\t\t\tFormat:    pulumi.String(\"rfc5424\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseLogsinkRsyslog;\nimport com.pulumi.digitalocean.DatabaseLogsinkRsyslogArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var example = new DatabaseLogsinkRsyslog(\"example\", DatabaseLogsinkRsyslogArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"rsyslog-prod\")\n            .server(\"192.0.2.10\")\n            .port(514)\n            .format(\"rfc5424\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabaseLogsinkRsyslog\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: rsyslog-prod\n      server: 192.0.2.10\n      port: 514\n      format: rfc5424\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### TLS-enabled rsyslog configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\nconst example_tls = new digitalocean.DatabaseLogsinkRsyslog(\"example-tls\", {\n    clusterId: postgres_example.id,\n    name: \"rsyslog-secure\",\n    server: \"logs.example.com\",\n    port: 6514,\n    tls: true,\n    format: \"rfc5424\",\n    caCert: std.file({\n        input: \"/path/to/ca.pem\",\n    }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\nexample_tls = digitalocean.DatabaseLogsinkRsyslog(\"example-tls\",\n    cluster_id=postgres_example[\"id\"],\n    name=\"rsyslog-secure\",\n    server=\"logs.example.com\",\n    port=6514,\n    tls=True,\n    format=\"rfc5424\",\n    ca_cert=std.file(input=\"/path/to/ca.pem\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example_tls = new DigitalOcean.DatabaseLogsinkRsyslog(\"example-tls\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"rsyslog-secure\",\n        Server = \"logs.example.com\",\n        Port = 6514,\n        Tls = true,\n        Format = \"rfc5424\",\n        CaCert = Std.File.Invoke(new()\n        {\n            Input = \"/path/to/ca.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/path/to/ca.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseLogsinkRsyslog(ctx, \"example-tls\", \u0026digitalocean.DatabaseLogsinkRsyslogArgs{\n\t\t\tClusterId: pulumi.Any(postgres_example.Id),\n\t\t\tName:      pulumi.String(\"rsyslog-secure\"),\n\t\t\tServer:    pulumi.String(\"logs.example.com\"),\n\t\t\tPort:      pulumi.Int(6514),\n\t\t\tTls:       pulumi.Bool(true),\n\t\t\tFormat:    pulumi.String(\"rfc5424\"),\n\t\t\tCaCert:    pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseLogsinkRsyslog;\nimport com.pulumi.digitalocean.DatabaseLogsinkRsyslogArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example_tls = new DatabaseLogsinkRsyslog(\"example-tls\", DatabaseLogsinkRsyslogArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"rsyslog-secure\")\n            .server(\"logs.example.com\")\n            .port(6514)\n            .tls(true)\n            .format(\"rfc5424\")\n            .caCert(StdFunctions.file(FileArgs.builder()\n                .input(\"/path/to/ca.pem\")\n                .build()).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-tls:\n    type: digitalocean:DatabaseLogsinkRsyslog\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: rsyslog-secure\n      server: logs.example.com\n      port: 6514\n      tls: true\n      format: rfc5424\n      caCert:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /path/to/ca.pem\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### mTLS (mutual TLS) configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\nconst example_mtls = new digitalocean.DatabaseLogsinkRsyslog(\"example-mtls\", {\n    clusterId: postgres_example.id,\n    name: \"rsyslog-mtls\",\n    server: \"secure-logs.example.com\",\n    port: 6514,\n    tls: true,\n    format: \"rfc5424\",\n    caCert: std.file({\n        input: \"/path/to/ca.pem\",\n    }).then(invoke =\u003e invoke.result),\n    clientCert: std.file({\n        input: \"/path/to/client.crt\",\n    }).then(invoke =\u003e invoke.result),\n    clientKey: std.file({\n        input: \"/path/to/client.key\",\n    }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\nexample_mtls = digitalocean.DatabaseLogsinkRsyslog(\"example-mtls\",\n    cluster_id=postgres_example[\"id\"],\n    name=\"rsyslog-mtls\",\n    server=\"secure-logs.example.com\",\n    port=6514,\n    tls=True,\n    format=\"rfc5424\",\n    ca_cert=std.file(input=\"/path/to/ca.pem\").result,\n    client_cert=std.file(input=\"/path/to/client.crt\").result,\n    client_key=std.file(input=\"/path/to/client.key\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example_mtls = new DigitalOcean.DatabaseLogsinkRsyslog(\"example-mtls\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"rsyslog-mtls\",\n        Server = \"secure-logs.example.com\",\n        Port = 6514,\n        Tls = true,\n        Format = \"rfc5424\",\n        CaCert = Std.File.Invoke(new()\n        {\n            Input = \"/path/to/ca.pem\",\n        }).Apply(invoke =\u003e invoke.Result),\n        ClientCert = Std.File.Invoke(new()\n        {\n            Input = \"/path/to/client.crt\",\n        }).Apply(invoke =\u003e invoke.Result),\n        ClientKey = Std.File.Invoke(new()\n        {\n            Input = \"/path/to/client.key\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/path/to/ca.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/path/to/client.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/path/to/client.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseLogsinkRsyslog(ctx, \"example-mtls\", \u0026digitalocean.DatabaseLogsinkRsyslogArgs{\n\t\t\tClusterId:  pulumi.Any(postgres_example.Id),\n\t\t\tName:       pulumi.String(\"rsyslog-mtls\"),\n\t\t\tServer:     pulumi.String(\"secure-logs.example.com\"),\n\t\t\tPort:       pulumi.Int(6514),\n\t\t\tTls:        pulumi.Bool(true),\n\t\t\tFormat:     pulumi.String(\"rfc5424\"),\n\t\t\tCaCert:     pulumi.String(invokeFile.Result),\n\t\t\tClientCert: pulumi.String(invokeFile1.Result),\n\t\t\tClientKey:  pulumi.String(invokeFile2.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseLogsinkRsyslog;\nimport com.pulumi.digitalocean.DatabaseLogsinkRsyslogArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example_mtls = new DatabaseLogsinkRsyslog(\"example-mtls\", DatabaseLogsinkRsyslogArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"rsyslog-mtls\")\n            .server(\"secure-logs.example.com\")\n            .port(6514)\n            .tls(true)\n            .format(\"rfc5424\")\n            .caCert(StdFunctions.file(FileArgs.builder()\n                .input(\"/path/to/ca.pem\")\n                .build()).result())\n            .clientCert(StdFunctions.file(FileArgs.builder()\n                .input(\"/path/to/client.crt\")\n                .build()).result())\n            .clientKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/path/to/client.key\")\n                .build()).result())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-mtls:\n    type: digitalocean:DatabaseLogsinkRsyslog\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: rsyslog-mtls\n      server: secure-logs.example.com\n      port: 6514\n      tls: true\n      format: rfc5424\n      caCert:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /path/to/ca.pem\n          return: result\n      clientCert:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /path/to/client.crt\n          return: result\n      clientKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /path/to/client.key\n          return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Custom format configuration\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example_custom = new digitalocean.DatabaseLogsinkRsyslog(\"example-custom\", {\n    clusterId: postgres_example.id,\n    name: \"rsyslog-custom\",\n    server: \"192.0.2.10\",\n    port: 514,\n    format: \"custom\",\n    logline: \"\u003c%pri%\u003e%timestamp:::date-rfc3339% %HOSTNAME% %app-name% %msg%\",\n    structuredData: \"[example@41058 iut=\\\"3\\\"]\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_custom = digitalocean.DatabaseLogsinkRsyslog(\"example-custom\",\n    cluster_id=postgres_example[\"id\"],\n    name=\"rsyslog-custom\",\n    server=\"192.0.2.10\",\n    port=514,\n    format=\"custom\",\n    logline=\"\u003c%pri%\u003e%timestamp:::date-rfc3339% %HOSTNAME% %app-name% %msg%\",\n    structured_data=\"[example@41058 iut=\\\"3\\\"]\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example_custom = new DigitalOcean.DatabaseLogsinkRsyslog(\"example-custom\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"rsyslog-custom\",\n        Server = \"192.0.2.10\",\n        Port = 514,\n        Format = \"custom\",\n        Logline = \"\u003c%pri%\u003e%timestamp:::date-rfc3339% %HOSTNAME% %app-name% %msg%\",\n        StructuredData = \"[example@41058 iut=\\\"3\\\"]\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseLogsinkRsyslog(ctx, \"example-custom\", \u0026digitalocean.DatabaseLogsinkRsyslogArgs{\n\t\t\tClusterId:      pulumi.Any(postgres_example.Id),\n\t\t\tName:           pulumi.String(\"rsyslog-custom\"),\n\t\t\tServer:         pulumi.String(\"192.0.2.10\"),\n\t\t\tPort:           pulumi.Int(514),\n\t\t\tFormat:         pulumi.String(\"custom\"),\n\t\t\tLogline:        pulumi.String(\"\u003c%pri%\u003e%timestamp:::date-rfc3339% %HOSTNAME% %app-name% %msg%\"),\n\t\t\tStructuredData: pulumi.String(\"[example@41058 iut=\\\"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.digitalocean.DatabaseLogsinkRsyslog;\nimport com.pulumi.digitalocean.DatabaseLogsinkRsyslogArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example_custom = new DatabaseLogsinkRsyslog(\"example-custom\", DatabaseLogsinkRsyslogArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"rsyslog-custom\")\n            .server(\"192.0.2.10\")\n            .port(514)\n            .format(\"custom\")\n            .logline(\"\u003c%pri%\u003e%timestamp:::date-rfc3339% %HOSTNAME% %app-name% %msg%\")\n            .structuredData(\"[example@41058 iut=\\\"3\\\"]\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-custom:\n    type: digitalocean:DatabaseLogsinkRsyslog\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: rsyslog-custom\n      server: 192.0.2.10\n      port: 514\n      format: custom\n      logline: \u003c%pri%\u003e%timestamp:::date-rfc3339% %HOSTNAME% %app-name% %msg%\n      structuredData: '[example@41058 iut=\"3\"]'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase logsink rsyslog resources can be imported using the composite ID format `cluster_id,logsink_id`. For example:\n\n```sh\n$ pulumi import digitalocean:index/databaseLogsinkRsyslog:DatabaseLogsinkRsyslog example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,f38db7c8-1f31-4ce6-a2bc-475a116cca97\n```\n\n**Note**: The cluster ID and logsink ID must be separated by a comma.\n\n",
            "properties": {
                "caCert": {
                    "type": "string",
                    "description": "CA certificate for TLS verification in PEM format. Can be specified using `file()` function.\n",
                    "secret": true
                },
                "clientCert": {
                    "type": "string",
                    "description": "Client certificate for mutual TLS authentication in PEM format. **Note**: Requires \u003cspan pulumi-lang-nodejs=\"`tls`\" pulumi-lang-dotnet=\"`Tls`\" pulumi-lang-go=\"`tls`\" pulumi-lang-python=\"`tls`\" pulumi-lang-yaml=\"`tls`\" pulumi-lang-java=\"`tls`\"\u003e`tls`\u003c/span\u003e to be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "clientKey": {
                    "type": "string",
                    "description": "Client private key for mutual TLS authentication in PEM format. **Note**: Requires \u003cspan pulumi-lang-nodejs=\"`tls`\" pulumi-lang-dotnet=\"`Tls`\" pulumi-lang-go=\"`tls`\" pulumi-lang-python=\"`tls`\" pulumi-lang-yaml=\"`tls`\" pulumi-lang-java=\"`tls`\"\u003e`tls`\u003c/span\u003e to be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. This field is marked as sensitive.\n",
                    "secret": true
                },
                "clusterId": {
                    "type": "string",
                    "description": "UUID of the source database cluster that will forward logs.\n"
                },
                "format": {
                    "type": "string",
                    "description": "Log format to use. Must be one of \u003cspan pulumi-lang-nodejs=\"`rfc5424`\" pulumi-lang-dotnet=\"`Rfc5424`\" pulumi-lang-go=\"`rfc5424`\" pulumi-lang-python=\"`rfc5424`\" pulumi-lang-yaml=\"`rfc5424`\" pulumi-lang-java=\"`rfc5424`\"\u003e`rfc5424`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`rfc3164`\" pulumi-lang-dotnet=\"`Rfc3164`\" pulumi-lang-go=\"`rfc3164`\" pulumi-lang-python=\"`rfc3164`\" pulumi-lang-yaml=\"`rfc3164`\" pulumi-lang-java=\"`rfc3164`\"\u003e`rfc3164`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n"
                },
                "logline": {
                    "type": "string",
                    "description": "Custom logline template. **Required** when \u003cspan pulumi-lang-nodejs=\"`format`\" pulumi-lang-dotnet=\"`Format`\" pulumi-lang-go=\"`format`\" pulumi-lang-python=\"`format`\" pulumi-lang-yaml=\"`format`\" pulumi-lang-java=\"`format`\"\u003e`format`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e. Supports rsyslog-style templating with the following tokens: `%HOSTNAME%`, `%app-name%`, `%msg%`, `%msgid%`, `%pri%`, `%procid%`, `%structured-data%`, `%timestamp%`, and `%timestamp:::date-rfc3339%`.\n"
                },
                "logsinkId": {
                    "type": "string",
                    "description": "The unique identifier for the logsink as returned by the DigitalOcean API.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "Port number for the rsyslog server. Must be between 1 and 65535.\n"
                },
                "server": {
                    "type": "string",
                    "description": "Hostname or IP address of the rsyslog server.\n"
                },
                "structuredData": {
                    "type": "string",
                    "description": "Content of the structured data block for RFC5424 messages.\n"
                },
                "tls": {
                    "type": "boolean",
                    "description": "Enable TLS encryption for the rsyslog connection. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. **Note**: It is highly recommended to enable TLS as log messages may contain sensitive information.\n"
                }
            },
            "required": [
                "clusterId",
                "logsinkId",
                "name",
                "port",
                "server"
            ],
            "inputProperties": {
                "caCert": {
                    "type": "string",
                    "description": "CA certificate for TLS verification in PEM format. Can be specified using `file()` function.\n",
                    "secret": true
                },
                "clientCert": {
                    "type": "string",
                    "description": "Client certificate for mutual TLS authentication in PEM format. **Note**: Requires \u003cspan pulumi-lang-nodejs=\"`tls`\" pulumi-lang-dotnet=\"`Tls`\" pulumi-lang-go=\"`tls`\" pulumi-lang-python=\"`tls`\" pulumi-lang-yaml=\"`tls`\" pulumi-lang-java=\"`tls`\"\u003e`tls`\u003c/span\u003e to be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "clientKey": {
                    "type": "string",
                    "description": "Client private key for mutual TLS authentication in PEM format. **Note**: Requires \u003cspan pulumi-lang-nodejs=\"`tls`\" pulumi-lang-dotnet=\"`Tls`\" pulumi-lang-go=\"`tls`\" pulumi-lang-python=\"`tls`\" pulumi-lang-yaml=\"`tls`\" pulumi-lang-java=\"`tls`\"\u003e`tls`\u003c/span\u003e to be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. This field is marked as sensitive.\n",
                    "secret": true
                },
                "clusterId": {
                    "type": "string",
                    "description": "UUID of the source database cluster that will forward logs.\n",
                    "willReplaceOnChanges": true
                },
                "format": {
                    "type": "string",
                    "description": "Log format to use. Must be one of \u003cspan pulumi-lang-nodejs=\"`rfc5424`\" pulumi-lang-dotnet=\"`Rfc5424`\" pulumi-lang-go=\"`rfc5424`\" pulumi-lang-python=\"`rfc5424`\" pulumi-lang-yaml=\"`rfc5424`\" pulumi-lang-java=\"`rfc5424`\"\u003e`rfc5424`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`rfc3164`\" pulumi-lang-dotnet=\"`Rfc3164`\" pulumi-lang-go=\"`rfc3164`\" pulumi-lang-python=\"`rfc3164`\" pulumi-lang-yaml=\"`rfc3164`\" pulumi-lang-java=\"`rfc3164`\"\u003e`rfc3164`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n"
                },
                "logline": {
                    "type": "string",
                    "description": "Custom logline template. **Required** when \u003cspan pulumi-lang-nodejs=\"`format`\" pulumi-lang-dotnet=\"`Format`\" pulumi-lang-go=\"`format`\" pulumi-lang-python=\"`format`\" pulumi-lang-yaml=\"`format`\" pulumi-lang-java=\"`format`\"\u003e`format`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e. Supports rsyslog-style templating with the following tokens: `%HOSTNAME%`, `%app-name%`, `%msg%`, `%msgid%`, `%pri%`, `%procid%`, `%structured-data%`, `%timestamp%`, and `%timestamp:::date-rfc3339%`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.\n",
                    "willReplaceOnChanges": true
                },
                "port": {
                    "type": "integer",
                    "description": "Port number for the rsyslog server. Must be between 1 and 65535.\n"
                },
                "server": {
                    "type": "string",
                    "description": "Hostname or IP address of the rsyslog server.\n"
                },
                "structuredData": {
                    "type": "string",
                    "description": "Content of the structured data block for RFC5424 messages.\n"
                },
                "tls": {
                    "type": "boolean",
                    "description": "Enable TLS encryption for the rsyslog connection. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. **Note**: It is highly recommended to enable TLS as log messages may contain sensitive information.\n"
                }
            },
            "requiredInputs": [
                "clusterId",
                "port",
                "server"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseLogsinkRsyslog resources.\n",
                "properties": {
                    "caCert": {
                        "type": "string",
                        "description": "CA certificate for TLS verification in PEM format. Can be specified using `file()` function.\n",
                        "secret": true
                    },
                    "clientCert": {
                        "type": "string",
                        "description": "Client certificate for mutual TLS authentication in PEM format. **Note**: Requires \u003cspan pulumi-lang-nodejs=\"`tls`\" pulumi-lang-dotnet=\"`Tls`\" pulumi-lang-go=\"`tls`\" pulumi-lang-python=\"`tls`\" pulumi-lang-yaml=\"`tls`\" pulumi-lang-java=\"`tls`\"\u003e`tls`\u003c/span\u003e to be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                    },
                    "clientKey": {
                        "type": "string",
                        "description": "Client private key for mutual TLS authentication in PEM format. **Note**: Requires \u003cspan pulumi-lang-nodejs=\"`tls`\" pulumi-lang-dotnet=\"`Tls`\" pulumi-lang-go=\"`tls`\" pulumi-lang-python=\"`tls`\" pulumi-lang-yaml=\"`tls`\" pulumi-lang-java=\"`tls`\"\u003e`tls`\u003c/span\u003e to be \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. This field is marked as sensitive.\n",
                        "secret": true
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "UUID of the source database cluster that will forward logs.\n",
                        "willReplaceOnChanges": true
                    },
                    "format": {
                        "type": "string",
                        "description": "Log format to use. Must be one of \u003cspan pulumi-lang-nodejs=\"`rfc5424`\" pulumi-lang-dotnet=\"`Rfc5424`\" pulumi-lang-go=\"`rfc5424`\" pulumi-lang-python=\"`rfc5424`\" pulumi-lang-yaml=\"`rfc5424`\" pulumi-lang-java=\"`rfc5424`\"\u003e`rfc5424`\u003c/span\u003e (default), \u003cspan pulumi-lang-nodejs=\"`rfc3164`\" pulumi-lang-dotnet=\"`Rfc3164`\" pulumi-lang-go=\"`rfc3164`\" pulumi-lang-python=\"`rfc3164`\" pulumi-lang-yaml=\"`rfc3164`\" pulumi-lang-java=\"`rfc3164`\"\u003e`rfc3164`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e.\n"
                    },
                    "logline": {
                        "type": "string",
                        "description": "Custom logline template. **Required** when \u003cspan pulumi-lang-nodejs=\"`format`\" pulumi-lang-dotnet=\"`Format`\" pulumi-lang-go=\"`format`\" pulumi-lang-python=\"`format`\" pulumi-lang-yaml=\"`format`\" pulumi-lang-java=\"`format`\"\u003e`format`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`custom`\" pulumi-lang-dotnet=\"`Custom`\" pulumi-lang-go=\"`custom`\" pulumi-lang-python=\"`custom`\" pulumi-lang-yaml=\"`custom`\" pulumi-lang-java=\"`custom`\"\u003e`custom`\u003c/span\u003e. Supports rsyslog-style templating with the following tokens: `%HOSTNAME%`, `%app-name%`, `%msg%`, `%msgid%`, `%pri%`, `%procid%`, `%structured-data%`, `%timestamp%`, and `%timestamp:::date-rfc3339%`.\n"
                    },
                    "logsinkId": {
                        "type": "string",
                        "description": "The unique identifier for the logsink as returned by the DigitalOcean API.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "Display name for the logsink. **Note**: This is immutable; changing it will force recreation of the resource.\n",
                        "willReplaceOnChanges": true
                    },
                    "port": {
                        "type": "integer",
                        "description": "Port number for the rsyslog server. Must be between 1 and 65535.\n"
                    },
                    "server": {
                        "type": "string",
                        "description": "Hostname or IP address of the rsyslog server.\n"
                    },
                    "structuredData": {
                        "type": "string",
                        "description": "Content of the structured data block for RFC5424 messages.\n"
                    },
                    "tls": {
                        "type": "boolean",
                        "description": "Enable TLS encryption for the rsyslog connection. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. **Note**: It is highly recommended to enable TLS as log messages may contain sensitive information.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseMongodbConfig:DatabaseMongodbConfig": {
            "description": "Provides a virtual resource that can be used to change advanced configuration\noptions for a DigitalOcean managed MongoDB database cluster.\n\n\u003e **Note** MongoDB configurations are only removed from state when destroyed. The remote configuration is not unset.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleDatabaseCluster = new digitalocean.DatabaseCluster(\"example\", {\n    name: \"example-mongodb-cluster\",\n    engine: \"mongodb\",\n    version: \"7\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 1,\n});\nconst example = new digitalocean.DatabaseMongodbConfig(\"example\", {\n    clusterId: exampleDatabaseCluster.id,\n    defaultReadConcern: \"majority\",\n    defaultWriteConcern: \"majority\",\n    transactionLifetimeLimitSeconds: 100,\n    slowOpThresholdMs: 100,\n    verbosity: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_database_cluster = digitalocean.DatabaseCluster(\"example\",\n    name=\"example-mongodb-cluster\",\n    engine=\"mongodb\",\n    version=\"7\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=1)\nexample = digitalocean.DatabaseMongodbConfig(\"example\",\n    cluster_id=example_database_cluster.id,\n    default_read_concern=\"majority\",\n    default_write_concern=\"majority\",\n    transaction_lifetime_limit_seconds=100,\n    slow_op_threshold_ms=100,\n    verbosity=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleDatabaseCluster = new DigitalOcean.DatabaseCluster(\"example\", new()\n    {\n        Name = \"example-mongodb-cluster\",\n        Engine = \"mongodb\",\n        Version = \"7\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 1,\n    });\n\n    var example = new DigitalOcean.DatabaseMongodbConfig(\"example\", new()\n    {\n        ClusterId = exampleDatabaseCluster.Id,\n        DefaultReadConcern = \"majority\",\n        DefaultWriteConcern = \"majority\",\n        TransactionLifetimeLimitSeconds = 100,\n        SlowOpThresholdMs = 100,\n        Verbosity = 3,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleDatabaseCluster, err := digitalocean.NewDatabaseCluster(ctx, \"example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mongodb-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mongodb\"),\n\t\t\tVersion:   pulumi.String(\"7\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseMongodbConfig(ctx, \"example\", \u0026digitalocean.DatabaseMongodbConfigArgs{\n\t\t\tClusterId:                       exampleDatabaseCluster.ID(),\n\t\t\tDefaultReadConcern:              pulumi.String(\"majority\"),\n\t\t\tDefaultWriteConcern:             pulumi.String(\"majority\"),\n\t\t\tTransactionLifetimeLimitSeconds: pulumi.Int(100),\n\t\t\tSlowOpThresholdMs:               pulumi.Int(100),\n\t\t\tVerbosity:                       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.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseMongodbConfig;\nimport com.pulumi.digitalocean.DatabaseMongodbConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleDatabaseCluster = new DatabaseCluster(\"exampleDatabaseCluster\", DatabaseClusterArgs.builder()\n            .name(\"example-mongodb-cluster\")\n            .engine(\"mongodb\")\n            .version(\"7\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc3\")\n            .nodeCount(1)\n            .build());\n\n        var example = new DatabaseMongodbConfig(\"example\", DatabaseMongodbConfigArgs.builder()\n            .clusterId(exampleDatabaseCluster.id())\n            .defaultReadConcern(\"majority\")\n            .defaultWriteConcern(\"majority\")\n            .transactionLifetimeLimitSeconds(100)\n            .slowOpThresholdMs(100)\n            .verbosity(3)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabaseMongodbConfig\n    properties:\n      clusterId: ${exampleDatabaseCluster.id}\n      defaultReadConcern: majority\n      defaultWriteConcern: majority\n      transactionLifetimeLimitSeconds: 100\n      slowOpThresholdMs: 100\n      verbosity: 3\n  exampleDatabaseCluster:\n    type: digitalocean:DatabaseCluster\n    name: example\n    properties:\n      name: example-mongodb-cluster\n      engine: mongodb\n      version: '7'\n      size: db-s-1vcpu-1gb\n      region: nyc3\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA MongoDB database cluster's configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e the parent cluster, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseMongodbConfig:DatabaseMongodbConfig example 4b62829a-9c42-465b-aaa3-84051048e712\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target MongoDB cluster.\n"
                },
                "defaultReadConcern": {
                    "type": "string",
                    "description": "Specifies the default consistency behavior of reads from the database. Data that is returned from the query with may or may not have been acknowledged by all nodes in the replicaset depending on this value. Learn more [here](https://www.mongodb.com/docs/manual/reference/read-concern/).\n"
                },
                "defaultWriteConcern": {
                    "type": "string",
                    "description": "Describes the level of acknowledgment requested from MongoDB for write operations clusters. This field can set to either \u003cspan pulumi-lang-nodejs=\"`majority`\" pulumi-lang-dotnet=\"`Majority`\" pulumi-lang-go=\"`majority`\" pulumi-lang-python=\"`majority`\" pulumi-lang-yaml=\"`majority`\" pulumi-lang-java=\"`majority`\"\u003e`majority`\u003c/span\u003e or a number`0...n` which will describe the number of nodes that must acknowledge the write operation before it is fully accepted. Setting to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e will request no acknowledgement of the write operation. Learn more [here](https://www.mongodb.com/docs/manual/reference/write-concern/).\n"
                },
                "slowOpThresholdMs": {
                    "type": "integer",
                    "description": "Operations that run for longer than this threshold are considered slow which are then recorded to the diagnostic logs. Higher log levels (verbosity) will record all operations regardless of this threshold on the primary node. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-operationProfiling.slowOpThresholdMs).\n"
                },
                "transactionLifetimeLimitSeconds": {
                    "type": "integer",
                    "description": "Specifies the lifetime of multi-document transactions. Transactions that exceed this limit are considered expired and will be aborted by a periodic cleanup process. The cleanup process runs every `transactionLifetimeLimitSeconds/2 seconds` or at least once every 60 seconds. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/parameters/#mongodb-parameter-param.transactionLifetimeLimitSeconds).\n"
                },
                "verbosity": {
                    "type": "integer",
                    "description": "The log message verbosity level. The verbosity level determines the amount of Informational and Debug messages MongoDB outputs. 0 includes informational messages while 1...5 increases the level to include debug messages. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-systemLog.verbosity).\n"
                }
            },
            "required": [
                "clusterId",
                "defaultReadConcern",
                "defaultWriteConcern",
                "slowOpThresholdMs",
                "transactionLifetimeLimitSeconds",
                "verbosity"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target MongoDB cluster.\n",
                    "willReplaceOnChanges": true
                },
                "defaultReadConcern": {
                    "type": "string",
                    "description": "Specifies the default consistency behavior of reads from the database. Data that is returned from the query with may or may not have been acknowledged by all nodes in the replicaset depending on this value. Learn more [here](https://www.mongodb.com/docs/manual/reference/read-concern/).\n"
                },
                "defaultWriteConcern": {
                    "type": "string",
                    "description": "Describes the level of acknowledgment requested from MongoDB for write operations clusters. This field can set to either \u003cspan pulumi-lang-nodejs=\"`majority`\" pulumi-lang-dotnet=\"`Majority`\" pulumi-lang-go=\"`majority`\" pulumi-lang-python=\"`majority`\" pulumi-lang-yaml=\"`majority`\" pulumi-lang-java=\"`majority`\"\u003e`majority`\u003c/span\u003e or a number`0...n` which will describe the number of nodes that must acknowledge the write operation before it is fully accepted. Setting to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e will request no acknowledgement of the write operation. Learn more [here](https://www.mongodb.com/docs/manual/reference/write-concern/).\n"
                },
                "slowOpThresholdMs": {
                    "type": "integer",
                    "description": "Operations that run for longer than this threshold are considered slow which are then recorded to the diagnostic logs. Higher log levels (verbosity) will record all operations regardless of this threshold on the primary node. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-operationProfiling.slowOpThresholdMs).\n"
                },
                "transactionLifetimeLimitSeconds": {
                    "type": "integer",
                    "description": "Specifies the lifetime of multi-document transactions. Transactions that exceed this limit are considered expired and will be aborted by a periodic cleanup process. The cleanup process runs every `transactionLifetimeLimitSeconds/2 seconds` or at least once every 60 seconds. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/parameters/#mongodb-parameter-param.transactionLifetimeLimitSeconds).\n"
                },
                "verbosity": {
                    "type": "integer",
                    "description": "The log message verbosity level. The verbosity level determines the amount of Informational and Debug messages MongoDB outputs. 0 includes informational messages while 1...5 increases the level to include debug messages. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-systemLog.verbosity).\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseMongodbConfig resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target MongoDB cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "defaultReadConcern": {
                        "type": "string",
                        "description": "Specifies the default consistency behavior of reads from the database. Data that is returned from the query with may or may not have been acknowledged by all nodes in the replicaset depending on this value. Learn more [here](https://www.mongodb.com/docs/manual/reference/read-concern/).\n"
                    },
                    "defaultWriteConcern": {
                        "type": "string",
                        "description": "Describes the level of acknowledgment requested from MongoDB for write operations clusters. This field can set to either \u003cspan pulumi-lang-nodejs=\"`majority`\" pulumi-lang-dotnet=\"`Majority`\" pulumi-lang-go=\"`majority`\" pulumi-lang-python=\"`majority`\" pulumi-lang-yaml=\"`majority`\" pulumi-lang-java=\"`majority`\"\u003e`majority`\u003c/span\u003e or a number`0...n` which will describe the number of nodes that must acknowledge the write operation before it is fully accepted. Setting to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e will request no acknowledgement of the write operation. Learn more [here](https://www.mongodb.com/docs/manual/reference/write-concern/).\n"
                    },
                    "slowOpThresholdMs": {
                        "type": "integer",
                        "description": "Operations that run for longer than this threshold are considered slow which are then recorded to the diagnostic logs. Higher log levels (verbosity) will record all operations regardless of this threshold on the primary node. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-operationProfiling.slowOpThresholdMs).\n"
                    },
                    "transactionLifetimeLimitSeconds": {
                        "type": "integer",
                        "description": "Specifies the lifetime of multi-document transactions. Transactions that exceed this limit are considered expired and will be aborted by a periodic cleanup process. The cleanup process runs every `transactionLifetimeLimitSeconds/2 seconds` or at least once every 60 seconds. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/parameters/#mongodb-parameter-param.transactionLifetimeLimitSeconds).\n"
                    },
                    "verbosity": {
                        "type": "integer",
                        "description": "The log message verbosity level. The verbosity level determines the amount of Informational and Debug messages MongoDB outputs. 0 includes informational messages while 1...5 increases the level to include debug messages. \u003cem\u003eChanging this parameter will lead to a restart of the MongoDB service.\u003c/em\u003e Learn more [here](https://www.mongodb.com/docs/manual/reference/configuration-options/#mongodb-setting-systemLog.verbosity).\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseMysqlConfig:DatabaseMysqlConfig": {
            "description": "Provides a virtual resource that can be used to change advanced configuration\noptions for a DigitalOcean managed MySQL database cluster.\n\n\u003e **Note** MySQL configurations are only removed from state when destroyed. The remote configuration is not unset.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleDatabaseCluster = new digitalocean.DatabaseCluster(\"example\", {\n    name: \"example-mysql-cluster\",\n    engine: \"mysql\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst example = new digitalocean.DatabaseMysqlConfig(\"example\", {\n    clusterId: exampleDatabaseCluster.id,\n    connectTimeout: 10,\n    defaultTimeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_database_cluster = digitalocean.DatabaseCluster(\"example\",\n    name=\"example-mysql-cluster\",\n    engine=\"mysql\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nexample = digitalocean.DatabaseMysqlConfig(\"example\",\n    cluster_id=example_database_cluster.id,\n    connect_timeout=10,\n    default_time_zone=\"UTC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleDatabaseCluster = new DigitalOcean.DatabaseCluster(\"example\", new()\n    {\n        Name = \"example-mysql-cluster\",\n        Engine = \"mysql\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var example = new DigitalOcean.DatabaseMysqlConfig(\"example\", new()\n    {\n        ClusterId = exampleDatabaseCluster.Id,\n        ConnectTimeout = 10,\n        DefaultTimeZone = \"UTC\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleDatabaseCluster, err := digitalocean.NewDatabaseCluster(ctx, \"example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-mysql-cluster\"),\n\t\t\tEngine:    pulumi.String(\"mysql\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseMysqlConfig(ctx, \"example\", \u0026digitalocean.DatabaseMysqlConfigArgs{\n\t\t\tClusterId:       exampleDatabaseCluster.ID(),\n\t\t\tConnectTimeout:  pulumi.Int(10),\n\t\t\tDefaultTimeZone: pulumi.String(\"UTC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseMysqlConfig;\nimport com.pulumi.digitalocean.DatabaseMysqlConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleDatabaseCluster = new DatabaseCluster(\"exampleDatabaseCluster\", DatabaseClusterArgs.builder()\n            .name(\"example-mysql-cluster\")\n            .engine(\"mysql\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var example = new DatabaseMysqlConfig(\"example\", DatabaseMysqlConfigArgs.builder()\n            .clusterId(exampleDatabaseCluster.id())\n            .connectTimeout(10)\n            .defaultTimeZone(\"UTC\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabaseMysqlConfig\n    properties:\n      clusterId: ${exampleDatabaseCluster.id}\n      connectTimeout: 10\n      defaultTimeZone: UTC\n  exampleDatabaseCluster:\n    type: digitalocean:DatabaseCluster\n    name: example\n    properties:\n      name: example-mysql-cluster\n      engine: mysql\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA MySQL database cluster's configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e the parent cluster, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseMysqlConfig:DatabaseMysqlConfig example 4b62829a-9c42-465b-aaa3-84051048e712\n```\n\n",
            "properties": {
                "backupHour": {
                    "type": "integer",
                    "description": "The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                },
                "backupMinute": {
                    "type": "integer",
                    "description": "The minute of the backup hour when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                },
                "binlogRetentionPeriod": {
                    "type": "integer",
                    "description": "The minimum amount of time, in seconds, to keep binlog entries before deletion. This may be extended for services that require binlog entries for longer than the default, for example if using the MySQL Debezium Kafka connector.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target MySQL cluster.\n"
                },
                "connectTimeout": {
                    "type": "integer",
                    "description": "The number of seconds that the mysqld server waits for a connect packet before responding with bad handshake.\n"
                },
                "defaultTimeZone": {
                    "type": "string",
                    "description": "Default server time zone, in the form of an offset from UTC (from -12:00 to +12:00), a time zone name (EST), or `SYSTEM` to use the MySQL server default.\n"
                },
                "groupConcatMaxLen": {
                    "type": "integer",
                    "description": "The maximum permitted result length, in bytes, for the `GROUP_CONCAT()` function.\n"
                },
                "informationSchemaStatsExpiry": {
                    "type": "integer",
                    "description": "The time, in seconds, before cached statistics expire.\n"
                },
                "innodbFtMinTokenSize": {
                    "type": "integer",
                    "description": "The minimum length of words that an InnoDB FULLTEXT index stores.\n"
                },
                "innodbFtServerStopwordTable": {
                    "type": "string",
                    "description": "The InnoDB FULLTEXT index stopword list for all InnoDB tables.\n"
                },
                "innodbLockWaitTimeout": {
                    "type": "integer",
                    "description": "The time, in seconds, that an InnoDB transaction waits for a row lock. before giving up.\n"
                },
                "innodbLogBufferSize": {
                    "type": "integer",
                    "description": "The size of the buffer, in bytes, that InnoDB uses to write to the log files. on disk.\n"
                },
                "innodbOnlineAlterLogMaxSize": {
                    "type": "integer",
                    "description": "The upper limit, in bytes, of the size of the temporary log files used during online DDL operations for InnoDB tables.\n"
                },
                "innodbPrintAllDeadlocks": {
                    "type": "boolean",
                    "description": "When enabled, records information about all deadlocks in InnoDB user transactions in the error log. Disabled by default.\n"
                },
                "innodbRollbackOnTimeout": {
                    "type": "boolean",
                    "description": "When enabled, transaction timeouts cause InnoDB to abort and roll back the entire transaction.\n"
                },
                "interactiveTimeout": {
                    "type": "integer",
                    "description": "The time, in seconds, the server waits for activity on an interactive. connection before closing it.\n"
                },
                "internalTmpMemStorageEngine": {
                    "type": "string",
                    "description": "The storage engine for in-memory internal temporary tables. Supported values are: `TempTable`, `MEMORY`.\n"
                },
                "longQueryTime": {
                    "type": "number",
                    "description": "The time, in seconds, for a query to take to execute before being captured by \u003cspan pulumi-lang-nodejs=\"`slowQueryLogs`\" pulumi-lang-dotnet=\"`SlowQueryLogs`\" pulumi-lang-go=\"`slowQueryLogs`\" pulumi-lang-python=\"`slow_query_logs`\" pulumi-lang-yaml=\"`slowQueryLogs`\" pulumi-lang-java=\"`slowQueryLogs`\"\u003e`slow_query_logs`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e seconds.\n"
                },
                "maxAllowedPacket": {
                    "type": "integer",
                    "description": "The size of the largest message, in bytes, that can be received by the server. Default is \u003cspan pulumi-lang-nodejs=\"`67108864`\" pulumi-lang-dotnet=\"`67108864`\" pulumi-lang-go=\"`67108864`\" pulumi-lang-python=\"`67108864`\" pulumi-lang-yaml=\"`67108864`\" pulumi-lang-java=\"`67108864`\"\u003e`67108864`\u003c/span\u003e (64M).\n"
                },
                "maxHeapTableSize": {
                    "type": "integer",
                    "description": "The maximum size, in bytes, of internal in-memory tables. Also set \u003cspan pulumi-lang-nodejs=\"`tmpTableSize`\" pulumi-lang-dotnet=\"`TmpTableSize`\" pulumi-lang-go=\"`tmpTableSize`\" pulumi-lang-python=\"`tmp_table_size`\" pulumi-lang-yaml=\"`tmpTableSize`\" pulumi-lang-java=\"`tmpTableSize`\"\u003e`tmp_table_size`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`16777216`\" pulumi-lang-dotnet=\"`16777216`\" pulumi-lang-go=\"`16777216`\" pulumi-lang-python=\"`16777216`\" pulumi-lang-yaml=\"`16777216`\" pulumi-lang-java=\"`16777216`\"\u003e`16777216`\u003c/span\u003e (16M)\n"
                },
                "netReadTimeout": {
                    "type": "integer",
                    "description": "The time, in seconds, to wait for more data from an existing connection. aborting the read.\n"
                },
                "netWriteTimeout": {
                    "type": "integer",
                    "description": "The number of seconds to wait for a block to be written to a connection before aborting the write.\n"
                },
                "slowQueryLog": {
                    "type": "boolean",
                    "description": "When enabled, captures slow queries. When disabled, also truncates the mysql.slow_log table. Default is false.\n"
                },
                "sortBufferSize": {
                    "type": "integer",
                    "description": "The sort buffer size, in bytes, for `ORDER BY` optimization. Default is \u003cspan pulumi-lang-nodejs=\"`262144`\" pulumi-lang-dotnet=\"`262144`\" pulumi-lang-go=\"`262144`\" pulumi-lang-python=\"`262144`\" pulumi-lang-yaml=\"`262144`\" pulumi-lang-java=\"`262144`\"\u003e`262144`\u003c/span\u003e. (256K).\n"
                },
                "sqlMode": {
                    "type": "string",
                    "description": "Global SQL mode. If empty, uses MySQL server defaults. Must only include uppercase alphabetic characters, underscores, and commas.\n"
                },
                "sqlRequirePrimaryKey": {
                    "type": "boolean",
                    "description": "Require primary key to be defined for new tables or old tables modified with ALTER TABLE and fail if missing. It is recommended to always have primary keys because various functionality may break if any large table is missing them.\n"
                },
                "tmpTableSize": {
                    "type": "integer",
                    "description": "The maximum size, in bytes, of internal in-memory tables. Also set \u003cspan pulumi-lang-nodejs=\"`maxHeapTableSize`\" pulumi-lang-dotnet=\"`MaxHeapTableSize`\" pulumi-lang-go=\"`maxHeapTableSize`\" pulumi-lang-python=\"`max_heap_table_size`\" pulumi-lang-yaml=\"`maxHeapTableSize`\" pulumi-lang-java=\"`maxHeapTableSize`\"\u003e`max_heap_table_size`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`16777216`\" pulumi-lang-dotnet=\"`16777216`\" pulumi-lang-go=\"`16777216`\" pulumi-lang-python=\"`16777216`\" pulumi-lang-yaml=\"`16777216`\" pulumi-lang-java=\"`16777216`\"\u003e`16777216`\u003c/span\u003e (16M).\n"
                },
                "waitTimeout": {
                    "type": "integer",
                    "description": "The number of seconds the server waits for activity on a noninteractive connection before closing it.\n"
                }
            },
            "required": [
                "backupHour",
                "backupMinute",
                "binlogRetentionPeriod",
                "clusterId",
                "connectTimeout",
                "defaultTimeZone",
                "groupConcatMaxLen",
                "informationSchemaStatsExpiry",
                "innodbFtMinTokenSize",
                "innodbFtServerStopwordTable",
                "innodbLockWaitTimeout",
                "innodbLogBufferSize",
                "innodbOnlineAlterLogMaxSize",
                "innodbPrintAllDeadlocks",
                "innodbRollbackOnTimeout",
                "interactiveTimeout",
                "internalTmpMemStorageEngine",
                "longQueryTime",
                "maxAllowedPacket",
                "maxHeapTableSize",
                "netReadTimeout",
                "netWriteTimeout",
                "slowQueryLog",
                "sortBufferSize",
                "sqlMode",
                "sqlRequirePrimaryKey",
                "tmpTableSize",
                "waitTimeout"
            ],
            "inputProperties": {
                "backupHour": {
                    "type": "integer",
                    "description": "The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                },
                "backupMinute": {
                    "type": "integer",
                    "description": "The minute of the backup hour when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                },
                "binlogRetentionPeriod": {
                    "type": "integer",
                    "description": "The minimum amount of time, in seconds, to keep binlog entries before deletion. This may be extended for services that require binlog entries for longer than the default, for example if using the MySQL Debezium Kafka connector.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target MySQL cluster.\n",
                    "willReplaceOnChanges": true
                },
                "connectTimeout": {
                    "type": "integer",
                    "description": "The number of seconds that the mysqld server waits for a connect packet before responding with bad handshake.\n"
                },
                "defaultTimeZone": {
                    "type": "string",
                    "description": "Default server time zone, in the form of an offset from UTC (from -12:00 to +12:00), a time zone name (EST), or `SYSTEM` to use the MySQL server default.\n"
                },
                "groupConcatMaxLen": {
                    "type": "integer",
                    "description": "The maximum permitted result length, in bytes, for the `GROUP_CONCAT()` function.\n"
                },
                "informationSchemaStatsExpiry": {
                    "type": "integer",
                    "description": "The time, in seconds, before cached statistics expire.\n"
                },
                "innodbFtMinTokenSize": {
                    "type": "integer",
                    "description": "The minimum length of words that an InnoDB FULLTEXT index stores.\n"
                },
                "innodbFtServerStopwordTable": {
                    "type": "string",
                    "description": "The InnoDB FULLTEXT index stopword list for all InnoDB tables.\n"
                },
                "innodbLockWaitTimeout": {
                    "type": "integer",
                    "description": "The time, in seconds, that an InnoDB transaction waits for a row lock. before giving up.\n"
                },
                "innodbLogBufferSize": {
                    "type": "integer",
                    "description": "The size of the buffer, in bytes, that InnoDB uses to write to the log files. on disk.\n"
                },
                "innodbOnlineAlterLogMaxSize": {
                    "type": "integer",
                    "description": "The upper limit, in bytes, of the size of the temporary log files used during online DDL operations for InnoDB tables.\n"
                },
                "innodbPrintAllDeadlocks": {
                    "type": "boolean",
                    "description": "When enabled, records information about all deadlocks in InnoDB user transactions in the error log. Disabled by default.\n"
                },
                "innodbRollbackOnTimeout": {
                    "type": "boolean",
                    "description": "When enabled, transaction timeouts cause InnoDB to abort and roll back the entire transaction.\n"
                },
                "interactiveTimeout": {
                    "type": "integer",
                    "description": "The time, in seconds, the server waits for activity on an interactive. connection before closing it.\n"
                },
                "internalTmpMemStorageEngine": {
                    "type": "string",
                    "description": "The storage engine for in-memory internal temporary tables. Supported values are: `TempTable`, `MEMORY`.\n"
                },
                "longQueryTime": {
                    "type": "number",
                    "description": "The time, in seconds, for a query to take to execute before being captured by \u003cspan pulumi-lang-nodejs=\"`slowQueryLogs`\" pulumi-lang-dotnet=\"`SlowQueryLogs`\" pulumi-lang-go=\"`slowQueryLogs`\" pulumi-lang-python=\"`slow_query_logs`\" pulumi-lang-yaml=\"`slowQueryLogs`\" pulumi-lang-java=\"`slowQueryLogs`\"\u003e`slow_query_logs`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e seconds.\n"
                },
                "maxAllowedPacket": {
                    "type": "integer",
                    "description": "The size of the largest message, in bytes, that can be received by the server. Default is \u003cspan pulumi-lang-nodejs=\"`67108864`\" pulumi-lang-dotnet=\"`67108864`\" pulumi-lang-go=\"`67108864`\" pulumi-lang-python=\"`67108864`\" pulumi-lang-yaml=\"`67108864`\" pulumi-lang-java=\"`67108864`\"\u003e`67108864`\u003c/span\u003e (64M).\n"
                },
                "maxHeapTableSize": {
                    "type": "integer",
                    "description": "The maximum size, in bytes, of internal in-memory tables. Also set \u003cspan pulumi-lang-nodejs=\"`tmpTableSize`\" pulumi-lang-dotnet=\"`TmpTableSize`\" pulumi-lang-go=\"`tmpTableSize`\" pulumi-lang-python=\"`tmp_table_size`\" pulumi-lang-yaml=\"`tmpTableSize`\" pulumi-lang-java=\"`tmpTableSize`\"\u003e`tmp_table_size`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`16777216`\" pulumi-lang-dotnet=\"`16777216`\" pulumi-lang-go=\"`16777216`\" pulumi-lang-python=\"`16777216`\" pulumi-lang-yaml=\"`16777216`\" pulumi-lang-java=\"`16777216`\"\u003e`16777216`\u003c/span\u003e (16M)\n"
                },
                "netReadTimeout": {
                    "type": "integer",
                    "description": "The time, in seconds, to wait for more data from an existing connection. aborting the read.\n"
                },
                "netWriteTimeout": {
                    "type": "integer",
                    "description": "The number of seconds to wait for a block to be written to a connection before aborting the write.\n"
                },
                "slowQueryLog": {
                    "type": "boolean",
                    "description": "When enabled, captures slow queries. When disabled, also truncates the mysql.slow_log table. Default is false.\n"
                },
                "sortBufferSize": {
                    "type": "integer",
                    "description": "The sort buffer size, in bytes, for `ORDER BY` optimization. Default is \u003cspan pulumi-lang-nodejs=\"`262144`\" pulumi-lang-dotnet=\"`262144`\" pulumi-lang-go=\"`262144`\" pulumi-lang-python=\"`262144`\" pulumi-lang-yaml=\"`262144`\" pulumi-lang-java=\"`262144`\"\u003e`262144`\u003c/span\u003e. (256K).\n"
                },
                "sqlMode": {
                    "type": "string",
                    "description": "Global SQL mode. If empty, uses MySQL server defaults. Must only include uppercase alphabetic characters, underscores, and commas.\n"
                },
                "sqlRequirePrimaryKey": {
                    "type": "boolean",
                    "description": "Require primary key to be defined for new tables or old tables modified with ALTER TABLE and fail if missing. It is recommended to always have primary keys because various functionality may break if any large table is missing them.\n"
                },
                "tmpTableSize": {
                    "type": "integer",
                    "description": "The maximum size, in bytes, of internal in-memory tables. Also set \u003cspan pulumi-lang-nodejs=\"`maxHeapTableSize`\" pulumi-lang-dotnet=\"`MaxHeapTableSize`\" pulumi-lang-go=\"`maxHeapTableSize`\" pulumi-lang-python=\"`max_heap_table_size`\" pulumi-lang-yaml=\"`maxHeapTableSize`\" pulumi-lang-java=\"`maxHeapTableSize`\"\u003e`max_heap_table_size`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`16777216`\" pulumi-lang-dotnet=\"`16777216`\" pulumi-lang-go=\"`16777216`\" pulumi-lang-python=\"`16777216`\" pulumi-lang-yaml=\"`16777216`\" pulumi-lang-java=\"`16777216`\"\u003e`16777216`\u003c/span\u003e (16M).\n"
                },
                "waitTimeout": {
                    "type": "integer",
                    "description": "The number of seconds the server waits for activity on a noninteractive connection before closing it.\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseMysqlConfig resources.\n",
                "properties": {
                    "backupHour": {
                        "type": "integer",
                        "description": "The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                    },
                    "backupMinute": {
                        "type": "integer",
                        "description": "The minute of the backup hour when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                    },
                    "binlogRetentionPeriod": {
                        "type": "integer",
                        "description": "The minimum amount of time, in seconds, to keep binlog entries before deletion. This may be extended for services that require binlog entries for longer than the default, for example if using the MySQL Debezium Kafka connector.\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target MySQL cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "connectTimeout": {
                        "type": "integer",
                        "description": "The number of seconds that the mysqld server waits for a connect packet before responding with bad handshake.\n"
                    },
                    "defaultTimeZone": {
                        "type": "string",
                        "description": "Default server time zone, in the form of an offset from UTC (from -12:00 to +12:00), a time zone name (EST), or `SYSTEM` to use the MySQL server default.\n"
                    },
                    "groupConcatMaxLen": {
                        "type": "integer",
                        "description": "The maximum permitted result length, in bytes, for the `GROUP_CONCAT()` function.\n"
                    },
                    "informationSchemaStatsExpiry": {
                        "type": "integer",
                        "description": "The time, in seconds, before cached statistics expire.\n"
                    },
                    "innodbFtMinTokenSize": {
                        "type": "integer",
                        "description": "The minimum length of words that an InnoDB FULLTEXT index stores.\n"
                    },
                    "innodbFtServerStopwordTable": {
                        "type": "string",
                        "description": "The InnoDB FULLTEXT index stopword list for all InnoDB tables.\n"
                    },
                    "innodbLockWaitTimeout": {
                        "type": "integer",
                        "description": "The time, in seconds, that an InnoDB transaction waits for a row lock. before giving up.\n"
                    },
                    "innodbLogBufferSize": {
                        "type": "integer",
                        "description": "The size of the buffer, in bytes, that InnoDB uses to write to the log files. on disk.\n"
                    },
                    "innodbOnlineAlterLogMaxSize": {
                        "type": "integer",
                        "description": "The upper limit, in bytes, of the size of the temporary log files used during online DDL operations for InnoDB tables.\n"
                    },
                    "innodbPrintAllDeadlocks": {
                        "type": "boolean",
                        "description": "When enabled, records information about all deadlocks in InnoDB user transactions in the error log. Disabled by default.\n"
                    },
                    "innodbRollbackOnTimeout": {
                        "type": "boolean",
                        "description": "When enabled, transaction timeouts cause InnoDB to abort and roll back the entire transaction.\n"
                    },
                    "interactiveTimeout": {
                        "type": "integer",
                        "description": "The time, in seconds, the server waits for activity on an interactive. connection before closing it.\n"
                    },
                    "internalTmpMemStorageEngine": {
                        "type": "string",
                        "description": "The storage engine for in-memory internal temporary tables. Supported values are: `TempTable`, `MEMORY`.\n"
                    },
                    "longQueryTime": {
                        "type": "number",
                        "description": "The time, in seconds, for a query to take to execute before being captured by \u003cspan pulumi-lang-nodejs=\"`slowQueryLogs`\" pulumi-lang-dotnet=\"`SlowQueryLogs`\" pulumi-lang-go=\"`slowQueryLogs`\" pulumi-lang-python=\"`slow_query_logs`\" pulumi-lang-yaml=\"`slowQueryLogs`\" pulumi-lang-java=\"`slowQueryLogs`\"\u003e`slow_query_logs`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e seconds.\n"
                    },
                    "maxAllowedPacket": {
                        "type": "integer",
                        "description": "The size of the largest message, in bytes, that can be received by the server. Default is \u003cspan pulumi-lang-nodejs=\"`67108864`\" pulumi-lang-dotnet=\"`67108864`\" pulumi-lang-go=\"`67108864`\" pulumi-lang-python=\"`67108864`\" pulumi-lang-yaml=\"`67108864`\" pulumi-lang-java=\"`67108864`\"\u003e`67108864`\u003c/span\u003e (64M).\n"
                    },
                    "maxHeapTableSize": {
                        "type": "integer",
                        "description": "The maximum size, in bytes, of internal in-memory tables. Also set \u003cspan pulumi-lang-nodejs=\"`tmpTableSize`\" pulumi-lang-dotnet=\"`TmpTableSize`\" pulumi-lang-go=\"`tmpTableSize`\" pulumi-lang-python=\"`tmp_table_size`\" pulumi-lang-yaml=\"`tmpTableSize`\" pulumi-lang-java=\"`tmpTableSize`\"\u003e`tmp_table_size`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`16777216`\" pulumi-lang-dotnet=\"`16777216`\" pulumi-lang-go=\"`16777216`\" pulumi-lang-python=\"`16777216`\" pulumi-lang-yaml=\"`16777216`\" pulumi-lang-java=\"`16777216`\"\u003e`16777216`\u003c/span\u003e (16M)\n"
                    },
                    "netReadTimeout": {
                        "type": "integer",
                        "description": "The time, in seconds, to wait for more data from an existing connection. aborting the read.\n"
                    },
                    "netWriteTimeout": {
                        "type": "integer",
                        "description": "The number of seconds to wait for a block to be written to a connection before aborting the write.\n"
                    },
                    "slowQueryLog": {
                        "type": "boolean",
                        "description": "When enabled, captures slow queries. When disabled, also truncates the mysql.slow_log table. Default is false.\n"
                    },
                    "sortBufferSize": {
                        "type": "integer",
                        "description": "The sort buffer size, in bytes, for `ORDER BY` optimization. Default is \u003cspan pulumi-lang-nodejs=\"`262144`\" pulumi-lang-dotnet=\"`262144`\" pulumi-lang-go=\"`262144`\" pulumi-lang-python=\"`262144`\" pulumi-lang-yaml=\"`262144`\" pulumi-lang-java=\"`262144`\"\u003e`262144`\u003c/span\u003e. (256K).\n"
                    },
                    "sqlMode": {
                        "type": "string",
                        "description": "Global SQL mode. If empty, uses MySQL server defaults. Must only include uppercase alphabetic characters, underscores, and commas.\n"
                    },
                    "sqlRequirePrimaryKey": {
                        "type": "boolean",
                        "description": "Require primary key to be defined for new tables or old tables modified with ALTER TABLE and fail if missing. It is recommended to always have primary keys because various functionality may break if any large table is missing them.\n"
                    },
                    "tmpTableSize": {
                        "type": "integer",
                        "description": "The maximum size, in bytes, of internal in-memory tables. Also set \u003cspan pulumi-lang-nodejs=\"`maxHeapTableSize`\" pulumi-lang-dotnet=\"`MaxHeapTableSize`\" pulumi-lang-go=\"`maxHeapTableSize`\" pulumi-lang-python=\"`max_heap_table_size`\" pulumi-lang-yaml=\"`maxHeapTableSize`\" pulumi-lang-java=\"`maxHeapTableSize`\"\u003e`max_heap_table_size`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`16777216`\" pulumi-lang-dotnet=\"`16777216`\" pulumi-lang-go=\"`16777216`\" pulumi-lang-python=\"`16777216`\" pulumi-lang-yaml=\"`16777216`\" pulumi-lang-java=\"`16777216`\"\u003e`16777216`\u003c/span\u003e (16M).\n"
                    },
                    "waitTimeout": {
                        "type": "integer",
                        "description": "The number of seconds the server waits for activity on a noninteractive connection before closing it.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseOnlineMigration:DatabaseOnlineMigration": {
            "description": "Provides a virtual resource that can be used to start an online migration \nfor a DigitalOcean managed database cluster. Migrating a cluster establishes a \nconnection with an existing cluster and replicates its contents to the target \ncluster. If the existing database is continuously being written to, the migration \nprocess will continue for up to two weeks unless it is manually stopped. \nOnline migration is only available for MySQL, PostgreSQL, Caching, and Valkey clusters.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst source = new digitalocean.DatabaseCluster(\"source\", {\n    name: \"st01\",\n    engine: \"mysql\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n    tags: [\"production\"],\n});\nconst destination = new digitalocean.DatabaseCluster(\"destination\", {\n    name: \"dt01\",\n    engine: \"mysql\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n    tags: [\"production\"],\n});\nconst sourceDb = new digitalocean.DatabaseDb(\"source_db\", {\n    clusterId: source.id,\n    name: \"terraform-db-om-source\",\n});\nconst foobar = new digitalocean.DatabaseOnlineMigration(\"foobar\", {\n    clusterId: destination.id,\n    source: {\n        host: source.host,\n        dbName: sourceDb.name,\n        port: source.port,\n        username: source.user,\n        password: source.password,\n    },\n}, {\n    dependsOn: [\n        destination,\n        source,\n        sourceDb,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsource = digitalocean.DatabaseCluster(\"source\",\n    name=\"st01\",\n    engine=\"mysql\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1,\n    tags=[\"production\"])\ndestination = digitalocean.DatabaseCluster(\"destination\",\n    name=\"dt01\",\n    engine=\"mysql\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1,\n    tags=[\"production\"])\nsource_db = digitalocean.DatabaseDb(\"source_db\",\n    cluster_id=source.id,\n    name=\"terraform-db-om-source\")\nfoobar = digitalocean.DatabaseOnlineMigration(\"foobar\",\n    cluster_id=destination.id,\n    source={\n        \"host\": source.host,\n        \"db_name\": source_db.name,\n        \"port\": source.port,\n        \"username\": source.user,\n        \"password\": source.password,\n    },\n    opts = pulumi.ResourceOptions(depends_on=[\n            destination,\n            source,\n            source_db,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var source = new DigitalOcean.DatabaseCluster(\"source\", new()\n    {\n        Name = \"st01\",\n        Engine = \"mysql\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n        Tags = new[]\n        {\n            \"production\",\n        },\n    });\n\n    var destination = new DigitalOcean.DatabaseCluster(\"destination\", new()\n    {\n        Name = \"dt01\",\n        Engine = \"mysql\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n        Tags = new[]\n        {\n            \"production\",\n        },\n    });\n\n    var sourceDb = new DigitalOcean.DatabaseDb(\"source_db\", new()\n    {\n        ClusterId = source.Id,\n        Name = \"terraform-db-om-source\",\n    });\n\n    var foobar = new DigitalOcean.DatabaseOnlineMigration(\"foobar\", new()\n    {\n        ClusterId = destination.Id,\n        Source = new DigitalOcean.Inputs.DatabaseOnlineMigrationSourceArgs\n        {\n            Host = source.Host,\n            DbName = sourceDb.Name,\n            Port = source.Port,\n            Username = source.User,\n            Password = source.Password,\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            destination,\n            source,\n            sourceDb,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := digitalocean.NewDatabaseCluster(ctx, \"source\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"st01\"),\n\t\t\tEngine:    pulumi.String(\"mysql\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := digitalocean.NewDatabaseCluster(ctx, \"destination\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"dt01\"),\n\t\t\tEngine:    pulumi.String(\"mysql\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceDb, err := digitalocean.NewDatabaseDb(ctx, \"source_db\", \u0026digitalocean.DatabaseDbArgs{\n\t\t\tClusterId: source.ID(),\n\t\t\tName:      pulumi.String(\"terraform-db-om-source\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseOnlineMigration(ctx, \"foobar\", \u0026digitalocean.DatabaseOnlineMigrationArgs{\n\t\t\tClusterId: destination.ID(),\n\t\t\tSource: \u0026digitalocean.DatabaseOnlineMigrationSourceArgs{\n\t\t\t\tHost:     source.Host,\n\t\t\t\tDbName:   sourceDb.Name,\n\t\t\t\tPort:     source.Port,\n\t\t\t\tUsername: source.User,\n\t\t\t\tPassword: source.Password,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestination,\n\t\t\tsource,\n\t\t\tsourceDb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseDb;\nimport com.pulumi.digitalocean.DatabaseDbArgs;\nimport com.pulumi.digitalocean.DatabaseOnlineMigration;\nimport com.pulumi.digitalocean.DatabaseOnlineMigrationArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseOnlineMigrationSourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var source = new DatabaseCluster(\"source\", DatabaseClusterArgs.builder()\n            .name(\"st01\")\n            .engine(\"mysql\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .tags(\"production\")\n            .build());\n\n        var destination = new DatabaseCluster(\"destination\", DatabaseClusterArgs.builder()\n            .name(\"dt01\")\n            .engine(\"mysql\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .tags(\"production\")\n            .build());\n\n        var sourceDb = new DatabaseDb(\"sourceDb\", DatabaseDbArgs.builder()\n            .clusterId(source.id())\n            .name(\"terraform-db-om-source\")\n            .build());\n\n        var foobar = new DatabaseOnlineMigration(\"foobar\", DatabaseOnlineMigrationArgs.builder()\n            .clusterId(destination.id())\n            .source(DatabaseOnlineMigrationSourceArgs.builder()\n                .host(source.host())\n                .dbName(sourceDb.name())\n                .port(source.port())\n                .username(source.user())\n                .password(source.password())\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    destination,\n                    source,\n                    sourceDb)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  source:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: st01\n      engine: mysql\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n      tags:\n        - production\n  destination:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: dt01\n      engine: mysql\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n      tags:\n        - production\n  sourceDb:\n    type: digitalocean:DatabaseDb\n    name: source_db\n    properties:\n      clusterId: ${source.id}\n      name: terraform-db-om-source\n  foobar:\n    type: digitalocean:DatabaseOnlineMigration\n    properties:\n      clusterId: ${destination.id}\n      source:\n        host: ${source.host}\n        dbName: ${sourceDb.name}\n        port: ${source.port}\n        username: ${source.user}\n        password: ${source.password}\n    options:\n      dependsOn:\n        - ${destination}\n        - ${source}\n        - ${sourceDb}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA MySQL database cluster's\u003cspan pulumi-lang-nodejs=\" onlineMigration \" pulumi-lang-dotnet=\" OnlineMigration \" pulumi-lang-go=\" onlineMigration \" pulumi-lang-python=\" online_migration \" pulumi-lang-yaml=\" onlineMigration \" pulumi-lang-java=\" onlineMigration \"\u003e online_migration \u003c/span\u003ecan be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e the parent cluster, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseOnlineMigration:DatabaseOnlineMigration example 4b62829a-9c42-465b-aaa3-84051048e712\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target MySQL cluster.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the online migration was created"
                },
                "disableSsl": {
                    "type": "boolean",
                    "description": "When set to true, enables SSL encryption when connecting to the source database.\n"
                },
                "ignoreDbs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of databases that should be ignored during migration.\n"
                },
                "source": {
                    "$ref": "#/types/digitalocean:index/DatabaseOnlineMigrationSource:DatabaseOnlineMigrationSource",
                    "description": "Configuration for migration\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the online migration"
                }
            },
            "required": [
                "clusterId",
                "createdAt",
                "source",
                "status"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target MySQL cluster.\n",
                    "willReplaceOnChanges": true
                },
                "disableSsl": {
                    "type": "boolean",
                    "description": "When set to true, enables SSL encryption when connecting to the source database.\n"
                },
                "ignoreDbs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of databases that should be ignored during migration.\n"
                },
                "source": {
                    "$ref": "#/types/digitalocean:index/DatabaseOnlineMigrationSource:DatabaseOnlineMigrationSource",
                    "description": "Configuration for migration\n"
                }
            },
            "requiredInputs": [
                "clusterId",
                "source"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseOnlineMigration resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target MySQL cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the online migration was created"
                    },
                    "disableSsl": {
                        "type": "boolean",
                        "description": "When set to true, enables SSL encryption when connecting to the source database.\n"
                    },
                    "ignoreDbs": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of databases that should be ignored during migration.\n"
                    },
                    "source": {
                        "$ref": "#/types/digitalocean:index/DatabaseOnlineMigrationSource:DatabaseOnlineMigrationSource",
                        "description": "Configuration for migration\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the online migration"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseOpensearchConfig:DatabaseOpensearchConfig": {
            "description": "Provides a virtual resource that can be used to change advanced configuration\noptions for a DigitalOcean managed Opensearch database cluster.\n\n\u003e **Note** Opensearch configurations are only removed from state when destroyed. The remote configuration is not unset.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleDatabaseCluster = new digitalocean.DatabaseCluster(\"example\", {\n    name: \"example-opensearch-cluster\",\n    engine: \"opensearch\",\n    version: \"2\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU2GB,\n    region: digitalocean.Region.NYC3,\n    nodeCount: 1,\n});\nconst example = new digitalocean.DatabaseOpensearchConfig(\"example\", {\n    clusterId: exampleDatabaseCluster.id,\n    ismEnabled: true,\n    ismHistoryEnabled: true,\n    ismHistoryMaxAgeHours: 24,\n    ismHistoryMaxDocs: 2500000,\n    ismHistoryRolloverCheckPeriodHours: 8,\n    ismHistoryRolloverRetentionPeriodDays: 30,\n    httpMaxContentLengthBytes: 100000000,\n    httpMaxHeaderSizeBytes: 8192,\n    httpMaxInitialLineLengthBytes: 4096,\n    indicesQueryBoolMaxClauseCount: 1024,\n    searchMaxBuckets: 10000,\n    indicesFielddataCacheSizePercentage: 3,\n    indicesMemoryIndexBufferSizePercentage: 10,\n    indicesMemoryMinIndexBufferSizeMb: 48,\n    indicesMemoryMaxIndexBufferSizeMb: 3,\n    indicesQueriesCacheSizePercentage: 10,\n    indicesRecoveryMaxMbPerSec: 40,\n    indicesRecoveryMaxConcurrentFileChunks: 2,\n    actionAutoCreateIndexEnabled: true,\n    actionDestructiveRequiresName: false,\n    enableSecurityAudit: false,\n    threadPoolSearchSize: 1,\n    threadPoolSearchThrottledSize: 1,\n    threadPoolSearchThrottledQueueSize: 10,\n    threadPoolSearchQueueSize: 10,\n    threadPoolGetSize: 1,\n    threadPoolGetQueueSize: 10,\n    threadPoolAnalyzeSize: 1,\n    threadPoolAnalyzeQueueSize: 10,\n    threadPoolWriteSize: 1,\n    threadPoolWriteQueueSize: 10,\n    threadPoolForceMergeSize: 1,\n    overrideMainResponseVersion: false,\n    scriptMaxCompilationsRate: \"use-context\",\n    clusterMaxShardsPerNode: 100,\n    clusterRoutingAllocationNodeConcurrentRecoveries: 2,\n    pluginsAlertingFilterByBackendRolesEnabled: false,\n    reindexRemoteWhitelists: [\"cloud.digitalocean.com:8080\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_database_cluster = digitalocean.DatabaseCluster(\"example\",\n    name=\"example-opensearch-cluster\",\n    engine=\"opensearch\",\n    version=\"2\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU2_GB,\n    region=digitalocean.Region.NYC3,\n    node_count=1)\nexample = digitalocean.DatabaseOpensearchConfig(\"example\",\n    cluster_id=example_database_cluster.id,\n    ism_enabled=True,\n    ism_history_enabled=True,\n    ism_history_max_age_hours=24,\n    ism_history_max_docs=2500000,\n    ism_history_rollover_check_period_hours=8,\n    ism_history_rollover_retention_period_days=30,\n    http_max_content_length_bytes=100000000,\n    http_max_header_size_bytes=8192,\n    http_max_initial_line_length_bytes=4096,\n    indices_query_bool_max_clause_count=1024,\n    search_max_buckets=10000,\n    indices_fielddata_cache_size_percentage=3,\n    indices_memory_index_buffer_size_percentage=10,\n    indices_memory_min_index_buffer_size_mb=48,\n    indices_memory_max_index_buffer_size_mb=3,\n    indices_queries_cache_size_percentage=10,\n    indices_recovery_max_mb_per_sec=40,\n    indices_recovery_max_concurrent_file_chunks=2,\n    action_auto_create_index_enabled=True,\n    action_destructive_requires_name=False,\n    enable_security_audit=False,\n    thread_pool_search_size=1,\n    thread_pool_search_throttled_size=1,\n    thread_pool_search_throttled_queue_size=10,\n    thread_pool_search_queue_size=10,\n    thread_pool_get_size=1,\n    thread_pool_get_queue_size=10,\n    thread_pool_analyze_size=1,\n    thread_pool_analyze_queue_size=10,\n    thread_pool_write_size=1,\n    thread_pool_write_queue_size=10,\n    thread_pool_force_merge_size=1,\n    override_main_response_version=False,\n    script_max_compilations_rate=\"use-context\",\n    cluster_max_shards_per_node=100,\n    cluster_routing_allocation_node_concurrent_recoveries=2,\n    plugins_alerting_filter_by_backend_roles_enabled=False,\n    reindex_remote_whitelists=[\"cloud.digitalocean.com:8080\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleDatabaseCluster = new DigitalOcean.DatabaseCluster(\"example\", new()\n    {\n        Name = \"example-opensearch-cluster\",\n        Engine = \"opensearch\",\n        Version = \"2\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU2GB,\n        Region = DigitalOcean.Region.NYC3,\n        NodeCount = 1,\n    });\n\n    var example = new DigitalOcean.DatabaseOpensearchConfig(\"example\", new()\n    {\n        ClusterId = exampleDatabaseCluster.Id,\n        IsmEnabled = true,\n        IsmHistoryEnabled = true,\n        IsmHistoryMaxAgeHours = 24,\n        IsmHistoryMaxDocs = 2500000,\n        IsmHistoryRolloverCheckPeriodHours = 8,\n        IsmHistoryRolloverRetentionPeriodDays = 30,\n        HttpMaxContentLengthBytes = 100000000,\n        HttpMaxHeaderSizeBytes = 8192,\n        HttpMaxInitialLineLengthBytes = 4096,\n        IndicesQueryBoolMaxClauseCount = 1024,\n        SearchMaxBuckets = 10000,\n        IndicesFielddataCacheSizePercentage = 3,\n        IndicesMemoryIndexBufferSizePercentage = 10,\n        IndicesMemoryMinIndexBufferSizeMb = 48,\n        IndicesMemoryMaxIndexBufferSizeMb = 3,\n        IndicesQueriesCacheSizePercentage = 10,\n        IndicesRecoveryMaxMbPerSec = 40,\n        IndicesRecoveryMaxConcurrentFileChunks = 2,\n        ActionAutoCreateIndexEnabled = true,\n        ActionDestructiveRequiresName = false,\n        EnableSecurityAudit = false,\n        ThreadPoolSearchSize = 1,\n        ThreadPoolSearchThrottledSize = 1,\n        ThreadPoolSearchThrottledQueueSize = 10,\n        ThreadPoolSearchQueueSize = 10,\n        ThreadPoolGetSize = 1,\n        ThreadPoolGetQueueSize = 10,\n        ThreadPoolAnalyzeSize = 1,\n        ThreadPoolAnalyzeQueueSize = 10,\n        ThreadPoolWriteSize = 1,\n        ThreadPoolWriteQueueSize = 10,\n        ThreadPoolForceMergeSize = 1,\n        OverrideMainResponseVersion = false,\n        ScriptMaxCompilationsRate = \"use-context\",\n        ClusterMaxShardsPerNode = 100,\n        ClusterRoutingAllocationNodeConcurrentRecoveries = 2,\n        PluginsAlertingFilterByBackendRolesEnabled = false,\n        ReindexRemoteWhitelists = new[]\n        {\n            \"cloud.digitalocean.com:8080\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleDatabaseCluster, err := digitalocean.NewDatabaseCluster(ctx, \"example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-opensearch-cluster\"),\n\t\t\tEngine:    pulumi.String(\"opensearch\"),\n\t\t\tVersion:   pulumi.String(\"2\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU2GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC3),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseOpensearchConfig(ctx, \"example\", \u0026digitalocean.DatabaseOpensearchConfigArgs{\n\t\t\tClusterId:                                        exampleDatabaseCluster.ID(),\n\t\t\tIsmEnabled:                                       pulumi.Bool(true),\n\t\t\tIsmHistoryEnabled:                                pulumi.Bool(true),\n\t\t\tIsmHistoryMaxAgeHours:                            pulumi.Int(24),\n\t\t\tIsmHistoryMaxDocs:                                pulumi.Int(2500000),\n\t\t\tIsmHistoryRolloverCheckPeriodHours:               pulumi.Int(8),\n\t\t\tIsmHistoryRolloverRetentionPeriodDays:            pulumi.Int(30),\n\t\t\tHttpMaxContentLengthBytes:                        pulumi.Int(100000000),\n\t\t\tHttpMaxHeaderSizeBytes:                           pulumi.Int(8192),\n\t\t\tHttpMaxInitialLineLengthBytes:                    pulumi.Int(4096),\n\t\t\tIndicesQueryBoolMaxClauseCount:                   pulumi.Int(1024),\n\t\t\tSearchMaxBuckets:                                 pulumi.Int(10000),\n\t\t\tIndicesFielddataCacheSizePercentage:              pulumi.Int(3),\n\t\t\tIndicesMemoryIndexBufferSizePercentage:           pulumi.Int(10),\n\t\t\tIndicesMemoryMinIndexBufferSizeMb:                pulumi.Int(48),\n\t\t\tIndicesMemoryMaxIndexBufferSizeMb:                pulumi.Int(3),\n\t\t\tIndicesQueriesCacheSizePercentage:                pulumi.Int(10),\n\t\t\tIndicesRecoveryMaxMbPerSec:                       pulumi.Int(40),\n\t\t\tIndicesRecoveryMaxConcurrentFileChunks:           pulumi.Int(2),\n\t\t\tActionAutoCreateIndexEnabled:                     pulumi.Bool(true),\n\t\t\tActionDestructiveRequiresName:                    pulumi.Bool(false),\n\t\t\tEnableSecurityAudit:                              pulumi.Bool(false),\n\t\t\tThreadPoolSearchSize:                             pulumi.Int(1),\n\t\t\tThreadPoolSearchThrottledSize:                    pulumi.Int(1),\n\t\t\tThreadPoolSearchThrottledQueueSize:               pulumi.Int(10),\n\t\t\tThreadPoolSearchQueueSize:                        pulumi.Int(10),\n\t\t\tThreadPoolGetSize:                                pulumi.Int(1),\n\t\t\tThreadPoolGetQueueSize:                           pulumi.Int(10),\n\t\t\tThreadPoolAnalyzeSize:                            pulumi.Int(1),\n\t\t\tThreadPoolAnalyzeQueueSize:                       pulumi.Int(10),\n\t\t\tThreadPoolWriteSize:                              pulumi.Int(1),\n\t\t\tThreadPoolWriteQueueSize:                         pulumi.Int(10),\n\t\t\tThreadPoolForceMergeSize:                         pulumi.Int(1),\n\t\t\tOverrideMainResponseVersion:                      pulumi.Bool(false),\n\t\t\tScriptMaxCompilationsRate:                        pulumi.String(\"use-context\"),\n\t\t\tClusterMaxShardsPerNode:                          pulumi.Int(100),\n\t\t\tClusterRoutingAllocationNodeConcurrentRecoveries: pulumi.Int(2),\n\t\t\tPluginsAlertingFilterByBackendRolesEnabled:       pulumi.Bool(false),\n\t\t\tReindexRemoteWhitelists: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"cloud.digitalocean.com:8080\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseOpensearchConfig;\nimport com.pulumi.digitalocean.DatabaseOpensearchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleDatabaseCluster = new DatabaseCluster(\"exampleDatabaseCluster\", DatabaseClusterArgs.builder()\n            .name(\"example-opensearch-cluster\")\n            .engine(\"opensearch\")\n            .version(\"2\")\n            .size(\"db-s-1vcpu-2gb\")\n            .region(\"nyc3\")\n            .nodeCount(1)\n            .build());\n\n        var example = new DatabaseOpensearchConfig(\"example\", DatabaseOpensearchConfigArgs.builder()\n            .clusterId(exampleDatabaseCluster.id())\n            .ismEnabled(true)\n            .ismHistoryEnabled(true)\n            .ismHistoryMaxAgeHours(24)\n            .ismHistoryMaxDocs(2500000)\n            .ismHistoryRolloverCheckPeriodHours(8)\n            .ismHistoryRolloverRetentionPeriodDays(30)\n            .httpMaxContentLengthBytes(100000000)\n            .httpMaxHeaderSizeBytes(8192)\n            .httpMaxInitialLineLengthBytes(4096)\n            .indicesQueryBoolMaxClauseCount(1024)\n            .searchMaxBuckets(10000)\n            .indicesFielddataCacheSizePercentage(3)\n            .indicesMemoryIndexBufferSizePercentage(10)\n            .indicesMemoryMinIndexBufferSizeMb(48)\n            .indicesMemoryMaxIndexBufferSizeMb(3)\n            .indicesQueriesCacheSizePercentage(10)\n            .indicesRecoveryMaxMbPerSec(40)\n            .indicesRecoveryMaxConcurrentFileChunks(2)\n            .actionAutoCreateIndexEnabled(true)\n            .actionDestructiveRequiresName(false)\n            .enableSecurityAudit(false)\n            .threadPoolSearchSize(1)\n            .threadPoolSearchThrottledSize(1)\n            .threadPoolSearchThrottledQueueSize(10)\n            .threadPoolSearchQueueSize(10)\n            .threadPoolGetSize(1)\n            .threadPoolGetQueueSize(10)\n            .threadPoolAnalyzeSize(1)\n            .threadPoolAnalyzeQueueSize(10)\n            .threadPoolWriteSize(1)\n            .threadPoolWriteQueueSize(10)\n            .threadPoolForceMergeSize(1)\n            .overrideMainResponseVersion(false)\n            .scriptMaxCompilationsRate(\"use-context\")\n            .clusterMaxShardsPerNode(100)\n            .clusterRoutingAllocationNodeConcurrentRecoveries(2)\n            .pluginsAlertingFilterByBackendRolesEnabled(false)\n            .reindexRemoteWhitelists(\"cloud.digitalocean.com:8080\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabaseOpensearchConfig\n    properties:\n      clusterId: ${exampleDatabaseCluster.id}\n      ismEnabled: true\n      ismHistoryEnabled: true\n      ismHistoryMaxAgeHours: 24\n      ismHistoryMaxDocs: 2.5e+06\n      ismHistoryRolloverCheckPeriodHours: 8\n      ismHistoryRolloverRetentionPeriodDays: 30\n      httpMaxContentLengthBytes: 1e+08\n      httpMaxHeaderSizeBytes: 8192\n      httpMaxInitialLineLengthBytes: 4096\n      indicesQueryBoolMaxClauseCount: 1024\n      searchMaxBuckets: 10000\n      indicesFielddataCacheSizePercentage: 3\n      indicesMemoryIndexBufferSizePercentage: 10\n      indicesMemoryMinIndexBufferSizeMb: 48\n      indicesMemoryMaxIndexBufferSizeMb: 3\n      indicesQueriesCacheSizePercentage: 10\n      indicesRecoveryMaxMbPerSec: 40\n      indicesRecoveryMaxConcurrentFileChunks: 2\n      actionAutoCreateIndexEnabled: true\n      actionDestructiveRequiresName: false\n      enableSecurityAudit: false\n      threadPoolSearchSize: 1\n      threadPoolSearchThrottledSize: 1\n      threadPoolSearchThrottledQueueSize: 10\n      threadPoolSearchQueueSize: 10\n      threadPoolGetSize: 1\n      threadPoolGetQueueSize: 10\n      threadPoolAnalyzeSize: 1\n      threadPoolAnalyzeQueueSize: 10\n      threadPoolWriteSize: 1\n      threadPoolWriteQueueSize: 10\n      threadPoolForceMergeSize: 1\n      overrideMainResponseVersion: false\n      scriptMaxCompilationsRate: use-context\n      clusterMaxShardsPerNode: 100\n      clusterRoutingAllocationNodeConcurrentRecoveries: 2\n      pluginsAlertingFilterByBackendRolesEnabled: false\n      reindexRemoteWhitelists:\n        - cloud.digitalocean.com:8080\n  exampleDatabaseCluster:\n    type: digitalocean:DatabaseCluster\n    name: example\n    properties:\n      name: example-opensearch-cluster\n      engine: opensearch\n      version: '2'\n      size: db-s-1vcpu-2gb\n      region: nyc3\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Opensearch database cluster's configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e the parent cluster, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseOpensearchConfig:DatabaseOpensearchConfig example 4b62829a-9c42-465b-aaa3-84051048e712\n```\n\n",
            "properties": {
                "actionAutoCreateIndexEnabled": {
                    "type": "boolean",
                    "description": "Specifices whether to allow automatic creation of indices. 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\n"
                },
                "actionDestructiveRequiresName": {
                    "type": "boolean",
                    "description": "Specifies whether to require explicit index names when deleting indices.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Opensearch cluster.\n"
                },
                "clusterMaxShardsPerNode": {
                    "type": "integer",
                    "description": "Maximum number of shards allowed per data node.\n"
                },
                "clusterRoutingAllocationNodeConcurrentRecoveries": {
                    "type": "integer",
                    "description": "Maximum concurrent incoming/outgoing shard recoveries (normally replicas) are allowed to happen per node. Default: \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e\n"
                },
                "enableSecurityAudit": {
                    "type": "boolean",
                    "description": "Specifies whether to allow security audit logging. 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\n"
                },
                "httpMaxContentLengthBytes": {
                    "type": "integer",
                    "description": "Maximum content length for HTTP requests to the OpenSearch HTTP API, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`100000000`\" pulumi-lang-dotnet=\"`100000000`\" pulumi-lang-go=\"`100000000`\" pulumi-lang-python=\"`100000000`\" pulumi-lang-yaml=\"`100000000`\" pulumi-lang-java=\"`100000000`\"\u003e`100000000`\u003c/span\u003e\n"
                },
                "httpMaxHeaderSizeBytes": {
                    "type": "integer",
                    "description": "Maximum size of allowed headers, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`8192`\" pulumi-lang-dotnet=\"`8192`\" pulumi-lang-go=\"`8192`\" pulumi-lang-python=\"`8192`\" pulumi-lang-yaml=\"`8192`\" pulumi-lang-java=\"`8192`\"\u003e`8192`\u003c/span\u003e\n"
                },
                "httpMaxInitialLineLengthBytes": {
                    "type": "integer",
                    "description": "Maximum length of an HTTP URL, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`4096`\" pulumi-lang-dotnet=\"`4096`\" pulumi-lang-go=\"`4096`\" pulumi-lang-python=\"`4096`\" pulumi-lang-yaml=\"`4096`\" pulumi-lang-java=\"`4096`\"\u003e`4096`\u003c/span\u003e\n"
                },
                "indicesFielddataCacheSizePercentage": {
                    "type": "integer",
                    "description": "Maximum amount of heap memory used for field data cache, expressed as a percentage. Decreasing the value too much will increase overhead of loading field data. Increasing the value too much will decrease amount of heap available for other operations.\n"
                },
                "indicesMemoryIndexBufferSizePercentage": {
                    "type": "integer",
                    "description": "Total amount of heap used for indexing buffer before writing segments to disk, expressed as a percentage. Too low value will slow down indexing; too high value will increase indexing performance but causes performance issues for query performance. Default: \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e\n"
                },
                "indicesMemoryMaxIndexBufferSizeMb": {
                    "type": "integer",
                    "description": "Maximum amount of heap used for indexing buffer before writing segments to disk, in mb. Works in conjunction with indices_memory_index_buffer_size_percentage, each being enforced. The default is unbounded.\n"
                },
                "indicesMemoryMinIndexBufferSizeMb": {
                    "type": "integer",
                    "description": "Minimum amount of heap used for indexing buffer before writing segments to disk, in mb. Works in conjunction with indices_memory_index_buffer_size_percentage, each being enforced. Default: \u003cspan pulumi-lang-nodejs=\"`48`\" pulumi-lang-dotnet=\"`48`\" pulumi-lang-go=\"`48`\" pulumi-lang-python=\"`48`\" pulumi-lang-yaml=\"`48`\" pulumi-lang-java=\"`48`\"\u003e`48`\u003c/span\u003e\n"
                },
                "indicesQueriesCacheSizePercentage": {
                    "type": "integer",
                    "description": "Maximum amount of heap used for query cache. Too low value will decrease query performance and increase performance for other operations; too high value will cause issues with other functionality. Default: \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e\n"
                },
                "indicesQueryBoolMaxClauseCount": {
                    "type": "integer",
                    "description": "Maximum number of clauses Lucene BooleanQuery can have. Only increase it if necessary, as it may cause performance issues. Default: \u003cspan pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\"\u003e`1024`\u003c/span\u003e\n"
                },
                "indicesRecoveryMaxConcurrentFileChunks": {
                    "type": "integer",
                    "description": "Maximum number of file chunks sent in parallel for each recovery. Default: \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e\n"
                },
                "indicesRecoveryMaxMbPerSec": {
                    "type": "integer",
                    "description": "Limits total inbound and outbound recovery traffic for each node, expressed in mb per second. Applies to both peer recoveries as well as snapshot recoveries (i.e., restores from a snapshot). Default: \u003cspan pulumi-lang-nodejs=\"`40`\" pulumi-lang-dotnet=\"`40`\" pulumi-lang-go=\"`40`\" pulumi-lang-python=\"`40`\" pulumi-lang-yaml=\"`40`\" pulumi-lang-java=\"`40`\"\u003e`40`\u003c/span\u003e\n"
                },
                "ismEnabled": {
                    "type": "boolean",
                    "description": "Specifies whether ISM is enabled or not. 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\n"
                },
                "ismHistoryEnabled": {
                    "type": "boolean",
                    "description": "Specifies whether audit history is enabled or not. The logs from ISM are automatically indexed to a logs document. 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\n"
                },
                "ismHistoryMaxAgeHours": {
                    "type": "integer",
                    "description": "Maximum age before rolling over the audit history index, in hours. Default: \u003cspan pulumi-lang-nodejs=\"`24`\" pulumi-lang-dotnet=\"`24`\" pulumi-lang-go=\"`24`\" pulumi-lang-python=\"`24`\" pulumi-lang-yaml=\"`24`\" pulumi-lang-java=\"`24`\"\u003e`24`\u003c/span\u003e\n"
                },
                "ismHistoryMaxDocs": {
                    "type": "integer",
                    "description": "Maximum number of documents before rolling over the audit history index. Default: \u003cspan pulumi-lang-nodejs=\"`2500000`\" pulumi-lang-dotnet=\"`2500000`\" pulumi-lang-go=\"`2500000`\" pulumi-lang-python=\"`2500000`\" pulumi-lang-yaml=\"`2500000`\" pulumi-lang-java=\"`2500000`\"\u003e`2500000`\u003c/span\u003e\n"
                },
                "ismHistoryRolloverCheckPeriodHours": {
                    "type": "integer",
                    "description": "The time between rollover checks for the audit history index, in hours. Default: \u003cspan pulumi-lang-nodejs=\"`8`\" pulumi-lang-dotnet=\"`8`\" pulumi-lang-go=\"`8`\" pulumi-lang-python=\"`8`\" pulumi-lang-yaml=\"`8`\" pulumi-lang-java=\"`8`\"\u003e`8`\u003c/span\u003e\n"
                },
                "ismHistoryRolloverRetentionPeriodDays": {
                    "type": "integer",
                    "description": "Length of time long audit history indices are kept, in days. Default: \u003cspan pulumi-lang-nodejs=\"`30`\" pulumi-lang-dotnet=\"`30`\" pulumi-lang-go=\"`30`\" pulumi-lang-python=\"`30`\" pulumi-lang-yaml=\"`30`\" pulumi-lang-java=\"`30`\"\u003e`30`\u003c/span\u003e\n"
                },
                "overrideMainResponseVersion": {
                    "type": "boolean",
                    "description": "Compatibility mode sets OpenSearch to report its version as 7.10 so clients continue to work. 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\n"
                },
                "pluginsAlertingFilterByBackendRolesEnabled": {
                    "type": "boolean",
                    "description": "Enable or disable filtering of alerting by backend roles. 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\n"
                },
                "reindexRemoteWhitelists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allowlist of remote IP addresses for reindexing. Changing this value will cause all OpenSearch instances to restart.\n"
                },
                "scriptMaxCompilationsRate": {
                    "type": "string",
                    "description": "Limits the number of inline script compilations within a period of time. Default is `use-context`\n"
                },
                "searchMaxBuckets": {
                    "type": "integer",
                    "description": "Maximum number of aggregation buckets allowed in a single response. Default: \u003cspan pulumi-lang-nodejs=\"`10000`\" pulumi-lang-dotnet=\"`10000`\" pulumi-lang-go=\"`10000`\" pulumi-lang-python=\"`10000`\" pulumi-lang-yaml=\"`10000`\" pulumi-lang-java=\"`10000`\"\u003e`10000`\u003c/span\u003e\n"
                },
                "threadPoolAnalyzeQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the analyze thread pool.\n"
                },
                "threadPoolAnalyzeSize": {
                    "type": "integer",
                    "description": "Number of workers in the analyze operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolForceMergeSize": {
                    "type": "integer",
                    "description": "Number of workers in the force merge operation thread pool. This pool is used for forcing a merge between shards of one or more indices. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolGetQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the get thread pool.\n"
                },
                "threadPoolGetSize": {
                    "type": "integer",
                    "description": "Number of workers in the get operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolSearchQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the search thread pool.\n"
                },
                "threadPoolSearchSize": {
                    "type": "integer",
                    "description": "Number of workers in the search operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolSearchThrottledQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the search throttled thread pool.\n"
                },
                "threadPoolSearchThrottledSize": {
                    "type": "integer",
                    "description": "Number of workers in the search throttled operation thread pool. This pool is used for searching frozen indices. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolWriteQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the write thread pool.\n"
                },
                "threadPoolWriteSize": {
                    "type": "integer",
                    "description": "Number of workers in the write operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                }
            },
            "required": [
                "actionAutoCreateIndexEnabled",
                "actionDestructiveRequiresName",
                "clusterId",
                "clusterMaxShardsPerNode",
                "clusterRoutingAllocationNodeConcurrentRecoveries",
                "enableSecurityAudit",
                "httpMaxContentLengthBytes",
                "httpMaxHeaderSizeBytes",
                "httpMaxInitialLineLengthBytes",
                "indicesFielddataCacheSizePercentage",
                "indicesMemoryIndexBufferSizePercentage",
                "indicesMemoryMaxIndexBufferSizeMb",
                "indicesMemoryMinIndexBufferSizeMb",
                "indicesQueriesCacheSizePercentage",
                "indicesQueryBoolMaxClauseCount",
                "indicesRecoveryMaxConcurrentFileChunks",
                "indicesRecoveryMaxMbPerSec",
                "ismEnabled",
                "ismHistoryEnabled",
                "ismHistoryMaxAgeHours",
                "ismHistoryMaxDocs",
                "ismHistoryRolloverCheckPeriodHours",
                "ismHistoryRolloverRetentionPeriodDays",
                "overrideMainResponseVersion",
                "pluginsAlertingFilterByBackendRolesEnabled",
                "scriptMaxCompilationsRate",
                "searchMaxBuckets",
                "threadPoolAnalyzeQueueSize",
                "threadPoolAnalyzeSize",
                "threadPoolForceMergeSize",
                "threadPoolGetQueueSize",
                "threadPoolGetSize",
                "threadPoolSearchQueueSize",
                "threadPoolSearchSize",
                "threadPoolSearchThrottledQueueSize",
                "threadPoolSearchThrottledSize",
                "threadPoolWriteQueueSize",
                "threadPoolWriteSize"
            ],
            "inputProperties": {
                "actionAutoCreateIndexEnabled": {
                    "type": "boolean",
                    "description": "Specifices whether to allow automatic creation of indices. 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\n"
                },
                "actionDestructiveRequiresName": {
                    "type": "boolean",
                    "description": "Specifies whether to require explicit index names when deleting indices.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Opensearch cluster.\n",
                    "willReplaceOnChanges": true
                },
                "clusterMaxShardsPerNode": {
                    "type": "integer",
                    "description": "Maximum number of shards allowed per data node.\n"
                },
                "clusterRoutingAllocationNodeConcurrentRecoveries": {
                    "type": "integer",
                    "description": "Maximum concurrent incoming/outgoing shard recoveries (normally replicas) are allowed to happen per node. Default: \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e\n"
                },
                "enableSecurityAudit": {
                    "type": "boolean",
                    "description": "Specifies whether to allow security audit logging. 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\n"
                },
                "httpMaxContentLengthBytes": {
                    "type": "integer",
                    "description": "Maximum content length for HTTP requests to the OpenSearch HTTP API, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`100000000`\" pulumi-lang-dotnet=\"`100000000`\" pulumi-lang-go=\"`100000000`\" pulumi-lang-python=\"`100000000`\" pulumi-lang-yaml=\"`100000000`\" pulumi-lang-java=\"`100000000`\"\u003e`100000000`\u003c/span\u003e\n"
                },
                "httpMaxHeaderSizeBytes": {
                    "type": "integer",
                    "description": "Maximum size of allowed headers, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`8192`\" pulumi-lang-dotnet=\"`8192`\" pulumi-lang-go=\"`8192`\" pulumi-lang-python=\"`8192`\" pulumi-lang-yaml=\"`8192`\" pulumi-lang-java=\"`8192`\"\u003e`8192`\u003c/span\u003e\n"
                },
                "httpMaxInitialLineLengthBytes": {
                    "type": "integer",
                    "description": "Maximum length of an HTTP URL, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`4096`\" pulumi-lang-dotnet=\"`4096`\" pulumi-lang-go=\"`4096`\" pulumi-lang-python=\"`4096`\" pulumi-lang-yaml=\"`4096`\" pulumi-lang-java=\"`4096`\"\u003e`4096`\u003c/span\u003e\n"
                },
                "indicesFielddataCacheSizePercentage": {
                    "type": "integer",
                    "description": "Maximum amount of heap memory used for field data cache, expressed as a percentage. Decreasing the value too much will increase overhead of loading field data. Increasing the value too much will decrease amount of heap available for other operations.\n"
                },
                "indicesMemoryIndexBufferSizePercentage": {
                    "type": "integer",
                    "description": "Total amount of heap used for indexing buffer before writing segments to disk, expressed as a percentage. Too low value will slow down indexing; too high value will increase indexing performance but causes performance issues for query performance. Default: \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e\n"
                },
                "indicesMemoryMaxIndexBufferSizeMb": {
                    "type": "integer",
                    "description": "Maximum amount of heap used for indexing buffer before writing segments to disk, in mb. Works in conjunction with indices_memory_index_buffer_size_percentage, each being enforced. The default is unbounded.\n"
                },
                "indicesMemoryMinIndexBufferSizeMb": {
                    "type": "integer",
                    "description": "Minimum amount of heap used for indexing buffer before writing segments to disk, in mb. Works in conjunction with indices_memory_index_buffer_size_percentage, each being enforced. Default: \u003cspan pulumi-lang-nodejs=\"`48`\" pulumi-lang-dotnet=\"`48`\" pulumi-lang-go=\"`48`\" pulumi-lang-python=\"`48`\" pulumi-lang-yaml=\"`48`\" pulumi-lang-java=\"`48`\"\u003e`48`\u003c/span\u003e\n"
                },
                "indicesQueriesCacheSizePercentage": {
                    "type": "integer",
                    "description": "Maximum amount of heap used for query cache. Too low value will decrease query performance and increase performance for other operations; too high value will cause issues with other functionality. Default: \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e\n"
                },
                "indicesQueryBoolMaxClauseCount": {
                    "type": "integer",
                    "description": "Maximum number of clauses Lucene BooleanQuery can have. Only increase it if necessary, as it may cause performance issues. Default: \u003cspan pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\"\u003e`1024`\u003c/span\u003e\n"
                },
                "indicesRecoveryMaxConcurrentFileChunks": {
                    "type": "integer",
                    "description": "Maximum number of file chunks sent in parallel for each recovery. Default: \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e\n"
                },
                "indicesRecoveryMaxMbPerSec": {
                    "type": "integer",
                    "description": "Limits total inbound and outbound recovery traffic for each node, expressed in mb per second. Applies to both peer recoveries as well as snapshot recoveries (i.e., restores from a snapshot). Default: \u003cspan pulumi-lang-nodejs=\"`40`\" pulumi-lang-dotnet=\"`40`\" pulumi-lang-go=\"`40`\" pulumi-lang-python=\"`40`\" pulumi-lang-yaml=\"`40`\" pulumi-lang-java=\"`40`\"\u003e`40`\u003c/span\u003e\n"
                },
                "ismEnabled": {
                    "type": "boolean",
                    "description": "Specifies whether ISM is enabled or not. 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\n"
                },
                "ismHistoryEnabled": {
                    "type": "boolean",
                    "description": "Specifies whether audit history is enabled or not. The logs from ISM are automatically indexed to a logs document. 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\n"
                },
                "ismHistoryMaxAgeHours": {
                    "type": "integer",
                    "description": "Maximum age before rolling over the audit history index, in hours. Default: \u003cspan pulumi-lang-nodejs=\"`24`\" pulumi-lang-dotnet=\"`24`\" pulumi-lang-go=\"`24`\" pulumi-lang-python=\"`24`\" pulumi-lang-yaml=\"`24`\" pulumi-lang-java=\"`24`\"\u003e`24`\u003c/span\u003e\n"
                },
                "ismHistoryMaxDocs": {
                    "type": "integer",
                    "description": "Maximum number of documents before rolling over the audit history index. Default: \u003cspan pulumi-lang-nodejs=\"`2500000`\" pulumi-lang-dotnet=\"`2500000`\" pulumi-lang-go=\"`2500000`\" pulumi-lang-python=\"`2500000`\" pulumi-lang-yaml=\"`2500000`\" pulumi-lang-java=\"`2500000`\"\u003e`2500000`\u003c/span\u003e\n"
                },
                "ismHistoryRolloverCheckPeriodHours": {
                    "type": "integer",
                    "description": "The time between rollover checks for the audit history index, in hours. Default: \u003cspan pulumi-lang-nodejs=\"`8`\" pulumi-lang-dotnet=\"`8`\" pulumi-lang-go=\"`8`\" pulumi-lang-python=\"`8`\" pulumi-lang-yaml=\"`8`\" pulumi-lang-java=\"`8`\"\u003e`8`\u003c/span\u003e\n"
                },
                "ismHistoryRolloverRetentionPeriodDays": {
                    "type": "integer",
                    "description": "Length of time long audit history indices are kept, in days. Default: \u003cspan pulumi-lang-nodejs=\"`30`\" pulumi-lang-dotnet=\"`30`\" pulumi-lang-go=\"`30`\" pulumi-lang-python=\"`30`\" pulumi-lang-yaml=\"`30`\" pulumi-lang-java=\"`30`\"\u003e`30`\u003c/span\u003e\n"
                },
                "overrideMainResponseVersion": {
                    "type": "boolean",
                    "description": "Compatibility mode sets OpenSearch to report its version as 7.10 so clients continue to work. 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\n"
                },
                "pluginsAlertingFilterByBackendRolesEnabled": {
                    "type": "boolean",
                    "description": "Enable or disable filtering of alerting by backend roles. 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\n"
                },
                "reindexRemoteWhitelists": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Allowlist of remote IP addresses for reindexing. Changing this value will cause all OpenSearch instances to restart.\n"
                },
                "scriptMaxCompilationsRate": {
                    "type": "string",
                    "description": "Limits the number of inline script compilations within a period of time. Default is `use-context`\n"
                },
                "searchMaxBuckets": {
                    "type": "integer",
                    "description": "Maximum number of aggregation buckets allowed in a single response. Default: \u003cspan pulumi-lang-nodejs=\"`10000`\" pulumi-lang-dotnet=\"`10000`\" pulumi-lang-go=\"`10000`\" pulumi-lang-python=\"`10000`\" pulumi-lang-yaml=\"`10000`\" pulumi-lang-java=\"`10000`\"\u003e`10000`\u003c/span\u003e\n"
                },
                "threadPoolAnalyzeQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the analyze thread pool.\n"
                },
                "threadPoolAnalyzeSize": {
                    "type": "integer",
                    "description": "Number of workers in the analyze operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolForceMergeSize": {
                    "type": "integer",
                    "description": "Number of workers in the force merge operation thread pool. This pool is used for forcing a merge between shards of one or more indices. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolGetQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the get thread pool.\n"
                },
                "threadPoolGetSize": {
                    "type": "integer",
                    "description": "Number of workers in the get operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolSearchQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the search thread pool.\n"
                },
                "threadPoolSearchSize": {
                    "type": "integer",
                    "description": "Number of workers in the search operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolSearchThrottledQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the search throttled thread pool.\n"
                },
                "threadPoolSearchThrottledSize": {
                    "type": "integer",
                    "description": "Number of workers in the search throttled operation thread pool. This pool is used for searching frozen indices. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                },
                "threadPoolWriteQueueSize": {
                    "type": "integer",
                    "description": "Size of queue for operations in the write thread pool.\n"
                },
                "threadPoolWriteSize": {
                    "type": "integer",
                    "description": "Number of workers in the write operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseOpensearchConfig resources.\n",
                "properties": {
                    "actionAutoCreateIndexEnabled": {
                        "type": "boolean",
                        "description": "Specifices whether to allow automatic creation of indices. 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\n"
                    },
                    "actionDestructiveRequiresName": {
                        "type": "boolean",
                        "description": "Specifies whether to require explicit index names when deleting indices.\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target Opensearch cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "clusterMaxShardsPerNode": {
                        "type": "integer",
                        "description": "Maximum number of shards allowed per data node.\n"
                    },
                    "clusterRoutingAllocationNodeConcurrentRecoveries": {
                        "type": "integer",
                        "description": "Maximum concurrent incoming/outgoing shard recoveries (normally replicas) are allowed to happen per node. Default: \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e\n"
                    },
                    "enableSecurityAudit": {
                        "type": "boolean",
                        "description": "Specifies whether to allow security audit logging. 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\n"
                    },
                    "httpMaxContentLengthBytes": {
                        "type": "integer",
                        "description": "Maximum content length for HTTP requests to the OpenSearch HTTP API, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`100000000`\" pulumi-lang-dotnet=\"`100000000`\" pulumi-lang-go=\"`100000000`\" pulumi-lang-python=\"`100000000`\" pulumi-lang-yaml=\"`100000000`\" pulumi-lang-java=\"`100000000`\"\u003e`100000000`\u003c/span\u003e\n"
                    },
                    "httpMaxHeaderSizeBytes": {
                        "type": "integer",
                        "description": "Maximum size of allowed headers, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`8192`\" pulumi-lang-dotnet=\"`8192`\" pulumi-lang-go=\"`8192`\" pulumi-lang-python=\"`8192`\" pulumi-lang-yaml=\"`8192`\" pulumi-lang-java=\"`8192`\"\u003e`8192`\u003c/span\u003e\n"
                    },
                    "httpMaxInitialLineLengthBytes": {
                        "type": "integer",
                        "description": "Maximum length of an HTTP URL, in bytes. Default: \u003cspan pulumi-lang-nodejs=\"`4096`\" pulumi-lang-dotnet=\"`4096`\" pulumi-lang-go=\"`4096`\" pulumi-lang-python=\"`4096`\" pulumi-lang-yaml=\"`4096`\" pulumi-lang-java=\"`4096`\"\u003e`4096`\u003c/span\u003e\n"
                    },
                    "indicesFielddataCacheSizePercentage": {
                        "type": "integer",
                        "description": "Maximum amount of heap memory used for field data cache, expressed as a percentage. Decreasing the value too much will increase overhead of loading field data. Increasing the value too much will decrease amount of heap available for other operations.\n"
                    },
                    "indicesMemoryIndexBufferSizePercentage": {
                        "type": "integer",
                        "description": "Total amount of heap used for indexing buffer before writing segments to disk, expressed as a percentage. Too low value will slow down indexing; too high value will increase indexing performance but causes performance issues for query performance. Default: \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e\n"
                    },
                    "indicesMemoryMaxIndexBufferSizeMb": {
                        "type": "integer",
                        "description": "Maximum amount of heap used for indexing buffer before writing segments to disk, in mb. Works in conjunction with indices_memory_index_buffer_size_percentage, each being enforced. The default is unbounded.\n"
                    },
                    "indicesMemoryMinIndexBufferSizeMb": {
                        "type": "integer",
                        "description": "Minimum amount of heap used for indexing buffer before writing segments to disk, in mb. Works in conjunction with indices_memory_index_buffer_size_percentage, each being enforced. Default: \u003cspan pulumi-lang-nodejs=\"`48`\" pulumi-lang-dotnet=\"`48`\" pulumi-lang-go=\"`48`\" pulumi-lang-python=\"`48`\" pulumi-lang-yaml=\"`48`\" pulumi-lang-java=\"`48`\"\u003e`48`\u003c/span\u003e\n"
                    },
                    "indicesQueriesCacheSizePercentage": {
                        "type": "integer",
                        "description": "Maximum amount of heap used for query cache. Too low value will decrease query performance and increase performance for other operations; too high value will cause issues with other functionality. Default: \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e\n"
                    },
                    "indicesQueryBoolMaxClauseCount": {
                        "type": "integer",
                        "description": "Maximum number of clauses Lucene BooleanQuery can have. Only increase it if necessary, as it may cause performance issues. Default: \u003cspan pulumi-lang-nodejs=\"`1024`\" pulumi-lang-dotnet=\"`1024`\" pulumi-lang-go=\"`1024`\" pulumi-lang-python=\"`1024`\" pulumi-lang-yaml=\"`1024`\" pulumi-lang-java=\"`1024`\"\u003e`1024`\u003c/span\u003e\n"
                    },
                    "indicesRecoveryMaxConcurrentFileChunks": {
                        "type": "integer",
                        "description": "Maximum number of file chunks sent in parallel for each recovery. Default: \u003cspan pulumi-lang-nodejs=\"`2`\" pulumi-lang-dotnet=\"`2`\" pulumi-lang-go=\"`2`\" pulumi-lang-python=\"`2`\" pulumi-lang-yaml=\"`2`\" pulumi-lang-java=\"`2`\"\u003e`2`\u003c/span\u003e\n"
                    },
                    "indicesRecoveryMaxMbPerSec": {
                        "type": "integer",
                        "description": "Limits total inbound and outbound recovery traffic for each node, expressed in mb per second. Applies to both peer recoveries as well as snapshot recoveries (i.e., restores from a snapshot). Default: \u003cspan pulumi-lang-nodejs=\"`40`\" pulumi-lang-dotnet=\"`40`\" pulumi-lang-go=\"`40`\" pulumi-lang-python=\"`40`\" pulumi-lang-yaml=\"`40`\" pulumi-lang-java=\"`40`\"\u003e`40`\u003c/span\u003e\n"
                    },
                    "ismEnabled": {
                        "type": "boolean",
                        "description": "Specifies whether ISM is enabled or not. 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\n"
                    },
                    "ismHistoryEnabled": {
                        "type": "boolean",
                        "description": "Specifies whether audit history is enabled or not. The logs from ISM are automatically indexed to a logs document. 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\n"
                    },
                    "ismHistoryMaxAgeHours": {
                        "type": "integer",
                        "description": "Maximum age before rolling over the audit history index, in hours. Default: \u003cspan pulumi-lang-nodejs=\"`24`\" pulumi-lang-dotnet=\"`24`\" pulumi-lang-go=\"`24`\" pulumi-lang-python=\"`24`\" pulumi-lang-yaml=\"`24`\" pulumi-lang-java=\"`24`\"\u003e`24`\u003c/span\u003e\n"
                    },
                    "ismHistoryMaxDocs": {
                        "type": "integer",
                        "description": "Maximum number of documents before rolling over the audit history index. Default: \u003cspan pulumi-lang-nodejs=\"`2500000`\" pulumi-lang-dotnet=\"`2500000`\" pulumi-lang-go=\"`2500000`\" pulumi-lang-python=\"`2500000`\" pulumi-lang-yaml=\"`2500000`\" pulumi-lang-java=\"`2500000`\"\u003e`2500000`\u003c/span\u003e\n"
                    },
                    "ismHistoryRolloverCheckPeriodHours": {
                        "type": "integer",
                        "description": "The time between rollover checks for the audit history index, in hours. Default: \u003cspan pulumi-lang-nodejs=\"`8`\" pulumi-lang-dotnet=\"`8`\" pulumi-lang-go=\"`8`\" pulumi-lang-python=\"`8`\" pulumi-lang-yaml=\"`8`\" pulumi-lang-java=\"`8`\"\u003e`8`\u003c/span\u003e\n"
                    },
                    "ismHistoryRolloverRetentionPeriodDays": {
                        "type": "integer",
                        "description": "Length of time long audit history indices are kept, in days. Default: \u003cspan pulumi-lang-nodejs=\"`30`\" pulumi-lang-dotnet=\"`30`\" pulumi-lang-go=\"`30`\" pulumi-lang-python=\"`30`\" pulumi-lang-yaml=\"`30`\" pulumi-lang-java=\"`30`\"\u003e`30`\u003c/span\u003e\n"
                    },
                    "overrideMainResponseVersion": {
                        "type": "boolean",
                        "description": "Compatibility mode sets OpenSearch to report its version as 7.10 so clients continue to work. 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\n"
                    },
                    "pluginsAlertingFilterByBackendRolesEnabled": {
                        "type": "boolean",
                        "description": "Enable or disable filtering of alerting by backend roles. 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\n"
                    },
                    "reindexRemoteWhitelists": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Allowlist of remote IP addresses for reindexing. Changing this value will cause all OpenSearch instances to restart.\n"
                    },
                    "scriptMaxCompilationsRate": {
                        "type": "string",
                        "description": "Limits the number of inline script compilations within a period of time. Default is `use-context`\n"
                    },
                    "searchMaxBuckets": {
                        "type": "integer",
                        "description": "Maximum number of aggregation buckets allowed in a single response. Default: \u003cspan pulumi-lang-nodejs=\"`10000`\" pulumi-lang-dotnet=\"`10000`\" pulumi-lang-go=\"`10000`\" pulumi-lang-python=\"`10000`\" pulumi-lang-yaml=\"`10000`\" pulumi-lang-java=\"`10000`\"\u003e`10000`\u003c/span\u003e\n"
                    },
                    "threadPoolAnalyzeQueueSize": {
                        "type": "integer",
                        "description": "Size of queue for operations in the analyze thread pool.\n"
                    },
                    "threadPoolAnalyzeSize": {
                        "type": "integer",
                        "description": "Number of workers in the analyze operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                    },
                    "threadPoolForceMergeSize": {
                        "type": "integer",
                        "description": "Number of workers in the force merge operation thread pool. This pool is used for forcing a merge between shards of one or more indices. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                    },
                    "threadPoolGetQueueSize": {
                        "type": "integer",
                        "description": "Size of queue for operations in the get thread pool.\n"
                    },
                    "threadPoolGetSize": {
                        "type": "integer",
                        "description": "Number of workers in the get operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                    },
                    "threadPoolSearchQueueSize": {
                        "type": "integer",
                        "description": "Size of queue for operations in the search thread pool.\n"
                    },
                    "threadPoolSearchSize": {
                        "type": "integer",
                        "description": "Number of workers in the search operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                    },
                    "threadPoolSearchThrottledQueueSize": {
                        "type": "integer",
                        "description": "Size of queue for operations in the search throttled thread pool.\n"
                    },
                    "threadPoolSearchThrottledSize": {
                        "type": "integer",
                        "description": "Number of workers in the search throttled operation thread pool. This pool is used for searching frozen indices. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                    },
                    "threadPoolWriteQueueSize": {
                        "type": "integer",
                        "description": "Size of queue for operations in the write thread pool.\n"
                    },
                    "threadPoolWriteSize": {
                        "type": "integer",
                        "description": "Number of workers in the write operation thread pool. Do note this may have maximum value depending on CPU count - value is automatically lowered if set to higher than maximum value.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databasePostgresqlConfig:DatabasePostgresqlConfig": {
            "description": "Provides a virtual resource that can be used to change advanced configuration\noptions for a DigitalOcean managed PostgreSQL database cluster.\n\n\u003e **Note** PostgreSQL configurations are only removed from state when destroyed. The remote configuration is not unset.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleDatabaseCluster = new digitalocean.DatabaseCluster(\"example\", {\n    name: \"example-postgresql-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst example = new digitalocean.DatabasePostgresqlConfig(\"example\", {\n    clusterId: exampleDatabaseCluster.id,\n    timezone: \"UTC\",\n    workMem: 16,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_database_cluster = digitalocean.DatabaseCluster(\"example\",\n    name=\"example-postgresql-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nexample = digitalocean.DatabasePostgresqlConfig(\"example\",\n    cluster_id=example_database_cluster.id,\n    timezone=\"UTC\",\n    work_mem=16)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleDatabaseCluster = new DigitalOcean.DatabaseCluster(\"example\", new()\n    {\n        Name = \"example-postgresql-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var example = new DigitalOcean.DatabasePostgresqlConfig(\"example\", new()\n    {\n        ClusterId = exampleDatabaseCluster.Id,\n        Timezone = \"UTC\",\n        WorkMem = 16,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleDatabaseCluster, err := digitalocean.NewDatabaseCluster(ctx, \"example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgresql-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabasePostgresqlConfig(ctx, \"example\", \u0026digitalocean.DatabasePostgresqlConfigArgs{\n\t\t\tClusterId: exampleDatabaseCluster.ID(),\n\t\t\tTimezone:  pulumi.String(\"UTC\"),\n\t\t\tWorkMem:   pulumi.Int(16),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabasePostgresqlConfig;\nimport com.pulumi.digitalocean.DatabasePostgresqlConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleDatabaseCluster = new DatabaseCluster(\"exampleDatabaseCluster\", DatabaseClusterArgs.builder()\n            .name(\"example-postgresql-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var example = new DatabasePostgresqlConfig(\"example\", DatabasePostgresqlConfigArgs.builder()\n            .clusterId(exampleDatabaseCluster.id())\n            .timezone(\"UTC\")\n            .workMem(16)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabasePostgresqlConfig\n    properties:\n      clusterId: ${exampleDatabaseCluster.id}\n      timezone: UTC\n      workMem: 16\n  exampleDatabaseCluster:\n    type: digitalocean:DatabaseCluster\n    name: example\n    properties:\n      name: example-postgresql-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA PostgreSQL database cluster's configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e the parent cluster, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databasePostgresqlConfig:DatabasePostgresqlConfig example 52556c07-788e-4d41-b8a7-c796432197d1\n```\n\n",
            "properties": {
                "autovacuumAnalyzeScaleFactor": {
                    "type": "number",
                    "description": "Specifies a fraction, in a decimal value, of the table size to add to\u003cspan pulumi-lang-nodejs=\" autovacuumAnalyzeThreshold \" pulumi-lang-dotnet=\" AutovacuumAnalyzeThreshold \" pulumi-lang-go=\" autovacuumAnalyzeThreshold \" pulumi-lang-python=\" autovacuum_analyze_threshold \" pulumi-lang-yaml=\" autovacuumAnalyzeThreshold \" pulumi-lang-java=\" autovacuumAnalyzeThreshold \"\u003e autovacuum_analyze_threshold \u003c/span\u003ewhen deciding whether to trigger an ANALYZE. The default is 0.2 (20% of table size).\n"
                },
                "autovacuumAnalyzeThreshold": {
                    "type": "integer",
                    "description": "Specifies the minimum number of inserted, updated, or deleted tuples needed to trigger an ANALYZE in any one table. The default is 50 tuples.\n"
                },
                "autovacuumFreezeMaxAge": {
                    "type": "integer",
                    "description": "Specifies the maximum age (in transactions) that a table's pg_class.relfrozenxid field can attain before a VACUUM operation is forced to prevent transaction ID wraparound within the table. Note that the system will launch autovacuum processes to prevent wraparound even when autovacuum is otherwise disabled. This parameter will cause the server to be restarted.\n"
                },
                "autovacuumMaxWorkers": {
                    "type": "integer",
                    "description": "Specifies the maximum number of autovacuum processes (other than the autovacuum launcher) that may be running at any one time. The default is three. This parameter can only be set at server start.\n"
                },
                "autovacuumNaptime": {
                    "type": "integer",
                    "description": "Specifies the minimum delay, in seconds, between autovacuum runs on any given database. The default is one minute.\n"
                },
                "autovacuumVacuumCostDelay": {
                    "type": "integer",
                    "description": "Specifies the cost delay value, in milliseconds, that will be used in automatic VACUUM operations. If -1, uses the regular\u003cspan pulumi-lang-nodejs=\" vacuumCostDelay \" pulumi-lang-dotnet=\" VacuumCostDelay \" pulumi-lang-go=\" vacuumCostDelay \" pulumi-lang-python=\" vacuum_cost_delay \" pulumi-lang-yaml=\" vacuumCostDelay \" pulumi-lang-java=\" vacuumCostDelay \"\u003e vacuum_cost_delay \u003c/span\u003evalue, which is 20 milliseconds.\n"
                },
                "autovacuumVacuumCostLimit": {
                    "type": "integer",
                    "description": "Specifies the cost limit value that will be used in automatic VACUUM operations. If -1 is specified (which is the default), the regular\u003cspan pulumi-lang-nodejs=\" vacuumCostLimit \" pulumi-lang-dotnet=\" VacuumCostLimit \" pulumi-lang-go=\" vacuumCostLimit \" pulumi-lang-python=\" vacuum_cost_limit \" pulumi-lang-yaml=\" vacuumCostLimit \" pulumi-lang-java=\" vacuumCostLimit \"\u003e vacuum_cost_limit \u003c/span\u003evalue will be used.\n"
                },
                "autovacuumVacuumScaleFactor": {
                    "type": "number",
                    "description": "Specifies a fraction, in a decimal value, of the table size to add to\u003cspan pulumi-lang-nodejs=\" autovacuumVacuumThreshold \" pulumi-lang-dotnet=\" AutovacuumVacuumThreshold \" pulumi-lang-go=\" autovacuumVacuumThreshold \" pulumi-lang-python=\" autovacuum_vacuum_threshold \" pulumi-lang-yaml=\" autovacuumVacuumThreshold \" pulumi-lang-java=\" autovacuumVacuumThreshold \"\u003e autovacuum_vacuum_threshold \u003c/span\u003ewhen deciding whether to trigger a VACUUM. The default is 0.2 (20% of table size).\n"
                },
                "autovacuumVacuumThreshold": {
                    "type": "integer",
                    "description": "Specifies the minimum number of updated or deleted tuples needed to trigger a VACUUM in any one table. The default is 50 tuples.\n"
                },
                "backupHour": {
                    "type": "integer",
                    "description": "The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                },
                "backupMinute": {
                    "type": "integer",
                    "description": "The minute of the backup hour when backup for the service starts. New backup is only started if previous backup has already completed.\n"
                },
                "bgwriterDelay": {
                    "type": "integer",
                    "description": "Specifies the delay, in milliseconds, between activity rounds for the background writer. Default is 200 ms.\n"
                },
                "bgwriterFlushAfter": {
                    "type": "integer",
                    "description": "The amount of kilobytes that need to be written by the background writer before attempting to force the OS to issue these writes to underlying storage. Specified in kilobytes, default is 512. Setting of 0 disables forced writeback.\n"
                },
                "bgwriterLruMaxpages": {
                    "type": "integer",
                    "description": "The maximum number of buffers that the background writer can write. Setting this to zero disables background writing. Default is 100.\n"
                },
                "bgwriterLruMultiplier": {
                    "type": "number",
                    "description": "The average recent need for new buffers is multiplied by\u003cspan pulumi-lang-nodejs=\" bgwriterLruMultiplier \" pulumi-lang-dotnet=\" BgwriterLruMultiplier \" pulumi-lang-go=\" bgwriterLruMultiplier \" pulumi-lang-python=\" bgwriter_lru_multiplier \" pulumi-lang-yaml=\" bgwriterLruMultiplier \" pulumi-lang-java=\" bgwriterLruMultiplier \"\u003e bgwriter_lru_multiplier \u003c/span\u003eto arrive at an estimate of the number that will be needed during the next round, (up to bgwriter_lru_maxpages). 1.0 represents a “just in time” policy of writing exactly the number of buffers predicted to be needed. Larger values provide some cushion against spikes in demand, while smaller values intentionally leave writes to be done by server processes. The default is 2.0.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target PostgreSQL cluster.\n"
                },
                "deadlockTimeout": {
                    "type": "integer",
                    "description": "The amount of time, in milliseconds, to wait on a lock before checking to see if there is a deadlock condition.\n"
                },
                "defaultToastCompression": {
                    "type": "string",
                    "description": "Specifies the default TOAST compression method for values of compressible columns (the default is lz4). Supported values are: \u003cspan pulumi-lang-nodejs=\"`lz4`\" pulumi-lang-dotnet=\"`Lz4`\" pulumi-lang-go=\"`lz4`\" pulumi-lang-python=\"`lz4`\" pulumi-lang-yaml=\"`lz4`\" pulumi-lang-java=\"`lz4`\"\u003e`lz4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pglz`\" pulumi-lang-dotnet=\"`Pglz`\" pulumi-lang-go=\"`pglz`\" pulumi-lang-python=\"`pglz`\" pulumi-lang-yaml=\"`pglz`\" pulumi-lang-java=\"`pglz`\"\u003e`pglz`\u003c/span\u003e.\n"
                },
                "idleInTransactionSessionTimeout": {
                    "type": "integer",
                    "description": "Time out sessions with open transactions after this number of milliseconds\n"
                },
                "jit": {
                    "type": "boolean",
                    "description": "Activates, in a boolean, the system-wide use of Just-in-Time Compilation (JIT).\n"
                },
                "logAutovacuumMinDuration": {
                    "type": "integer",
                    "description": "Causes each action executed by autovacuum to be logged if it ran for at least the specified number of milliseconds. Setting this to zero logs all autovacuum actions. Minus-one (the default) disables logging autovacuum actions.\n"
                },
                "logErrorVerbosity": {
                    "type": "string",
                    "description": "Controls the amount of detail written in the server log for each message that is logged. Supported values are: `TERSE`, `DEFAULT`, `VERBOSE`.\n"
                },
                "logLinePrefix": {
                    "type": "string",
                    "description": "Selects one of the available log-formats. These can support popular log analyzers like pgbadger, pganalyze, etc. Supported values are: `pid=%p,user=%u,db=%d,app=%a,client=%h`, `%m [%p] %q[user=%u,db=%d,app=%a]`, `%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h`.\n"
                },
                "logMinDurationStatement": {
                    "type": "integer",
                    "description": "Log statements that take more than this number of milliseconds to run. If -1, disables.\n"
                },
                "maxFilesPerProcess": {
                    "type": "integer",
                    "description": "PostgreSQL maximum number of files that can be open per process.\n"
                },
                "maxLocksPerTransaction": {
                    "type": "integer",
                    "description": "PostgreSQL maximum locks per transaction. Once increased, this parameter cannot be lowered from its set value.\n"
                },
                "maxLogicalReplicationWorkers": {
                    "type": "integer",
                    "description": "PostgreSQL maximum logical replication workers (taken from the pool of max_parallel_workers).\n"
                },
                "maxParallelWorkers": {
                    "type": "integer",
                    "description": "Sets the maximum number of workers that the system can support for parallel queries.\n"
                },
                "maxParallelWorkersPerGather": {
                    "type": "integer",
                    "description": "Sets the maximum number of workers that can be started by a single Gather or Gather Merge node.\n"
                },
                "maxPredLocksPerTransaction": {
                    "type": "integer",
                    "description": "PostgreSQL maximum predicate locks per transaction.\n"
                },
                "maxPreparedTransactions": {
                    "type": "integer",
                    "description": "PostgreSQL maximum prepared transactions. Once increased, this parameter cannot be lowered from its set value.\n"
                },
                "maxReplicationSlots": {
                    "type": "integer",
                    "description": "PostgreSQL maximum replication slots.\n"
                },
                "maxStackDepth": {
                    "type": "integer",
                    "description": "Maximum depth of the stack in bytes.\n"
                },
                "maxStandbyArchiveDelay": {
                    "type": "integer",
                    "description": "Max standby archive delay in milliseconds.\n"
                },
                "maxStandbyStreamingDelay": {
                    "type": "integer",
                    "description": "Max standby streaming delay in milliseconds.\n"
                },
                "maxWalSenders": {
                    "type": "integer",
                    "description": "PostgreSQL maximum WAL senders. Once increased, this parameter cannot be lowered from its set value.\n"
                },
                "maxWorkerProcesses": {
                    "type": "integer",
                    "description": "Sets the maximum number of background processes that the system can support. Once increased, this parameter cannot be lowered from its set value.\n"
                },
                "pgPartmanBgwInterval": {
                    "type": "integer",
                    "description": "Sets the time interval to run pg_partman's scheduled tasks.\n"
                },
                "pgPartmanBgwRole": {
                    "type": "string",
                    "description": "Controls which role to use for pg_partman's scheduled background tasks. Must consist of alpha-numeric characters, dots, underscores, or dashes. May not start with dash or dot. Maximum of 64 characters.\n"
                },
                "pgStatStatementsTrack": {
                    "type": "string",
                    "description": "Controls which statements are counted. Specify 'top' to track top-level statements (those issued directly by clients), 'all' to also track nested statements (such as statements invoked within functions), or 'none' to disable statement statistics collection. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`top`\" pulumi-lang-dotnet=\"`Top`\" pulumi-lang-go=\"`top`\" pulumi-lang-python=\"`top`\" pulumi-lang-yaml=\"`top`\" pulumi-lang-java=\"`top`\"\u003e`top`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"
                },
                "pgbouncers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabasePostgresqlConfigPgbouncer:DatabasePostgresqlConfigPgbouncer"
                    },
                    "description": "PGBouncer connection pooling settings\n"
                },
                "sharedBuffersPercentage": {
                    "type": "number",
                    "description": "Percentage of total RAM that the database server uses for shared memory buffers. Valid range is 20-60 (float), which corresponds to 20% - 60%. This setting adjusts the\u003cspan pulumi-lang-nodejs=\" sharedBuffers \" pulumi-lang-dotnet=\" SharedBuffers \" pulumi-lang-go=\" sharedBuffers \" pulumi-lang-python=\" shared_buffers \" pulumi-lang-yaml=\" sharedBuffers \" pulumi-lang-java=\" sharedBuffers \"\u003e shared_buffers \u003c/span\u003econfiguration value.\n"
                },
                "tempFileLimit": {
                    "type": "integer",
                    "description": "PostgreSQL temporary file limit in KiB. If -1, sets to unlimited.\n"
                },
                "timescaledbs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabasePostgresqlConfigTimescaledb:DatabasePostgresqlConfigTimescaledb"
                    },
                    "description": "TimescaleDB extension configuration values\n"
                },
                "timezone": {
                    "type": "string",
                    "description": "PostgreSQL service timezone\n"
                },
                "trackActivityQuerySize": {
                    "type": "integer",
                    "description": "Specifies the number of bytes reserved to track the currently executing command for each active session.\n"
                },
                "trackCommitTimestamp": {
                    "type": "string",
                    "description": "Record commit time of transactions. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e.\n"
                },
                "trackFunctions": {
                    "type": "string",
                    "description": "Enables tracking of function call counts and time used. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"
                },
                "trackIoTiming": {
                    "type": "string",
                    "description": "Enables timing of database I/O calls. This parameter is off by default, because it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e.\n"
                },
                "walSenderTimeout": {
                    "type": "integer",
                    "description": "Terminate replication connections that are inactive for longer than this amount of time, in milliseconds. Setting this value to zero disables the timeout. Must be either 0 or between 5000 and 10800000.\n"
                },
                "walWriterDelay": {
                    "type": "integer",
                    "description": "WAL flush interval in milliseconds. Note that setting this value to lower than the default 200ms may negatively impact performance\n"
                },
                "workMem": {
                    "type": "integer",
                    "description": "The maximum amount of memory, in MB, used by a query operation (such as a sort or hash table) before writing to temporary disk files. Default is 1MB + 0.075% of total RAM (up to 32MB).\n"
                }
            },
            "required": [
                "autovacuumAnalyzeScaleFactor",
                "autovacuumAnalyzeThreshold",
                "autovacuumFreezeMaxAge",
                "autovacuumMaxWorkers",
                "autovacuumNaptime",
                "autovacuumVacuumCostDelay",
                "autovacuumVacuumCostLimit",
                "autovacuumVacuumScaleFactor",
                "autovacuumVacuumThreshold",
                "backupHour",
                "backupMinute",
                "bgwriterDelay",
                "bgwriterFlushAfter",
                "bgwriterLruMaxpages",
                "bgwriterLruMultiplier",
                "clusterId",
                "deadlockTimeout",
                "defaultToastCompression",
                "idleInTransactionSessionTimeout",
                "jit",
                "logAutovacuumMinDuration",
                "logErrorVerbosity",
                "logLinePrefix",
                "logMinDurationStatement",
                "maxFilesPerProcess",
                "maxLocksPerTransaction",
                "maxLogicalReplicationWorkers",
                "maxParallelWorkers",
                "maxParallelWorkersPerGather",
                "maxPredLocksPerTransaction",
                "maxPreparedTransactions",
                "maxReplicationSlots",
                "maxStackDepth",
                "maxStandbyArchiveDelay",
                "maxStandbyStreamingDelay",
                "maxWalSenders",
                "maxWorkerProcesses",
                "pgPartmanBgwInterval",
                "pgPartmanBgwRole",
                "pgStatStatementsTrack",
                "pgbouncers",
                "sharedBuffersPercentage",
                "tempFileLimit",
                "timescaledbs",
                "timezone",
                "trackActivityQuerySize",
                "trackCommitTimestamp",
                "trackFunctions",
                "trackIoTiming",
                "walSenderTimeout",
                "walWriterDelay",
                "workMem"
            ],
            "inputProperties": {
                "autovacuumAnalyzeScaleFactor": {
                    "type": "number",
                    "description": "Specifies a fraction, in a decimal value, of the table size to add to\u003cspan pulumi-lang-nodejs=\" autovacuumAnalyzeThreshold \" pulumi-lang-dotnet=\" AutovacuumAnalyzeThreshold \" pulumi-lang-go=\" autovacuumAnalyzeThreshold \" pulumi-lang-python=\" autovacuum_analyze_threshold \" pulumi-lang-yaml=\" autovacuumAnalyzeThreshold \" pulumi-lang-java=\" autovacuumAnalyzeThreshold \"\u003e autovacuum_analyze_threshold \u003c/span\u003ewhen deciding whether to trigger an ANALYZE. The default is 0.2 (20% of table size).\n"
                },
                "autovacuumAnalyzeThreshold": {
                    "type": "integer",
                    "description": "Specifies the minimum number of inserted, updated, or deleted tuples needed to trigger an ANALYZE in any one table. The default is 50 tuples.\n"
                },
                "autovacuumFreezeMaxAge": {
                    "type": "integer",
                    "description": "Specifies the maximum age (in transactions) that a table's pg_class.relfrozenxid field can attain before a VACUUM operation is forced to prevent transaction ID wraparound within the table. Note that the system will launch autovacuum processes to prevent wraparound even when autovacuum is otherwise disabled. This parameter will cause the server to be restarted.\n"
                },
                "autovacuumMaxWorkers": {
                    "type": "integer",
                    "description": "Specifies the maximum number of autovacuum processes (other than the autovacuum launcher) that may be running at any one time. The default is three. This parameter can only be set at server start.\n"
                },
                "autovacuumNaptime": {
                    "type": "integer",
                    "description": "Specifies the minimum delay, in seconds, between autovacuum runs on any given database. The default is one minute.\n"
                },
                "autovacuumVacuumCostDelay": {
                    "type": "integer",
                    "description": "Specifies the cost delay value, in milliseconds, that will be used in automatic VACUUM operations. If -1, uses the regular\u003cspan pulumi-lang-nodejs=\" vacuumCostDelay \" pulumi-lang-dotnet=\" VacuumCostDelay \" pulumi-lang-go=\" vacuumCostDelay \" pulumi-lang-python=\" vacuum_cost_delay \" pulumi-lang-yaml=\" vacuumCostDelay \" pulumi-lang-java=\" vacuumCostDelay \"\u003e vacuum_cost_delay \u003c/span\u003evalue, which is 20 milliseconds.\n"
                },
                "autovacuumVacuumCostLimit": {
                    "type": "integer",
                    "description": "Specifies the cost limit value that will be used in automatic VACUUM operations. If -1 is specified (which is the default), the regular\u003cspan pulumi-lang-nodejs=\" vacuumCostLimit \" pulumi-lang-dotnet=\" VacuumCostLimit \" pulumi-lang-go=\" vacuumCostLimit \" pulumi-lang-python=\" vacuum_cost_limit \" pulumi-lang-yaml=\" vacuumCostLimit \" pulumi-lang-java=\" vacuumCostLimit \"\u003e vacuum_cost_limit \u003c/span\u003evalue will be used.\n"
                },
                "autovacuumVacuumScaleFactor": {
                    "type": "number",
                    "description": "Specifies a fraction, in a decimal value, of the table size to add to\u003cspan pulumi-lang-nodejs=\" autovacuumVacuumThreshold \" pulumi-lang-dotnet=\" AutovacuumVacuumThreshold \" pulumi-lang-go=\" autovacuumVacuumThreshold \" pulumi-lang-python=\" autovacuum_vacuum_threshold \" pulumi-lang-yaml=\" autovacuumVacuumThreshold \" pulumi-lang-java=\" autovacuumVacuumThreshold \"\u003e autovacuum_vacuum_threshold \u003c/span\u003ewhen deciding whether to trigger a VACUUM. The default is 0.2 (20% of table size).\n"
                },
                "autovacuumVacuumThreshold": {
                    "type": "integer",
                    "description": "Specifies the minimum number of updated or deleted tuples needed to trigger a VACUUM in any one table. The default is 50 tuples.\n"
                },
                "backupHour": {
                    "type": "integer",
                    "description": "The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                },
                "backupMinute": {
                    "type": "integer",
                    "description": "The minute of the backup hour when backup for the service starts. New backup is only started if previous backup has already completed.\n"
                },
                "bgwriterDelay": {
                    "type": "integer",
                    "description": "Specifies the delay, in milliseconds, between activity rounds for the background writer. Default is 200 ms.\n"
                },
                "bgwriterFlushAfter": {
                    "type": "integer",
                    "description": "The amount of kilobytes that need to be written by the background writer before attempting to force the OS to issue these writes to underlying storage. Specified in kilobytes, default is 512. Setting of 0 disables forced writeback.\n"
                },
                "bgwriterLruMaxpages": {
                    "type": "integer",
                    "description": "The maximum number of buffers that the background writer can write. Setting this to zero disables background writing. Default is 100.\n"
                },
                "bgwriterLruMultiplier": {
                    "type": "number",
                    "description": "The average recent need for new buffers is multiplied by\u003cspan pulumi-lang-nodejs=\" bgwriterLruMultiplier \" pulumi-lang-dotnet=\" BgwriterLruMultiplier \" pulumi-lang-go=\" bgwriterLruMultiplier \" pulumi-lang-python=\" bgwriter_lru_multiplier \" pulumi-lang-yaml=\" bgwriterLruMultiplier \" pulumi-lang-java=\" bgwriterLruMultiplier \"\u003e bgwriter_lru_multiplier \u003c/span\u003eto arrive at an estimate of the number that will be needed during the next round, (up to bgwriter_lru_maxpages). 1.0 represents a “just in time” policy of writing exactly the number of buffers predicted to be needed. Larger values provide some cushion against spikes in demand, while smaller values intentionally leave writes to be done by server processes. The default is 2.0.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target PostgreSQL cluster.\n",
                    "willReplaceOnChanges": true
                },
                "deadlockTimeout": {
                    "type": "integer",
                    "description": "The amount of time, in milliseconds, to wait on a lock before checking to see if there is a deadlock condition.\n"
                },
                "defaultToastCompression": {
                    "type": "string",
                    "description": "Specifies the default TOAST compression method for values of compressible columns (the default is lz4). Supported values are: \u003cspan pulumi-lang-nodejs=\"`lz4`\" pulumi-lang-dotnet=\"`Lz4`\" pulumi-lang-go=\"`lz4`\" pulumi-lang-python=\"`lz4`\" pulumi-lang-yaml=\"`lz4`\" pulumi-lang-java=\"`lz4`\"\u003e`lz4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pglz`\" pulumi-lang-dotnet=\"`Pglz`\" pulumi-lang-go=\"`pglz`\" pulumi-lang-python=\"`pglz`\" pulumi-lang-yaml=\"`pglz`\" pulumi-lang-java=\"`pglz`\"\u003e`pglz`\u003c/span\u003e.\n"
                },
                "idleInTransactionSessionTimeout": {
                    "type": "integer",
                    "description": "Time out sessions with open transactions after this number of milliseconds\n"
                },
                "jit": {
                    "type": "boolean",
                    "description": "Activates, in a boolean, the system-wide use of Just-in-Time Compilation (JIT).\n"
                },
                "logAutovacuumMinDuration": {
                    "type": "integer",
                    "description": "Causes each action executed by autovacuum to be logged if it ran for at least the specified number of milliseconds. Setting this to zero logs all autovacuum actions. Minus-one (the default) disables logging autovacuum actions.\n"
                },
                "logErrorVerbosity": {
                    "type": "string",
                    "description": "Controls the amount of detail written in the server log for each message that is logged. Supported values are: `TERSE`, `DEFAULT`, `VERBOSE`.\n"
                },
                "logLinePrefix": {
                    "type": "string",
                    "description": "Selects one of the available log-formats. These can support popular log analyzers like pgbadger, pganalyze, etc. Supported values are: `pid=%p,user=%u,db=%d,app=%a,client=%h`, `%m [%p] %q[user=%u,db=%d,app=%a]`, `%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h`.\n"
                },
                "logMinDurationStatement": {
                    "type": "integer",
                    "description": "Log statements that take more than this number of milliseconds to run. If -1, disables.\n"
                },
                "maxFilesPerProcess": {
                    "type": "integer",
                    "description": "PostgreSQL maximum number of files that can be open per process.\n"
                },
                "maxLocksPerTransaction": {
                    "type": "integer",
                    "description": "PostgreSQL maximum locks per transaction. Once increased, this parameter cannot be lowered from its set value.\n"
                },
                "maxLogicalReplicationWorkers": {
                    "type": "integer",
                    "description": "PostgreSQL maximum logical replication workers (taken from the pool of max_parallel_workers).\n"
                },
                "maxParallelWorkers": {
                    "type": "integer",
                    "description": "Sets the maximum number of workers that the system can support for parallel queries.\n"
                },
                "maxParallelWorkersPerGather": {
                    "type": "integer",
                    "description": "Sets the maximum number of workers that can be started by a single Gather or Gather Merge node.\n"
                },
                "maxPredLocksPerTransaction": {
                    "type": "integer",
                    "description": "PostgreSQL maximum predicate locks per transaction.\n"
                },
                "maxPreparedTransactions": {
                    "type": "integer",
                    "description": "PostgreSQL maximum prepared transactions. Once increased, this parameter cannot be lowered from its set value.\n"
                },
                "maxReplicationSlots": {
                    "type": "integer",
                    "description": "PostgreSQL maximum replication slots.\n"
                },
                "maxStackDepth": {
                    "type": "integer",
                    "description": "Maximum depth of the stack in bytes.\n"
                },
                "maxStandbyArchiveDelay": {
                    "type": "integer",
                    "description": "Max standby archive delay in milliseconds.\n"
                },
                "maxStandbyStreamingDelay": {
                    "type": "integer",
                    "description": "Max standby streaming delay in milliseconds.\n"
                },
                "maxWalSenders": {
                    "type": "integer",
                    "description": "PostgreSQL maximum WAL senders. Once increased, this parameter cannot be lowered from its set value.\n"
                },
                "maxWorkerProcesses": {
                    "type": "integer",
                    "description": "Sets the maximum number of background processes that the system can support. Once increased, this parameter cannot be lowered from its set value.\n"
                },
                "pgPartmanBgwInterval": {
                    "type": "integer",
                    "description": "Sets the time interval to run pg_partman's scheduled tasks.\n"
                },
                "pgPartmanBgwRole": {
                    "type": "string",
                    "description": "Controls which role to use for pg_partman's scheduled background tasks. Must consist of alpha-numeric characters, dots, underscores, or dashes. May not start with dash or dot. Maximum of 64 characters.\n"
                },
                "pgStatStatementsTrack": {
                    "type": "string",
                    "description": "Controls which statements are counted. Specify 'top' to track top-level statements (those issued directly by clients), 'all' to also track nested statements (such as statements invoked within functions), or 'none' to disable statement statistics collection. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`top`\" pulumi-lang-dotnet=\"`Top`\" pulumi-lang-go=\"`top`\" pulumi-lang-python=\"`top`\" pulumi-lang-yaml=\"`top`\" pulumi-lang-java=\"`top`\"\u003e`top`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"
                },
                "pgbouncers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabasePostgresqlConfigPgbouncer:DatabasePostgresqlConfigPgbouncer"
                    },
                    "description": "PGBouncer connection pooling settings\n"
                },
                "sharedBuffersPercentage": {
                    "type": "number",
                    "description": "Percentage of total RAM that the database server uses for shared memory buffers. Valid range is 20-60 (float), which corresponds to 20% - 60%. This setting adjusts the\u003cspan pulumi-lang-nodejs=\" sharedBuffers \" pulumi-lang-dotnet=\" SharedBuffers \" pulumi-lang-go=\" sharedBuffers \" pulumi-lang-python=\" shared_buffers \" pulumi-lang-yaml=\" sharedBuffers \" pulumi-lang-java=\" sharedBuffers \"\u003e shared_buffers \u003c/span\u003econfiguration value.\n"
                },
                "tempFileLimit": {
                    "type": "integer",
                    "description": "PostgreSQL temporary file limit in KiB. If -1, sets to unlimited.\n"
                },
                "timescaledbs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabasePostgresqlConfigTimescaledb:DatabasePostgresqlConfigTimescaledb"
                    },
                    "description": "TimescaleDB extension configuration values\n"
                },
                "timezone": {
                    "type": "string",
                    "description": "PostgreSQL service timezone\n"
                },
                "trackActivityQuerySize": {
                    "type": "integer",
                    "description": "Specifies the number of bytes reserved to track the currently executing command for each active session.\n"
                },
                "trackCommitTimestamp": {
                    "type": "string",
                    "description": "Record commit time of transactions. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e.\n"
                },
                "trackFunctions": {
                    "type": "string",
                    "description": "Enables tracking of function call counts and time used. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"
                },
                "trackIoTiming": {
                    "type": "string",
                    "description": "Enables timing of database I/O calls. This parameter is off by default, because it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e.\n"
                },
                "walSenderTimeout": {
                    "type": "integer",
                    "description": "Terminate replication connections that are inactive for longer than this amount of time, in milliseconds. Setting this value to zero disables the timeout. Must be either 0 or between 5000 and 10800000.\n"
                },
                "walWriterDelay": {
                    "type": "integer",
                    "description": "WAL flush interval in milliseconds. Note that setting this value to lower than the default 200ms may negatively impact performance\n"
                },
                "workMem": {
                    "type": "integer",
                    "description": "The maximum amount of memory, in MB, used by a query operation (such as a sort or hash table) before writing to temporary disk files. Default is 1MB + 0.075% of total RAM (up to 32MB).\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabasePostgresqlConfig resources.\n",
                "properties": {
                    "autovacuumAnalyzeScaleFactor": {
                        "type": "number",
                        "description": "Specifies a fraction, in a decimal value, of the table size to add to\u003cspan pulumi-lang-nodejs=\" autovacuumAnalyzeThreshold \" pulumi-lang-dotnet=\" AutovacuumAnalyzeThreshold \" pulumi-lang-go=\" autovacuumAnalyzeThreshold \" pulumi-lang-python=\" autovacuum_analyze_threshold \" pulumi-lang-yaml=\" autovacuumAnalyzeThreshold \" pulumi-lang-java=\" autovacuumAnalyzeThreshold \"\u003e autovacuum_analyze_threshold \u003c/span\u003ewhen deciding whether to trigger an ANALYZE. The default is 0.2 (20% of table size).\n"
                    },
                    "autovacuumAnalyzeThreshold": {
                        "type": "integer",
                        "description": "Specifies the minimum number of inserted, updated, or deleted tuples needed to trigger an ANALYZE in any one table. The default is 50 tuples.\n"
                    },
                    "autovacuumFreezeMaxAge": {
                        "type": "integer",
                        "description": "Specifies the maximum age (in transactions) that a table's pg_class.relfrozenxid field can attain before a VACUUM operation is forced to prevent transaction ID wraparound within the table. Note that the system will launch autovacuum processes to prevent wraparound even when autovacuum is otherwise disabled. This parameter will cause the server to be restarted.\n"
                    },
                    "autovacuumMaxWorkers": {
                        "type": "integer",
                        "description": "Specifies the maximum number of autovacuum processes (other than the autovacuum launcher) that may be running at any one time. The default is three. This parameter can only be set at server start.\n"
                    },
                    "autovacuumNaptime": {
                        "type": "integer",
                        "description": "Specifies the minimum delay, in seconds, between autovacuum runs on any given database. The default is one minute.\n"
                    },
                    "autovacuumVacuumCostDelay": {
                        "type": "integer",
                        "description": "Specifies the cost delay value, in milliseconds, that will be used in automatic VACUUM operations. If -1, uses the regular\u003cspan pulumi-lang-nodejs=\" vacuumCostDelay \" pulumi-lang-dotnet=\" VacuumCostDelay \" pulumi-lang-go=\" vacuumCostDelay \" pulumi-lang-python=\" vacuum_cost_delay \" pulumi-lang-yaml=\" vacuumCostDelay \" pulumi-lang-java=\" vacuumCostDelay \"\u003e vacuum_cost_delay \u003c/span\u003evalue, which is 20 milliseconds.\n"
                    },
                    "autovacuumVacuumCostLimit": {
                        "type": "integer",
                        "description": "Specifies the cost limit value that will be used in automatic VACUUM operations. If -1 is specified (which is the default), the regular\u003cspan pulumi-lang-nodejs=\" vacuumCostLimit \" pulumi-lang-dotnet=\" VacuumCostLimit \" pulumi-lang-go=\" vacuumCostLimit \" pulumi-lang-python=\" vacuum_cost_limit \" pulumi-lang-yaml=\" vacuumCostLimit \" pulumi-lang-java=\" vacuumCostLimit \"\u003e vacuum_cost_limit \u003c/span\u003evalue will be used.\n"
                    },
                    "autovacuumVacuumScaleFactor": {
                        "type": "number",
                        "description": "Specifies a fraction, in a decimal value, of the table size to add to\u003cspan pulumi-lang-nodejs=\" autovacuumVacuumThreshold \" pulumi-lang-dotnet=\" AutovacuumVacuumThreshold \" pulumi-lang-go=\" autovacuumVacuumThreshold \" pulumi-lang-python=\" autovacuum_vacuum_threshold \" pulumi-lang-yaml=\" autovacuumVacuumThreshold \" pulumi-lang-java=\" autovacuumVacuumThreshold \"\u003e autovacuum_vacuum_threshold \u003c/span\u003ewhen deciding whether to trigger a VACUUM. The default is 0.2 (20% of table size).\n"
                    },
                    "autovacuumVacuumThreshold": {
                        "type": "integer",
                        "description": "Specifies the minimum number of updated or deleted tuples needed to trigger a VACUUM in any one table. The default is 50 tuples.\n"
                    },
                    "backupHour": {
                        "type": "integer",
                        "description": "The hour of day (in UTC) when backup for the service starts. New backup only starts if previous backup has already completed.\n"
                    },
                    "backupMinute": {
                        "type": "integer",
                        "description": "The minute of the backup hour when backup for the service starts. New backup is only started if previous backup has already completed.\n"
                    },
                    "bgwriterDelay": {
                        "type": "integer",
                        "description": "Specifies the delay, in milliseconds, between activity rounds for the background writer. Default is 200 ms.\n"
                    },
                    "bgwriterFlushAfter": {
                        "type": "integer",
                        "description": "The amount of kilobytes that need to be written by the background writer before attempting to force the OS to issue these writes to underlying storage. Specified in kilobytes, default is 512. Setting of 0 disables forced writeback.\n"
                    },
                    "bgwriterLruMaxpages": {
                        "type": "integer",
                        "description": "The maximum number of buffers that the background writer can write. Setting this to zero disables background writing. Default is 100.\n"
                    },
                    "bgwriterLruMultiplier": {
                        "type": "number",
                        "description": "The average recent need for new buffers is multiplied by\u003cspan pulumi-lang-nodejs=\" bgwriterLruMultiplier \" pulumi-lang-dotnet=\" BgwriterLruMultiplier \" pulumi-lang-go=\" bgwriterLruMultiplier \" pulumi-lang-python=\" bgwriter_lru_multiplier \" pulumi-lang-yaml=\" bgwriterLruMultiplier \" pulumi-lang-java=\" bgwriterLruMultiplier \"\u003e bgwriter_lru_multiplier \u003c/span\u003eto arrive at an estimate of the number that will be needed during the next round, (up to bgwriter_lru_maxpages). 1.0 represents a “just in time” policy of writing exactly the number of buffers predicted to be needed. Larger values provide some cushion against spikes in demand, while smaller values intentionally leave writes to be done by server processes. The default is 2.0.\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target PostgreSQL cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "deadlockTimeout": {
                        "type": "integer",
                        "description": "The amount of time, in milliseconds, to wait on a lock before checking to see if there is a deadlock condition.\n"
                    },
                    "defaultToastCompression": {
                        "type": "string",
                        "description": "Specifies the default TOAST compression method for values of compressible columns (the default is lz4). Supported values are: \u003cspan pulumi-lang-nodejs=\"`lz4`\" pulumi-lang-dotnet=\"`Lz4`\" pulumi-lang-go=\"`lz4`\" pulumi-lang-python=\"`lz4`\" pulumi-lang-yaml=\"`lz4`\" pulumi-lang-java=\"`lz4`\"\u003e`lz4`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pglz`\" pulumi-lang-dotnet=\"`Pglz`\" pulumi-lang-go=\"`pglz`\" pulumi-lang-python=\"`pglz`\" pulumi-lang-yaml=\"`pglz`\" pulumi-lang-java=\"`pglz`\"\u003e`pglz`\u003c/span\u003e.\n"
                    },
                    "idleInTransactionSessionTimeout": {
                        "type": "integer",
                        "description": "Time out sessions with open transactions after this number of milliseconds\n"
                    },
                    "jit": {
                        "type": "boolean",
                        "description": "Activates, in a boolean, the system-wide use of Just-in-Time Compilation (JIT).\n"
                    },
                    "logAutovacuumMinDuration": {
                        "type": "integer",
                        "description": "Causes each action executed by autovacuum to be logged if it ran for at least the specified number of milliseconds. Setting this to zero logs all autovacuum actions. Minus-one (the default) disables logging autovacuum actions.\n"
                    },
                    "logErrorVerbosity": {
                        "type": "string",
                        "description": "Controls the amount of detail written in the server log for each message that is logged. Supported values are: `TERSE`, `DEFAULT`, `VERBOSE`.\n"
                    },
                    "logLinePrefix": {
                        "type": "string",
                        "description": "Selects one of the available log-formats. These can support popular log analyzers like pgbadger, pganalyze, etc. Supported values are: `pid=%p,user=%u,db=%d,app=%a,client=%h`, `%m [%p] %q[user=%u,db=%d,app=%a]`, `%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h`.\n"
                    },
                    "logMinDurationStatement": {
                        "type": "integer",
                        "description": "Log statements that take more than this number of milliseconds to run. If -1, disables.\n"
                    },
                    "maxFilesPerProcess": {
                        "type": "integer",
                        "description": "PostgreSQL maximum number of files that can be open per process.\n"
                    },
                    "maxLocksPerTransaction": {
                        "type": "integer",
                        "description": "PostgreSQL maximum locks per transaction. Once increased, this parameter cannot be lowered from its set value.\n"
                    },
                    "maxLogicalReplicationWorkers": {
                        "type": "integer",
                        "description": "PostgreSQL maximum logical replication workers (taken from the pool of max_parallel_workers).\n"
                    },
                    "maxParallelWorkers": {
                        "type": "integer",
                        "description": "Sets the maximum number of workers that the system can support for parallel queries.\n"
                    },
                    "maxParallelWorkersPerGather": {
                        "type": "integer",
                        "description": "Sets the maximum number of workers that can be started by a single Gather or Gather Merge node.\n"
                    },
                    "maxPredLocksPerTransaction": {
                        "type": "integer",
                        "description": "PostgreSQL maximum predicate locks per transaction.\n"
                    },
                    "maxPreparedTransactions": {
                        "type": "integer",
                        "description": "PostgreSQL maximum prepared transactions. Once increased, this parameter cannot be lowered from its set value.\n"
                    },
                    "maxReplicationSlots": {
                        "type": "integer",
                        "description": "PostgreSQL maximum replication slots.\n"
                    },
                    "maxStackDepth": {
                        "type": "integer",
                        "description": "Maximum depth of the stack in bytes.\n"
                    },
                    "maxStandbyArchiveDelay": {
                        "type": "integer",
                        "description": "Max standby archive delay in milliseconds.\n"
                    },
                    "maxStandbyStreamingDelay": {
                        "type": "integer",
                        "description": "Max standby streaming delay in milliseconds.\n"
                    },
                    "maxWalSenders": {
                        "type": "integer",
                        "description": "PostgreSQL maximum WAL senders. Once increased, this parameter cannot be lowered from its set value.\n"
                    },
                    "maxWorkerProcesses": {
                        "type": "integer",
                        "description": "Sets the maximum number of background processes that the system can support. Once increased, this parameter cannot be lowered from its set value.\n"
                    },
                    "pgPartmanBgwInterval": {
                        "type": "integer",
                        "description": "Sets the time interval to run pg_partman's scheduled tasks.\n"
                    },
                    "pgPartmanBgwRole": {
                        "type": "string",
                        "description": "Controls which role to use for pg_partman's scheduled background tasks. Must consist of alpha-numeric characters, dots, underscores, or dashes. May not start with dash or dot. Maximum of 64 characters.\n"
                    },
                    "pgStatStatementsTrack": {
                        "type": "string",
                        "description": "Controls which statements are counted. Specify 'top' to track top-level statements (those issued directly by clients), 'all' to also track nested statements (such as statements invoked within functions), or 'none' to disable statement statistics collection. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`top`\" pulumi-lang-dotnet=\"`Top`\" pulumi-lang-go=\"`top`\" pulumi-lang-python=\"`top`\" pulumi-lang-yaml=\"`top`\" pulumi-lang-java=\"`top`\"\u003e`top`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"
                    },
                    "pgbouncers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/DatabasePostgresqlConfigPgbouncer:DatabasePostgresqlConfigPgbouncer"
                        },
                        "description": "PGBouncer connection pooling settings\n"
                    },
                    "sharedBuffersPercentage": {
                        "type": "number",
                        "description": "Percentage of total RAM that the database server uses for shared memory buffers. Valid range is 20-60 (float), which corresponds to 20% - 60%. This setting adjusts the\u003cspan pulumi-lang-nodejs=\" sharedBuffers \" pulumi-lang-dotnet=\" SharedBuffers \" pulumi-lang-go=\" sharedBuffers \" pulumi-lang-python=\" shared_buffers \" pulumi-lang-yaml=\" sharedBuffers \" pulumi-lang-java=\" sharedBuffers \"\u003e shared_buffers \u003c/span\u003econfiguration value.\n"
                    },
                    "tempFileLimit": {
                        "type": "integer",
                        "description": "PostgreSQL temporary file limit in KiB. If -1, sets to unlimited.\n"
                    },
                    "timescaledbs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/DatabasePostgresqlConfigTimescaledb:DatabasePostgresqlConfigTimescaledb"
                        },
                        "description": "TimescaleDB extension configuration values\n"
                    },
                    "timezone": {
                        "type": "string",
                        "description": "PostgreSQL service timezone\n"
                    },
                    "trackActivityQuerySize": {
                        "type": "integer",
                        "description": "Specifies the number of bytes reserved to track the currently executing command for each active session.\n"
                    },
                    "trackCommitTimestamp": {
                        "type": "string",
                        "description": "Record commit time of transactions. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e.\n"
                    },
                    "trackFunctions": {
                        "type": "string",
                        "description": "Enables tracking of function call counts and time used. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`pl`\" pulumi-lang-dotnet=\"`Pl`\" pulumi-lang-go=\"`pl`\" pulumi-lang-python=\"`pl`\" pulumi-lang-yaml=\"`pl`\" pulumi-lang-java=\"`pl`\"\u003e`pl`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"
                    },
                    "trackIoTiming": {
                        "type": "string",
                        "description": "Enables timing of database I/O calls. This parameter is off by default, because it will repeatedly query the operating system for the current time, which may cause significant overhead on some platforms. The default value is top. Supported values are: \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`on`\" pulumi-lang-dotnet=\"`On`\" pulumi-lang-go=\"`on`\" pulumi-lang-python=\"`on`\" pulumi-lang-yaml=\"`on`\" pulumi-lang-java=\"`on`\"\u003e`on`\u003c/span\u003e.\n"
                    },
                    "walSenderTimeout": {
                        "type": "integer",
                        "description": "Terminate replication connections that are inactive for longer than this amount of time, in milliseconds. Setting this value to zero disables the timeout. Must be either 0 or between 5000 and 10800000.\n"
                    },
                    "walWriterDelay": {
                        "type": "integer",
                        "description": "WAL flush interval in milliseconds. Note that setting this value to lower than the default 200ms may negatively impact performance\n"
                    },
                    "workMem": {
                        "type": "integer",
                        "description": "The maximum amount of memory, in MB, used by a query operation (such as a sort or hash table) before writing to temporary disk files. Default is 1MB + 0.075% of total RAM (up to 32MB).\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseRedisConfig:DatabaseRedisConfig": {
            "description": "Provides a virtual resource that can be used to change advanced configuration\noptions for a DigitalOcean managed Redis database cluster.\n\n\u003e **Note** DigitalOcean managed Redis cluster product is discontinued as of 30 June 2025 and is replaced by the Managed Valkey product. Use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.DatabaseValkeyConfig`\" pulumi-lang-dotnet=\"`digitalocean.DatabaseValkeyConfig`\" pulumi-lang-go=\"`DatabaseValkeyConfig`\" pulumi-lang-python=\"`DatabaseValkeyConfig`\" pulumi-lang-yaml=\"`digitalocean.DatabaseValkeyConfig`\" pulumi-lang-java=\"`digitalocean.DatabaseValkeyConfig`\"\u003e`digitalocean.DatabaseValkeyConfig`\u003c/span\u003e resource instead of \u003cspan pulumi-lang-nodejs=\"`digitalocean.DatabaseRedisConfig`\" pulumi-lang-dotnet=\"`digitalocean.DatabaseRedisConfig`\" pulumi-lang-go=\"`DatabaseRedisConfig`\" pulumi-lang-python=\"`DatabaseRedisConfig`\" pulumi-lang-yaml=\"`digitalocean.DatabaseRedisConfig`\" pulumi-lang-java=\"`digitalocean.DatabaseRedisConfig`\"\u003e`digitalocean.DatabaseRedisConfig`\u003c/span\u003e\n\n\u003e **Note** Redis configurations are only removed from state when destroyed. The remote configuration is not unset.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleDatabaseCluster = new digitalocean.DatabaseCluster(\"example\", {\n    name: \"example-redis-cluster\",\n    engine: \"redis\",\n    version: \"7\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst example = new digitalocean.DatabaseRedisConfig(\"example\", {\n    clusterId: exampleDatabaseCluster.id,\n    maxmemoryPolicy: \"allkeys-lru\",\n    notifyKeyspaceEvents: \"KEA\",\n    timeout: 90,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_database_cluster = digitalocean.DatabaseCluster(\"example\",\n    name=\"example-redis-cluster\",\n    engine=\"redis\",\n    version=\"7\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nexample = digitalocean.DatabaseRedisConfig(\"example\",\n    cluster_id=example_database_cluster.id,\n    maxmemory_policy=\"allkeys-lru\",\n    notify_keyspace_events=\"KEA\",\n    timeout=90)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleDatabaseCluster = new DigitalOcean.DatabaseCluster(\"example\", new()\n    {\n        Name = \"example-redis-cluster\",\n        Engine = \"redis\",\n        Version = \"7\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var example = new DigitalOcean.DatabaseRedisConfig(\"example\", new()\n    {\n        ClusterId = exampleDatabaseCluster.Id,\n        MaxmemoryPolicy = \"allkeys-lru\",\n        NotifyKeyspaceEvents = \"KEA\",\n        Timeout = 90,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleDatabaseCluster, err := digitalocean.NewDatabaseCluster(ctx, \"example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-redis-cluster\"),\n\t\t\tEngine:    pulumi.String(\"redis\"),\n\t\t\tVersion:   pulumi.String(\"7\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseRedisConfig(ctx, \"example\", \u0026digitalocean.DatabaseRedisConfigArgs{\n\t\t\tClusterId:            exampleDatabaseCluster.ID(),\n\t\t\tMaxmemoryPolicy:      pulumi.String(\"allkeys-lru\"),\n\t\t\tNotifyKeyspaceEvents: pulumi.String(\"KEA\"),\n\t\t\tTimeout:              pulumi.Int(90),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseRedisConfig;\nimport com.pulumi.digitalocean.DatabaseRedisConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleDatabaseCluster = new DatabaseCluster(\"exampleDatabaseCluster\", DatabaseClusterArgs.builder()\n            .name(\"example-redis-cluster\")\n            .engine(\"redis\")\n            .version(\"7\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var example = new DatabaseRedisConfig(\"example\", DatabaseRedisConfigArgs.builder()\n            .clusterId(exampleDatabaseCluster.id())\n            .maxmemoryPolicy(\"allkeys-lru\")\n            .notifyKeyspaceEvents(\"KEA\")\n            .timeout(90)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabaseRedisConfig\n    properties:\n      clusterId: ${exampleDatabaseCluster.id}\n      maxmemoryPolicy: allkeys-lru\n      notifyKeyspaceEvents: KEA\n      timeout: 90\n  exampleDatabaseCluster:\n    type: digitalocean:DatabaseCluster\n    name: example\n    properties:\n      name: example-redis-cluster\n      engine: redis\n      version: '7'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Redis database cluster's configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e the parent cluster, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseRedisConfig:DatabaseRedisConfig example 245bcfd0-7f31-4ce6-a2bc-475a116cca97\n```\n\n",
            "properties": {
                "aclChannelsDefault": {
                    "type": "string",
                    "description": "Determines default pub/sub channels' ACL for new users if an ACL is not supplied. When this option is not defined, \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e is assumed to keep backward compatibility. This option doesn't affect Redis' `acl-pubsub-default` configuration. Supported values are: \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`resetchannels`\" pulumi-lang-dotnet=\"`Resetchannels`\" pulumi-lang-go=\"`resetchannels`\" pulumi-lang-python=\"`resetchannels`\" pulumi-lang-yaml=\"`resetchannels`\" pulumi-lang-java=\"`resetchannels`\"\u003e`resetchannels`\u003c/span\u003e\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Redis cluster.\n"
                },
                "ioThreads": {
                    "type": "integer",
                    "description": "The Redis IO thread count.\n"
                },
                "lfuDecayTime": {
                    "type": "integer",
                    "description": "The LFU maxmemory policy counter decay time in minutes.\n"
                },
                "lfuLogFactor": {
                    "type": "integer",
                    "description": "The counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory policies.\n"
                },
                "maxmemoryPolicy": {
                    "type": "string",
                    "description": "A string specifying the desired eviction policy for the Redis cluster.Supported values are: \u003cspan pulumi-lang-nodejs=\"`noeviction`\" pulumi-lang-dotnet=\"`Noeviction`\" pulumi-lang-go=\"`noeviction`\" pulumi-lang-python=\"`noeviction`\" pulumi-lang-yaml=\"`noeviction`\" pulumi-lang-java=\"`noeviction`\"\u003e`noeviction`\u003c/span\u003e, `allkeys-lru`, `allkeys-random`, `volatile-lru`, `volatile-random`, `volatile-ttl`\n"
                },
                "notifyKeyspaceEvents": {
                    "type": "string",
                    "description": "The `notify-keyspace-events` option. Requires at least `K` or `E`.\n"
                },
                "numberOfDatabases": {
                    "type": "integer",
                    "description": "The number of Redis databases. Changing this will cause a restart of Redis service.\n"
                },
                "persistence": {
                    "type": "string",
                    "description": "When persistence is \u003cspan pulumi-lang-nodejs=\"`rdb`\" pulumi-lang-dotnet=\"`Rdb`\" pulumi-lang-go=\"`rdb`\" pulumi-lang-python=\"`rdb`\" pulumi-lang-yaml=\"`rdb`\" pulumi-lang-java=\"`rdb`\"\u003e`rdb`\u003c/span\u003e, Redis does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.\n"
                },
                "pubsubClientOutputBufferLimit": {
                    "type": "integer",
                    "description": "The output buffer limit for pub/sub clients in MB. The value is the hard limit, the soft limit is 1/4 of the hard limit. When setting the limit, be mindful of the available memory in the selected service plan.\n"
                },
                "ssl": {
                    "type": "boolean",
                    "description": "A boolean indicating whether to require SSL to access Redis.\n- When enabled, Redis accepts only SSL connections on port \u003cspan pulumi-lang-nodejs=\"`25061`\" pulumi-lang-dotnet=\"`25061`\" pulumi-lang-go=\"`25061`\" pulumi-lang-python=\"`25061`\" pulumi-lang-yaml=\"`25061`\" pulumi-lang-java=\"`25061`\"\u003e`25061`\u003c/span\u003e.\n- When disabled, port \u003cspan pulumi-lang-nodejs=\"`25060`\" pulumi-lang-dotnet=\"`25060`\" pulumi-lang-go=\"`25060`\" pulumi-lang-python=\"`25060`\" pulumi-lang-yaml=\"`25060`\" pulumi-lang-java=\"`25060`\"\u003e`25060`\u003c/span\u003e is opened for non-SSL connections, while port \u003cspan pulumi-lang-nodejs=\"`25061`\" pulumi-lang-dotnet=\"`25061`\" pulumi-lang-go=\"`25061`\" pulumi-lang-python=\"`25061`\" pulumi-lang-yaml=\"`25061`\" pulumi-lang-java=\"`25061`\"\u003e`25061`\u003c/span\u003e remains available for SSL connections.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The Redis idle connection timeout in seconds.\n"
                }
            },
            "required": [
                "aclChannelsDefault",
                "clusterId",
                "ioThreads",
                "lfuDecayTime",
                "lfuLogFactor",
                "maxmemoryPolicy",
                "notifyKeyspaceEvents",
                "numberOfDatabases",
                "persistence",
                "pubsubClientOutputBufferLimit",
                "ssl",
                "timeout"
            ],
            "inputProperties": {
                "aclChannelsDefault": {
                    "type": "string",
                    "description": "Determines default pub/sub channels' ACL for new users if an ACL is not supplied. When this option is not defined, \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e is assumed to keep backward compatibility. This option doesn't affect Redis' `acl-pubsub-default` configuration. Supported values are: \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`resetchannels`\" pulumi-lang-dotnet=\"`Resetchannels`\" pulumi-lang-go=\"`resetchannels`\" pulumi-lang-python=\"`resetchannels`\" pulumi-lang-yaml=\"`resetchannels`\" pulumi-lang-java=\"`resetchannels`\"\u003e`resetchannels`\u003c/span\u003e\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Redis cluster.\n",
                    "willReplaceOnChanges": true
                },
                "ioThreads": {
                    "type": "integer",
                    "description": "The Redis IO thread count.\n"
                },
                "lfuDecayTime": {
                    "type": "integer",
                    "description": "The LFU maxmemory policy counter decay time in minutes.\n"
                },
                "lfuLogFactor": {
                    "type": "integer",
                    "description": "The counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory policies.\n"
                },
                "maxmemoryPolicy": {
                    "type": "string",
                    "description": "A string specifying the desired eviction policy for the Redis cluster.Supported values are: \u003cspan pulumi-lang-nodejs=\"`noeviction`\" pulumi-lang-dotnet=\"`Noeviction`\" pulumi-lang-go=\"`noeviction`\" pulumi-lang-python=\"`noeviction`\" pulumi-lang-yaml=\"`noeviction`\" pulumi-lang-java=\"`noeviction`\"\u003e`noeviction`\u003c/span\u003e, `allkeys-lru`, `allkeys-random`, `volatile-lru`, `volatile-random`, `volatile-ttl`\n"
                },
                "notifyKeyspaceEvents": {
                    "type": "string",
                    "description": "The `notify-keyspace-events` option. Requires at least `K` or `E`.\n"
                },
                "numberOfDatabases": {
                    "type": "integer",
                    "description": "The number of Redis databases. Changing this will cause a restart of Redis service.\n"
                },
                "persistence": {
                    "type": "string",
                    "description": "When persistence is \u003cspan pulumi-lang-nodejs=\"`rdb`\" pulumi-lang-dotnet=\"`Rdb`\" pulumi-lang-go=\"`rdb`\" pulumi-lang-python=\"`rdb`\" pulumi-lang-yaml=\"`rdb`\" pulumi-lang-java=\"`rdb`\"\u003e`rdb`\u003c/span\u003e, Redis does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.\n"
                },
                "pubsubClientOutputBufferLimit": {
                    "type": "integer",
                    "description": "The output buffer limit for pub/sub clients in MB. The value is the hard limit, the soft limit is 1/4 of the hard limit. When setting the limit, be mindful of the available memory in the selected service plan.\n"
                },
                "ssl": {
                    "type": "boolean",
                    "description": "A boolean indicating whether to require SSL to access Redis.\n- When enabled, Redis accepts only SSL connections on port \u003cspan pulumi-lang-nodejs=\"`25061`\" pulumi-lang-dotnet=\"`25061`\" pulumi-lang-go=\"`25061`\" pulumi-lang-python=\"`25061`\" pulumi-lang-yaml=\"`25061`\" pulumi-lang-java=\"`25061`\"\u003e`25061`\u003c/span\u003e.\n- When disabled, port \u003cspan pulumi-lang-nodejs=\"`25060`\" pulumi-lang-dotnet=\"`25060`\" pulumi-lang-go=\"`25060`\" pulumi-lang-python=\"`25060`\" pulumi-lang-yaml=\"`25060`\" pulumi-lang-java=\"`25060`\"\u003e`25060`\u003c/span\u003e is opened for non-SSL connections, while port \u003cspan pulumi-lang-nodejs=\"`25061`\" pulumi-lang-dotnet=\"`25061`\" pulumi-lang-go=\"`25061`\" pulumi-lang-python=\"`25061`\" pulumi-lang-yaml=\"`25061`\" pulumi-lang-java=\"`25061`\"\u003e`25061`\u003c/span\u003e remains available for SSL connections.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The Redis idle connection timeout in seconds.\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseRedisConfig resources.\n",
                "properties": {
                    "aclChannelsDefault": {
                        "type": "string",
                        "description": "Determines default pub/sub channels' ACL for new users if an ACL is not supplied. When this option is not defined, \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e is assumed to keep backward compatibility. This option doesn't affect Redis' `acl-pubsub-default` configuration. Supported values are: \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`resetchannels`\" pulumi-lang-dotnet=\"`Resetchannels`\" pulumi-lang-go=\"`resetchannels`\" pulumi-lang-python=\"`resetchannels`\" pulumi-lang-yaml=\"`resetchannels`\" pulumi-lang-java=\"`resetchannels`\"\u003e`resetchannels`\u003c/span\u003e\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target Redis cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "ioThreads": {
                        "type": "integer",
                        "description": "The Redis IO thread count.\n"
                    },
                    "lfuDecayTime": {
                        "type": "integer",
                        "description": "The LFU maxmemory policy counter decay time in minutes.\n"
                    },
                    "lfuLogFactor": {
                        "type": "integer",
                        "description": "The counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory policies.\n"
                    },
                    "maxmemoryPolicy": {
                        "type": "string",
                        "description": "A string specifying the desired eviction policy for the Redis cluster.Supported values are: \u003cspan pulumi-lang-nodejs=\"`noeviction`\" pulumi-lang-dotnet=\"`Noeviction`\" pulumi-lang-go=\"`noeviction`\" pulumi-lang-python=\"`noeviction`\" pulumi-lang-yaml=\"`noeviction`\" pulumi-lang-java=\"`noeviction`\"\u003e`noeviction`\u003c/span\u003e, `allkeys-lru`, `allkeys-random`, `volatile-lru`, `volatile-random`, `volatile-ttl`\n"
                    },
                    "notifyKeyspaceEvents": {
                        "type": "string",
                        "description": "The `notify-keyspace-events` option. Requires at least `K` or `E`.\n"
                    },
                    "numberOfDatabases": {
                        "type": "integer",
                        "description": "The number of Redis databases. Changing this will cause a restart of Redis service.\n"
                    },
                    "persistence": {
                        "type": "string",
                        "description": "When persistence is \u003cspan pulumi-lang-nodejs=\"`rdb`\" pulumi-lang-dotnet=\"`Rdb`\" pulumi-lang-go=\"`rdb`\" pulumi-lang-python=\"`rdb`\" pulumi-lang-yaml=\"`rdb`\" pulumi-lang-java=\"`rdb`\"\u003e`rdb`\u003c/span\u003e, Redis does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e, no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.\n"
                    },
                    "pubsubClientOutputBufferLimit": {
                        "type": "integer",
                        "description": "The output buffer limit for pub/sub clients in MB. The value is the hard limit, the soft limit is 1/4 of the hard limit. When setting the limit, be mindful of the available memory in the selected service plan.\n"
                    },
                    "ssl": {
                        "type": "boolean",
                        "description": "A boolean indicating whether to require SSL to access Redis.\n- When enabled, Redis accepts only SSL connections on port \u003cspan pulumi-lang-nodejs=\"`25061`\" pulumi-lang-dotnet=\"`25061`\" pulumi-lang-go=\"`25061`\" pulumi-lang-python=\"`25061`\" pulumi-lang-yaml=\"`25061`\" pulumi-lang-java=\"`25061`\"\u003e`25061`\u003c/span\u003e.\n- When disabled, port \u003cspan pulumi-lang-nodejs=\"`25060`\" pulumi-lang-dotnet=\"`25060`\" pulumi-lang-go=\"`25060`\" pulumi-lang-python=\"`25060`\" pulumi-lang-yaml=\"`25060`\" pulumi-lang-java=\"`25060`\"\u003e`25060`\u003c/span\u003e is opened for non-SSL connections, while port \u003cspan pulumi-lang-nodejs=\"`25061`\" pulumi-lang-dotnet=\"`25061`\" pulumi-lang-go=\"`25061`\" pulumi-lang-python=\"`25061`\" pulumi-lang-yaml=\"`25061`\" pulumi-lang-java=\"`25061`\"\u003e`25061`\u003c/span\u003e remains available for SSL connections.\n"
                    },
                    "timeout": {
                        "type": "integer",
                        "description": "The Redis idle connection timeout in seconds.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseReplica:DatabaseReplica": {
            "description": "Provides a DigitalOcean database replica resource.\n\n## Example Usage\n\n### Create a new PostgreSQL database replica\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst replica_example = new digitalocean.DatabaseReplica(\"replica-example\", {\n    clusterId: postgres_example.id,\n    name: \"replica-example\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n});\nexport const UUID = replica_example.uuid;\n// Create firewall rule for database replica\nconst example_fw = new digitalocean.DatabaseFirewall(\"example-fw\", {\n    clusterId: replica_example.uuid,\n    rules: [{\n        type: \"ip_addr\",\n        value: \"192.168.1.1\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nreplica_example = digitalocean.DatabaseReplica(\"replica-example\",\n    cluster_id=postgres_example.id,\n    name=\"replica-example\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1)\npulumi.export(\"UUID\", replica_example.uuid)\n# Create firewall rule for database replica\nexample_fw = digitalocean.DatabaseFirewall(\"example-fw\",\n    cluster_id=replica_example.uuid,\n    rules=[{\n        \"type\": \"ip_addr\",\n        \"value\": \"192.168.1.1\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var replica_example = new DigitalOcean.DatabaseReplica(\"replica-example\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"replica-example\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n    });\n\n    // Create firewall rule for database replica\n    var example_fw = new DigitalOcean.DatabaseFirewall(\"example-fw\", new()\n    {\n        ClusterId = replica_example.Uuid,\n        Rules = new[]\n        {\n            new DigitalOcean.Inputs.DatabaseFirewallRuleArgs\n            {\n                Type = \"ip_addr\",\n                Value = \"192.168.1.1\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"UUID\"] = replica_example.Uuid,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treplica_example, err := digitalocean.NewDatabaseReplica(ctx, \"replica-example\", \u0026digitalocean.DatabaseReplicaArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tName:      pulumi.String(\"replica-example\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"UUID\", replica_example.Uuid)\n\t\t// Create firewall rule for database replica\n\t\t_, err = digitalocean.NewDatabaseFirewall(ctx, \"example-fw\", \u0026digitalocean.DatabaseFirewallArgs{\n\t\t\tClusterId: replica_example.Uuid,\n\t\t\tRules: digitalocean.DatabaseFirewallRuleArray{\n\t\t\t\t\u0026digitalocean.DatabaseFirewallRuleArgs{\n\t\t\t\t\tType:  pulumi.String(\"ip_addr\"),\n\t\t\t\t\tValue: pulumi.String(\"192.168.1.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseReplica;\nimport com.pulumi.digitalocean.DatabaseReplicaArgs;\nimport com.pulumi.digitalocean.DatabaseFirewall;\nimport com.pulumi.digitalocean.DatabaseFirewallArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseFirewallRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var replica_example = new DatabaseReplica(\"replica-example\", DatabaseReplicaArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"replica-example\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .build());\n\n        ctx.export(\"UUID\", replica_example.uuid());\n        // Create firewall rule for database replica\n        var example_fw = new DatabaseFirewall(\"example-fw\", DatabaseFirewallArgs.builder()\n            .clusterId(replica_example.uuid())\n            .rules(DatabaseFirewallRuleArgs.builder()\n                .type(\"ip_addr\")\n                .value(\"192.168.1.1\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n  replica-example:\n    type: digitalocean:DatabaseReplica\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: replica-example\n      size: db-s-1vcpu-1gb\n      region: nyc1\n  # Create firewall rule for database replica\n  example-fw:\n    type: digitalocean:DatabaseFirewall\n    properties:\n      clusterId: ${[\"replica-example\"].uuid}\n      rules:\n        - type: ip_addr\n          value: 192.168.1.1\noutputs:\n  UUID: ${[\"replica-example\"].uuid}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase replicas can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of the source database cluster\nand the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of the replica joined with a comma. For example:\n\n```sh\n$ pulumi import digitalocean:index/databaseReplica:DatabaseReplica read-replica 245bcfd0-7f31-4ce6-a2bc-475a116cca97,read-replica\n```\n\n",
            "properties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the original source database cluster.\n"
                },
                "database": {
                    "type": "string",
                    "description": "Name of the replica's default database.\n"
                },
                "host": {
                    "type": "string",
                    "description": "Database replica's hostname.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the database replica.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the replica's default user.\n",
                    "secret": true
                },
                "port": {
                    "type": "integer",
                    "description": "Network port that the database replica is listening on.\n"
                },
                "privateHost": {
                    "type": "string",
                    "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n"
                },
                "privateNetworkUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the database replica will be located.\n"
                },
                "privateUri": {
                    "type": "string",
                    "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                    "secret": true
                },
                "region": {
                    "type": "string",
                    "description": "DigitalOcean region where the replica will reside.\n"
                },
                "size": {
                    "type": "string",
                    "description": "Database Droplet size associated with the replica (ex. `db-s-1vcpu-1gb`). Note that when resizing an existing replica, its size can only be increased. Decreasing its size is not supported.\n"
                },
                "storageSizeMib": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names to be applied to the database replica.\n"
                },
                "uri": {
                    "type": "string",
                    "description": "The full URI for connecting to the database replica.\n",
                    "secret": true
                },
                "user": {
                    "type": "string",
                    "description": "Username for the replica's default user.\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the database replica. The uuid can be used to reference the database replica as the target database cluster in other resources. See example  \"Create firewall rule for database replica\" above.\n"
                }
            },
            "required": [
                "clusterId",
                "database",
                "host",
                "name",
                "password",
                "port",
                "privateHost",
                "privateNetworkUuid",
                "privateUri",
                "storageSizeMib",
                "uri",
                "user",
                "uuid"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the original source database cluster.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name for the database replica.\n",
                    "willReplaceOnChanges": true
                },
                "privateNetworkUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the database replica will be located.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:Region"
                        }
                    ],
                    "description": "DigitalOcean region where the replica will reside.\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:DatabaseSlug"
                        }
                    ],
                    "description": "Database Droplet size associated with the replica (ex. `db-s-1vcpu-1gb`). Note that when resizing an existing replica, its size can only be increased. Decreasing its size is not supported.\n"
                },
                "storageSizeMib": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names to be applied to the database replica.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseReplica resources.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the original source database cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "database": {
                        "type": "string",
                        "description": "Name of the replica's default database.\n"
                    },
                    "host": {
                        "type": "string",
                        "description": "Database replica's hostname.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the database replica.\n",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the replica's default user.\n",
                        "secret": true
                    },
                    "port": {
                        "type": "integer",
                        "description": "Network port that the database replica is listening on.\n"
                    },
                    "privateHost": {
                        "type": "string",
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n"
                    },
                    "privateNetworkUuid": {
                        "type": "string",
                        "description": "The ID of the VPC where the database replica will be located.\n",
                        "willReplaceOnChanges": true
                    },
                    "privateUri": {
                        "type": "string",
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "secret": true
                    },
                    "region": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:Region"
                            }
                        ],
                        "description": "DigitalOcean region where the replica will reside.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:DatabaseSlug"
                            }
                        ],
                        "description": "Database Droplet size associated with the replica (ex. `db-s-1vcpu-1gb`). Note that when resizing an existing replica, its size can only be increased. Decreasing its size is not supported.\n"
                    },
                    "storageSizeMib": {
                        "type": "string"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tag names to be applied to the database replica.\n",
                        "willReplaceOnChanges": true
                    },
                    "uri": {
                        "type": "string",
                        "description": "The full URI for connecting to the database replica.\n",
                        "secret": true
                    },
                    "user": {
                        "type": "string",
                        "description": "Username for the replica's default user.\n"
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the database replica. The uuid can be used to reference the database replica as the target database cluster in other resources. See example  \"Create firewall rule for database replica\" above.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseUser:DatabaseUser": {
            "description": "Provides a DigitalOcean database user resource. When creating a new database cluster, a default admin user with name \u003cspan pulumi-lang-nodejs=\"`doadmin`\" pulumi-lang-dotnet=\"`Doadmin`\" pulumi-lang-go=\"`doadmin`\" pulumi-lang-python=\"`doadmin`\" pulumi-lang-yaml=\"`doadmin`\" pulumi-lang-java=\"`doadmin`\"\u003e`doadmin`\u003c/span\u003e will be created. Then, this resource can be used to provide additional normal users inside the cluster.\n\n\u003e **NOTE:** Any new users created will always have \u003cspan pulumi-lang-nodejs=\"`normal`\" pulumi-lang-dotnet=\"`Normal`\" pulumi-lang-go=\"`normal`\" pulumi-lang-python=\"`normal`\" pulumi-lang-yaml=\"`normal`\" pulumi-lang-java=\"`normal`\"\u003e`normal`\u003c/span\u003e role, only the default user that comes with database cluster creation has \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\"\u003e`primary`\u003c/span\u003e role. Additional permissions must be managed manually.\n\n## Example Usage\n\n### Create a new PostgreSQL database user\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst user_example = new digitalocean.DatabaseUser(\"user-example\", {\n    clusterId: postgres_example.id,\n    name: \"foobar\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nuser_example = digitalocean.DatabaseUser(\"user-example\",\n    cluster_id=postgres_example.id,\n    name=\"foobar\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var user_example = new DigitalOcean.DatabaseUser(\"user-example\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"foobar\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseUser(ctx, \"user-example\", \u0026digitalocean.DatabaseUserArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tName:      pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseUser;\nimport com.pulumi.digitalocean.DatabaseUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var user_example = new DatabaseUser(\"user-example\", DatabaseUserArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"foobar\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  user-example:\n    type: digitalocean:DatabaseUser\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: foobar\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new user for a PostgreSQL database replica \n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst postgres_example = new digitalocean.DatabaseCluster(\"postgres-example\", {\n    name: \"example-postgres-cluster\",\n    engine: \"pg\",\n    version: \"15\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst replica_example = new digitalocean.DatabaseReplica(\"replica-example\", {\n    clusterId: postgres_example.id,\n    name: \"replica-example\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n});\nconst user_example = new digitalocean.DatabaseUser(\"user-example\", {\n    clusterId: replica_example.uuid,\n    name: \"foobar\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\npostgres_example = digitalocean.DatabaseCluster(\"postgres-example\",\n    name=\"example-postgres-cluster\",\n    engine=\"pg\",\n    version=\"15\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nreplica_example = digitalocean.DatabaseReplica(\"replica-example\",\n    cluster_id=postgres_example.id,\n    name=\"replica-example\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1)\nuser_example = digitalocean.DatabaseUser(\"user-example\",\n    cluster_id=replica_example.uuid,\n    name=\"foobar\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var postgres_example = new DigitalOcean.DatabaseCluster(\"postgres-example\", new()\n    {\n        Name = \"example-postgres-cluster\",\n        Engine = \"pg\",\n        Version = \"15\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var replica_example = new DigitalOcean.DatabaseReplica(\"replica-example\", new()\n    {\n        ClusterId = postgres_example.Id,\n        Name = \"replica-example\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n    });\n\n    var user_example = new DigitalOcean.DatabaseUser(\"user-example\", new()\n    {\n        ClusterId = replica_example.Uuid,\n        Name = \"foobar\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres_example, err := digitalocean.NewDatabaseCluster(ctx, \"postgres-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-postgres-cluster\"),\n\t\t\tEngine:    pulumi.String(\"pg\"),\n\t\t\tVersion:   pulumi.String(\"15\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treplica_example, err := digitalocean.NewDatabaseReplica(ctx, \"replica-example\", \u0026digitalocean.DatabaseReplicaArgs{\n\t\t\tClusterId: postgres_example.ID(),\n\t\t\tName:      pulumi.String(\"replica-example\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseUser(ctx, \"user-example\", \u0026digitalocean.DatabaseUserArgs{\n\t\t\tClusterId: replica_example.Uuid,\n\t\t\tName:      pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseReplica;\nimport com.pulumi.digitalocean.DatabaseReplicaArgs;\nimport com.pulumi.digitalocean.DatabaseUser;\nimport com.pulumi.digitalocean.DatabaseUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var postgres_example = new DatabaseCluster(\"postgres-example\", DatabaseClusterArgs.builder()\n            .name(\"example-postgres-cluster\")\n            .engine(\"pg\")\n            .version(\"15\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var replica_example = new DatabaseReplica(\"replica-example\", DatabaseReplicaArgs.builder()\n            .clusterId(postgres_example.id())\n            .name(\"replica-example\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .build());\n\n        var user_example = new DatabaseUser(\"user-example\", DatabaseUserArgs.builder()\n            .clusterId(replica_example.uuid())\n            .name(\"foobar\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  postgres-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-postgres-cluster\n      engine: pg\n      version: '15'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n  replica-example:\n    type: digitalocean:DatabaseReplica\n    properties:\n      clusterId: ${[\"postgres-example\"].id}\n      name: replica-example\n      size: db-s-1vcpu-1gb\n      region: nyc1\n  user-example:\n    type: digitalocean:DatabaseUser\n    properties:\n      clusterId: ${[\"replica-example\"].uuid}\n      name: foobar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a new user for a Kafka database cluster \n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst kafka_example = new digitalocean.DatabaseCluster(\"kafka-example\", {\n    name: \"example-kafka-cluster\",\n    engine: \"kafka\",\n    version: \"3.5\",\n    size: \"db-s-2vcpu-2gb\",\n    region: digitalocean.Region.NYC1,\n    nodeCount: 3,\n});\nconst foobarTopic = new digitalocean.DatabaseKafkaTopic(\"foobar_topic\", {\n    clusterId: foobar.id,\n    name: \"topic-1\",\n});\nconst foobarUser = new digitalocean.DatabaseUser(\"foobar_user\", {\n    clusterId: foobar.id,\n    name: \"example-user\",\n    settings: [{\n        acls: [\n            {\n                topic: \"topic-1\",\n                permission: \"produce\",\n            },\n            {\n                topic: \"topic-2\",\n                permission: \"produceconsume\",\n            },\n            {\n                topic: \"topic-*\",\n                permission: \"consume\",\n            },\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkafka_example = digitalocean.DatabaseCluster(\"kafka-example\",\n    name=\"example-kafka-cluster\",\n    engine=\"kafka\",\n    version=\"3.5\",\n    size=\"db-s-2vcpu-2gb\",\n    region=digitalocean.Region.NYC1,\n    node_count=3)\nfoobar_topic = digitalocean.DatabaseKafkaTopic(\"foobar_topic\",\n    cluster_id=foobar[\"id\"],\n    name=\"topic-1\")\nfoobar_user = digitalocean.DatabaseUser(\"foobar_user\",\n    cluster_id=foobar[\"id\"],\n    name=\"example-user\",\n    settings=[{\n        \"acls\": [\n            {\n                \"topic\": \"topic-1\",\n                \"permission\": \"produce\",\n            },\n            {\n                \"topic\": \"topic-2\",\n                \"permission\": \"produceconsume\",\n            },\n            {\n                \"topic\": \"topic-*\",\n                \"permission\": \"consume\",\n            },\n        ],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kafka_example = new DigitalOcean.DatabaseCluster(\"kafka-example\", new()\n    {\n        Name = \"example-kafka-cluster\",\n        Engine = \"kafka\",\n        Version = \"3.5\",\n        Size = \"db-s-2vcpu-2gb\",\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 3,\n    });\n\n    var foobarTopic = new DigitalOcean.DatabaseKafkaTopic(\"foobar_topic\", new()\n    {\n        ClusterId = foobar.Id,\n        Name = \"topic-1\",\n    });\n\n    var foobarUser = new DigitalOcean.DatabaseUser(\"foobar_user\", new()\n    {\n        ClusterId = foobar.Id,\n        Name = \"example-user\",\n        Settings = new[]\n        {\n            new DigitalOcean.Inputs.DatabaseUserSettingArgs\n            {\n                Acls = new[]\n                {\n                    new DigitalOcean.Inputs.DatabaseUserSettingAclArgs\n                    {\n                        Topic = \"topic-1\",\n                        Permission = \"produce\",\n                    },\n                    new DigitalOcean.Inputs.DatabaseUserSettingAclArgs\n                    {\n                        Topic = \"topic-2\",\n                        Permission = \"produceconsume\",\n                    },\n                    new DigitalOcean.Inputs.DatabaseUserSettingAclArgs\n                    {\n                        Topic = \"topic-*\",\n                        Permission = \"consume\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewDatabaseCluster(ctx, \"kafka-example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-kafka-cluster\"),\n\t\t\tEngine:    pulumi.String(\"kafka\"),\n\t\t\tVersion:   pulumi.String(\"3.5\"),\n\t\t\tSize:      pulumi.String(\"db-s-2vcpu-2gb\"),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseKafkaTopic(ctx, \"foobar_topic\", \u0026digitalocean.DatabaseKafkaTopicArgs{\n\t\t\tClusterId: pulumi.Any(foobar.Id),\n\t\t\tName:      pulumi.String(\"topic-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseUser(ctx, \"foobar_user\", \u0026digitalocean.DatabaseUserArgs{\n\t\t\tClusterId: pulumi.Any(foobar.Id),\n\t\t\tName:      pulumi.String(\"example-user\"),\n\t\t\tSettings: digitalocean.DatabaseUserSettingArray{\n\t\t\t\t\u0026digitalocean.DatabaseUserSettingArgs{\n\t\t\t\t\tAcls: digitalocean.DatabaseUserSettingAclArray{\n\t\t\t\t\t\t\u0026digitalocean.DatabaseUserSettingAclArgs{\n\t\t\t\t\t\t\tTopic:      pulumi.String(\"topic-1\"),\n\t\t\t\t\t\t\tPermission: pulumi.String(\"produce\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026digitalocean.DatabaseUserSettingAclArgs{\n\t\t\t\t\t\t\tTopic:      pulumi.String(\"topic-2\"),\n\t\t\t\t\t\t\tPermission: pulumi.String(\"produceconsume\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026digitalocean.DatabaseUserSettingAclArgs{\n\t\t\t\t\t\t\tTopic:      pulumi.String(\"topic-*\"),\n\t\t\t\t\t\t\tPermission: pulumi.String(\"consume\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseKafkaTopic;\nimport com.pulumi.digitalocean.DatabaseKafkaTopicArgs;\nimport com.pulumi.digitalocean.DatabaseUser;\nimport com.pulumi.digitalocean.DatabaseUserArgs;\nimport com.pulumi.digitalocean.inputs.DatabaseUserSettingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var kafka_example = new DatabaseCluster(\"kafka-example\", DatabaseClusterArgs.builder()\n            .name(\"example-kafka-cluster\")\n            .engine(\"kafka\")\n            .version(\"3.5\")\n            .size(\"db-s-2vcpu-2gb\")\n            .region(\"nyc1\")\n            .nodeCount(3)\n            .build());\n\n        var foobarTopic = new DatabaseKafkaTopic(\"foobarTopic\", DatabaseKafkaTopicArgs.builder()\n            .clusterId(foobar.id())\n            .name(\"topic-1\")\n            .build());\n\n        var foobarUser = new DatabaseUser(\"foobarUser\", DatabaseUserArgs.builder()\n            .clusterId(foobar.id())\n            .name(\"example-user\")\n            .settings(DatabaseUserSettingArgs.builder()\n                .acls(                \n                    DatabaseUserSettingAclArgs.builder()\n                        .topic(\"topic-1\")\n                        .permission(\"produce\")\n                        .build(),\n                    DatabaseUserSettingAclArgs.builder()\n                        .topic(\"topic-2\")\n                        .permission(\"produceconsume\")\n                        .build(),\n                    DatabaseUserSettingAclArgs.builder()\n                        .topic(\"topic-*\")\n                        .permission(\"consume\")\n                        .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  kafka-example:\n    type: digitalocean:DatabaseCluster\n    properties:\n      name: example-kafka-cluster\n      engine: kafka\n      version: '3.5'\n      size: db-s-2vcpu-2gb\n      region: nyc1\n      nodeCount: 3\n  foobarTopic:\n    type: digitalocean:DatabaseKafkaTopic\n    name: foobar_topic\n    properties:\n      clusterId: ${foobar.id}\n      name: topic-1\n  foobarUser:\n    type: digitalocean:DatabaseUser\n    name: foobar_user\n    properties:\n      clusterId: ${foobar.id}\n      name: example-user\n      settings:\n        - acls:\n            - topic: topic-1\n              permission: produce\n            - topic: topic-2\n              permission: produceconsume\n            - topic: topic-*\n              permission: consume\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase user can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of the source database cluster\nand the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of the user joined with a comma. For example:\n\n```sh\n$ pulumi import digitalocean:index/databaseUser:DatabaseUser user-example 245bcfd0-7f31-4ce6-a2bc-475a116cca97,foobar\n```\n\n\u003e **Note:** MongoDB user passwords are only available when the user is created. An existing MongoDB user that is imported will not have its \u003cspan pulumi-lang-nodejs=\"`password`\" pulumi-lang-dotnet=\"`Password`\" pulumi-lang-go=\"`password`\" pulumi-lang-python=\"`password`\" pulumi-lang-yaml=\"`password`\" pulumi-lang-java=\"`password`\"\u003e`password`\u003c/span\u003e attribute exported. Recreate the user if it is necessary to access the password with Terraform.\n\n",
            "properties": {
                "accessCert": {
                    "type": "string",
                    "description": "Access certificate for TLS client authentication. (Kafka only)\n",
                    "secret": true
                },
                "accessKey": {
                    "type": "string",
                    "description": "Access key for TLS client authentication. (Kafka only)\n",
                    "secret": true
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the original source database cluster.\n"
                },
                "mysqlAuthPlugin": {
                    "type": "string",
                    "description": "The authentication method to use for connections to the MySQL user account. The valid values are \u003cspan 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`\"\u003e`mysql_native_password`\u003c/span\u003e or \u003cspan 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`\"\u003e`caching_sha2_password`\u003c/span\u003e (this is the default).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the database user.\n"
                },
                "password": {
                    "type": "string",
                    "description": "Password for the database user.\n",
                    "secret": true
                },
                "role": {
                    "type": "string",
                    "description": "Role for the database user. The value will be either \"primary\" or \"normal\".\n"
                },
                "settings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseUserSetting:DatabaseUserSetting"
                    },
                    "description": "Contains optional settings for the user.\nThe \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e block is documented below.\n"
                }
            },
            "required": [
                "accessCert",
                "accessKey",
                "clusterId",
                "name",
                "password",
                "role"
            ],
            "inputProperties": {
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the original source database cluster.\n",
                    "willReplaceOnChanges": true
                },
                "mysqlAuthPlugin": {
                    "type": "string",
                    "description": "The authentication method to use for connections to the MySQL user account. The valid values are \u003cspan 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`\"\u003e`mysql_native_password`\u003c/span\u003e or \u003cspan 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`\"\u003e`caching_sha2_password`\u003c/span\u003e (this is the default).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name for the database user.\n",
                    "willReplaceOnChanges": true
                },
                "settings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DatabaseUserSetting:DatabaseUserSetting"
                    },
                    "description": "Contains optional settings for the user.\nThe \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e block is documented below.\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseUser resources.\n",
                "properties": {
                    "accessCert": {
                        "type": "string",
                        "description": "Access certificate for TLS client authentication. (Kafka only)\n",
                        "secret": true
                    },
                    "accessKey": {
                        "type": "string",
                        "description": "Access key for TLS client authentication. (Kafka only)\n",
                        "secret": true
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the original source database cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "mysqlAuthPlugin": {
                        "type": "string",
                        "description": "The authentication method to use for connections to the MySQL user account. The valid values are \u003cspan 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`\"\u003e`mysql_native_password`\u003c/span\u003e or \u003cspan 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`\"\u003e`caching_sha2_password`\u003c/span\u003e (this is the default).\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the database user.\n",
                        "willReplaceOnChanges": true
                    },
                    "password": {
                        "type": "string",
                        "description": "Password for the database user.\n",
                        "secret": true
                    },
                    "role": {
                        "type": "string",
                        "description": "Role for the database user. The value will be either \"primary\" or \"normal\".\n"
                    },
                    "settings": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/DatabaseUserSetting:DatabaseUserSetting"
                        },
                        "description": "Contains optional settings for the user.\nThe \u003cspan pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\"\u003e`settings`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/databaseValkeyConfig:DatabaseValkeyConfig": {
            "description": "Provides a virtual resource that can be used to change advanced configuration\noptions for a DigitalOcean managed Valkey database cluster.\n\n\u003e **Note** Valkey configurations are only removed from state when destroyed. The remote configuration is not unset.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst exampleDatabaseCluster = new digitalocean.DatabaseCluster(\"example\", {\n    name: \"example-valkey-cluster\",\n    engine: \"valkey\",\n    version: \"8\",\n    size: digitalocean.DatabaseSlug.DB_1VPCU1GB,\n    region: digitalocean.Region.NYC1,\n    nodeCount: 1,\n});\nconst example = new digitalocean.DatabaseValkeyConfig(\"example\", {\n    clusterId: exampleDatabaseCluster.id,\n    notifyKeyspaceEvents: \"KEA\",\n    timeout: 90,\n    valkeyMaxmemoryPolicy: \"allkeys-random\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample_database_cluster = digitalocean.DatabaseCluster(\"example\",\n    name=\"example-valkey-cluster\",\n    engine=\"valkey\",\n    version=\"8\",\n    size=digitalocean.DatabaseSlug.D_B_1_VPCU1_GB,\n    region=digitalocean.Region.NYC1,\n    node_count=1)\nexample = digitalocean.DatabaseValkeyConfig(\"example\",\n    cluster_id=example_database_cluster.id,\n    notify_keyspace_events=\"KEA\",\n    timeout=90,\n    valkey_maxmemory_policy=\"allkeys-random\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var exampleDatabaseCluster = new DigitalOcean.DatabaseCluster(\"example\", new()\n    {\n        Name = \"example-valkey-cluster\",\n        Engine = \"valkey\",\n        Version = \"8\",\n        Size = DigitalOcean.DatabaseSlug.DB_1VPCU1GB,\n        Region = DigitalOcean.Region.NYC1,\n        NodeCount = 1,\n    });\n\n    var example = new DigitalOcean.DatabaseValkeyConfig(\"example\", new()\n    {\n        ClusterId = exampleDatabaseCluster.Id,\n        NotifyKeyspaceEvents = \"KEA\",\n        Timeout = 90,\n        ValkeyMaxmemoryPolicy = \"allkeys-random\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleDatabaseCluster, err := digitalocean.NewDatabaseCluster(ctx, \"example\", \u0026digitalocean.DatabaseClusterArgs{\n\t\t\tName:      pulumi.String(\"example-valkey-cluster\"),\n\t\t\tEngine:    pulumi.String(\"valkey\"),\n\t\t\tVersion:   pulumi.String(\"8\"),\n\t\t\tSize:      pulumi.String(digitalocean.DatabaseSlug_DB_1VPCU1GB),\n\t\t\tRegion:    pulumi.String(digitalocean.RegionNYC1),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDatabaseValkeyConfig(ctx, \"example\", \u0026digitalocean.DatabaseValkeyConfigArgs{\n\t\t\tClusterId:             exampleDatabaseCluster.ID(),\n\t\t\tNotifyKeyspaceEvents:  pulumi.String(\"KEA\"),\n\t\t\tTimeout:               pulumi.Int(90),\n\t\t\tValkeyMaxmemoryPolicy: pulumi.String(\"allkeys-random\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DatabaseCluster;\nimport com.pulumi.digitalocean.DatabaseClusterArgs;\nimport com.pulumi.digitalocean.DatabaseValkeyConfig;\nimport com.pulumi.digitalocean.DatabaseValkeyConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var exampleDatabaseCluster = new DatabaseCluster(\"exampleDatabaseCluster\", DatabaseClusterArgs.builder()\n            .name(\"example-valkey-cluster\")\n            .engine(\"valkey\")\n            .version(\"8\")\n            .size(\"db-s-1vcpu-1gb\")\n            .region(\"nyc1\")\n            .nodeCount(1)\n            .build());\n\n        var example = new DatabaseValkeyConfig(\"example\", DatabaseValkeyConfigArgs.builder()\n            .clusterId(exampleDatabaseCluster.id())\n            .notifyKeyspaceEvents(\"KEA\")\n            .timeout(90)\n            .valkeyMaxmemoryPolicy(\"allkeys-random\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:DatabaseValkeyConfig\n    properties:\n      clusterId: ${exampleDatabaseCluster.id}\n      notifyKeyspaceEvents: KEA\n      timeout: 90\n      valkeyMaxmemoryPolicy: allkeys-random\n  exampleDatabaseCluster:\n    type: digitalocean:DatabaseCluster\n    name: example\n    properties:\n      name: example-valkey-cluster\n      engine: valkey\n      version: '8'\n      size: db-s-1vcpu-1gb\n      region: nyc1\n      nodeCount: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA Valkey database cluster's configuration can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e the parent cluster, e.g.\n\n```sh\n$ pulumi import digitalocean:index/databaseValkeyConfig:DatabaseValkeyConfig example 245bcfd0-7f31-4ce6-a2bc-475a116cca97\n```\n\n",
            "properties": {
                "aclChannelsDefault": {
                    "type": "string",
                    "description": "Determines default pub/sub channels' ACL for new users if an ACL is not supplied. When this option is not defined, \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e is assumed to keep backward compatibility. This option doesn't affect Valkey' `acl-pubsub-default` configuration. Supported values are: \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`resetchannels`\" pulumi-lang-dotnet=\"`Resetchannels`\" pulumi-lang-go=\"`resetchannels`\" pulumi-lang-python=\"`resetchannels`\" pulumi-lang-yaml=\"`resetchannels`\" pulumi-lang-java=\"`resetchannels`\"\u003e`resetchannels`\u003c/span\u003e\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Valkey cluster.\n"
                },
                "frequentSnapshots": {
                    "type": "boolean",
                    "description": "Frequent RDB snapshots. When enabled, Valkey will create frequent local RDB snapshots. When disabled, Valkey will only take RDB snapshots when a backup is created, based on the backup schedule. This setting is ignored when\u003cspan pulumi-lang-nodejs=\" valkeyPersistence \" pulumi-lang-dotnet=\" ValkeyPersistence \" pulumi-lang-go=\" valkeyPersistence \" pulumi-lang-python=\" valkey_persistence \" pulumi-lang-yaml=\" valkeyPersistence \" pulumi-lang-java=\" valkeyPersistence \"\u003e valkey_persistence \u003c/span\u003eis set to off."
                },
                "ioThreads": {
                    "type": "integer",
                    "description": "The Valkey IO thread count.\n"
                },
                "lfuDecayTime": {
                    "type": "integer",
                    "description": "The LFU maxmemory policy counter decay time in minutes.\n"
                },
                "lfuLogFactor": {
                    "type": "integer",
                    "description": "The counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory policies.\n"
                },
                "notifyKeyspaceEvents": {
                    "type": "string",
                    "description": "The `notify-keyspace-events` option. Requires at least `K` or `E`.\n"
                },
                "numberOfDatabases": {
                    "type": "integer",
                    "description": "The number of Valkey databases. Changing this will cause a restart of Valkey service.\n"
                },
                "persistence": {
                    "type": "string",
                    "description": "When persistence is 'rdb', Valkey does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is 'off', no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.\n"
                },
                "pubsubClientOutputBufferLimit": {
                    "type": "integer",
                    "description": "The output buffer limit for pub/sub clients in MB. The value is the hard limit, the soft limit is 1/4 of the hard limit. When setting the limit, be mindful of the available memory in the selected service plan.\n"
                },
                "ssl": {
                    "type": "boolean",
                    "description": "A boolean indicating whether to require SSL to access Valkey.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The Valkey idle connection timeout in seconds.\n"
                },
                "valkeyActiveExpireEffort": {
                    "type": "integer",
                    "description": "Active expire effort. Valkey reclaims expired keys both when accessed and in the background. The background process scans for expired keys to free memory. Increasing the active-expire-effort setting (default 1, max 10) uses more CPU to reclaim expired keys faster, reducing memory usage but potentially increasing latency."
                },
                "valkeyMaxmemoryPolicy": {
                    "type": "string",
                    "description": "Eviction policy model\n"
                }
            },
            "required": [
                "aclChannelsDefault",
                "clusterId",
                "frequentSnapshots",
                "ioThreads",
                "lfuDecayTime",
                "lfuLogFactor",
                "notifyKeyspaceEvents",
                "numberOfDatabases",
                "persistence",
                "pubsubClientOutputBufferLimit",
                "ssl",
                "timeout",
                "valkeyActiveExpireEffort",
                "valkeyMaxmemoryPolicy"
            ],
            "inputProperties": {
                "aclChannelsDefault": {
                    "type": "string",
                    "description": "Determines default pub/sub channels' ACL for new users if an ACL is not supplied. When this option is not defined, \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e is assumed to keep backward compatibility. This option doesn't affect Valkey' `acl-pubsub-default` configuration. Supported values are: \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`resetchannels`\" pulumi-lang-dotnet=\"`Resetchannels`\" pulumi-lang-go=\"`resetchannels`\" pulumi-lang-python=\"`resetchannels`\" pulumi-lang-yaml=\"`resetchannels`\" pulumi-lang-java=\"`resetchannels`\"\u003e`resetchannels`\u003c/span\u003e\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the target Valkey cluster.\n",
                    "willReplaceOnChanges": true
                },
                "frequentSnapshots": {
                    "type": "boolean",
                    "description": "Frequent RDB snapshots. When enabled, Valkey will create frequent local RDB snapshots. When disabled, Valkey will only take RDB snapshots when a backup is created, based on the backup schedule. This setting is ignored when\u003cspan pulumi-lang-nodejs=\" valkeyPersistence \" pulumi-lang-dotnet=\" ValkeyPersistence \" pulumi-lang-go=\" valkeyPersistence \" pulumi-lang-python=\" valkey_persistence \" pulumi-lang-yaml=\" valkeyPersistence \" pulumi-lang-java=\" valkeyPersistence \"\u003e valkey_persistence \u003c/span\u003eis set to off."
                },
                "ioThreads": {
                    "type": "integer",
                    "description": "The Valkey IO thread count.\n"
                },
                "lfuDecayTime": {
                    "type": "integer",
                    "description": "The LFU maxmemory policy counter decay time in minutes.\n"
                },
                "lfuLogFactor": {
                    "type": "integer",
                    "description": "The counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory policies.\n"
                },
                "notifyKeyspaceEvents": {
                    "type": "string",
                    "description": "The `notify-keyspace-events` option. Requires at least `K` or `E`.\n"
                },
                "numberOfDatabases": {
                    "type": "integer",
                    "description": "The number of Valkey databases. Changing this will cause a restart of Valkey service.\n"
                },
                "persistence": {
                    "type": "string",
                    "description": "When persistence is 'rdb', Valkey does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is 'off', no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.\n"
                },
                "pubsubClientOutputBufferLimit": {
                    "type": "integer",
                    "description": "The output buffer limit for pub/sub clients in MB. The value is the hard limit, the soft limit is 1/4 of the hard limit. When setting the limit, be mindful of the available memory in the selected service plan.\n"
                },
                "ssl": {
                    "type": "boolean",
                    "description": "A boolean indicating whether to require SSL to access Valkey.\n"
                },
                "timeout": {
                    "type": "integer",
                    "description": "The Valkey idle connection timeout in seconds.\n"
                },
                "valkeyActiveExpireEffort": {
                    "type": "integer",
                    "description": "Active expire effort. Valkey reclaims expired keys both when accessed and in the background. The background process scans for expired keys to free memory. Increasing the active-expire-effort setting (default 1, max 10) uses more CPU to reclaim expired keys faster, reducing memory usage but potentially increasing latency."
                },
                "valkeyMaxmemoryPolicy": {
                    "type": "string",
                    "description": "Eviction policy model\n"
                }
            },
            "requiredInputs": [
                "clusterId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DatabaseValkeyConfig resources.\n",
                "properties": {
                    "aclChannelsDefault": {
                        "type": "string",
                        "description": "Determines default pub/sub channels' ACL for new users if an ACL is not supplied. When this option is not defined, \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e is assumed to keep backward compatibility. This option doesn't affect Valkey' `acl-pubsub-default` configuration. Supported values are: \u003cspan pulumi-lang-nodejs=\"`allchannels`\" pulumi-lang-dotnet=\"`Allchannels`\" pulumi-lang-go=\"`allchannels`\" pulumi-lang-python=\"`allchannels`\" pulumi-lang-yaml=\"`allchannels`\" pulumi-lang-java=\"`allchannels`\"\u003e`allchannels`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`resetchannels`\" pulumi-lang-dotnet=\"`Resetchannels`\" pulumi-lang-go=\"`resetchannels`\" pulumi-lang-python=\"`resetchannels`\" pulumi-lang-yaml=\"`resetchannels`\" pulumi-lang-java=\"`resetchannels`\"\u003e`resetchannels`\u003c/span\u003e\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the target Valkey cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "frequentSnapshots": {
                        "type": "boolean",
                        "description": "Frequent RDB snapshots. When enabled, Valkey will create frequent local RDB snapshots. When disabled, Valkey will only take RDB snapshots when a backup is created, based on the backup schedule. This setting is ignored when\u003cspan pulumi-lang-nodejs=\" valkeyPersistence \" pulumi-lang-dotnet=\" ValkeyPersistence \" pulumi-lang-go=\" valkeyPersistence \" pulumi-lang-python=\" valkey_persistence \" pulumi-lang-yaml=\" valkeyPersistence \" pulumi-lang-java=\" valkeyPersistence \"\u003e valkey_persistence \u003c/span\u003eis set to off."
                    },
                    "ioThreads": {
                        "type": "integer",
                        "description": "The Valkey IO thread count.\n"
                    },
                    "lfuDecayTime": {
                        "type": "integer",
                        "description": "The LFU maxmemory policy counter decay time in minutes.\n"
                    },
                    "lfuLogFactor": {
                        "type": "integer",
                        "description": "The counter logarithm factor for volatile-lfu and allkeys-lfu maxmemory policies.\n"
                    },
                    "notifyKeyspaceEvents": {
                        "type": "string",
                        "description": "The `notify-keyspace-events` option. Requires at least `K` or `E`.\n"
                    },
                    "numberOfDatabases": {
                        "type": "integer",
                        "description": "The number of Valkey databases. Changing this will cause a restart of Valkey service.\n"
                    },
                    "persistence": {
                        "type": "string",
                        "description": "When persistence is 'rdb', Valkey does RDB dumps each 10 minutes if any key is changed. Also RDB dumps are done according to backup schedule for backup purposes. When persistence is 'off', no RDB dumps and backups are done, so data can be lost at any moment if service is restarted for any reason, or if service is powered off. Also service can't be forked.\n"
                    },
                    "pubsubClientOutputBufferLimit": {
                        "type": "integer",
                        "description": "The output buffer limit for pub/sub clients in MB. The value is the hard limit, the soft limit is 1/4 of the hard limit. When setting the limit, be mindful of the available memory in the selected service plan.\n"
                    },
                    "ssl": {
                        "type": "boolean",
                        "description": "A boolean indicating whether to require SSL to access Valkey.\n"
                    },
                    "timeout": {
                        "type": "integer",
                        "description": "The Valkey idle connection timeout in seconds.\n"
                    },
                    "valkeyActiveExpireEffort": {
                        "type": "integer",
                        "description": "Active expire effort. Valkey reclaims expired keys both when accessed and in the background. The background process scans for expired keys to free memory. Increasing the active-expire-effort setting (default 1, max 10) uses more CPU to reclaim expired keys faster, reducing memory usage but potentially increasing latency."
                    },
                    "valkeyMaxmemoryPolicy": {
                        "type": "string",
                        "description": "Eviction policy model\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/dnsRecord:DnsRecord": {
            "description": "Provides a DigitalOcean DNS record resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst _default = new digitalocean.Domain(\"default\", {name: \"example.com\"});\n// Add an A record to the domain for www.example.com.\nconst www = new digitalocean.DnsRecord(\"www\", {\n    domain: _default.id,\n    type: digitalocean.RecordType.A,\n    name: \"www\",\n    value: \"192.168.0.11\",\n});\n// Add a MX record for the example.com domain itself.\nconst mx = new digitalocean.DnsRecord(\"mx\", {\n    domain: _default.id,\n    type: digitalocean.RecordType.MX,\n    name: \"@\",\n    priority: 10,\n    value: \"mail.example.com.\",\n});\nexport const wwwFqdn = www.fqdn;\nexport const mxFqdn = mx.fqdn;\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ndefault = digitalocean.Domain(\"default\", name=\"example.com\")\n# Add an A record to the domain for www.example.com.\nwww = digitalocean.DnsRecord(\"www\",\n    domain=default.id,\n    type=digitalocean.RecordType.A,\n    name=\"www\",\n    value=\"192.168.0.11\")\n# Add a MX record for the example.com domain itself.\nmx = digitalocean.DnsRecord(\"mx\",\n    domain=default.id,\n    type=digitalocean.RecordType.MX,\n    name=\"@\",\n    priority=10,\n    value=\"mail.example.com.\")\npulumi.export(\"wwwFqdn\", www.fqdn)\npulumi.export(\"mxFqdn\", mx.fqdn)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @default = new DigitalOcean.Domain(\"default\", new()\n    {\n        Name = \"example.com\",\n    });\n\n    // Add an A record to the domain for www.example.com.\n    var www = new DigitalOcean.DnsRecord(\"www\", new()\n    {\n        Domain = @default.Id,\n        Type = DigitalOcean.RecordType.A,\n        Name = \"www\",\n        Value = \"192.168.0.11\",\n    });\n\n    // Add a MX record for the example.com domain itself.\n    var mx = new DigitalOcean.DnsRecord(\"mx\", new()\n    {\n        Domain = @default.Id,\n        Type = DigitalOcean.RecordType.MX,\n        Name = \"@\",\n        Priority = 10,\n        Value = \"mail.example.com.\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"wwwFqdn\"] = www.Fqdn,\n        [\"mxFqdn\"] = mx.Fqdn,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := digitalocean.NewDomain(ctx, \"default\", \u0026digitalocean.DomainArgs{\n\t\t\tName: pulumi.String(\"example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Add an A record to the domain for www.example.com.\n\t\twww, err := digitalocean.NewDnsRecord(ctx, \"www\", \u0026digitalocean.DnsRecordArgs{\n\t\t\tDomain: _default.ID(),\n\t\t\tType:   pulumi.String(digitalocean.RecordTypeA),\n\t\t\tName:   pulumi.String(\"www\"),\n\t\t\tValue:  pulumi.String(\"192.168.0.11\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Add a MX record for the example.com domain itself.\n\t\tmx, err := digitalocean.NewDnsRecord(ctx, \"mx\", \u0026digitalocean.DnsRecordArgs{\n\t\t\tDomain:   _default.ID(),\n\t\t\tType:     pulumi.String(digitalocean.RecordTypeMX),\n\t\t\tName:     pulumi.String(\"@\"),\n\t\t\tPriority: pulumi.Int(10),\n\t\t\tValue:    pulumi.String(\"mail.example.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"wwwFqdn\", www.Fqdn)\n\t\tctx.Export(\"mxFqdn\", mx.Fqdn)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Domain;\nimport com.pulumi.digitalocean.DomainArgs;\nimport com.pulumi.digitalocean.DnsRecord;\nimport com.pulumi.digitalocean.DnsRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var default_ = new Domain(\"default\", DomainArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n        // Add an A record to the domain for www.example.com.\n        var www = new DnsRecord(\"www\", DnsRecordArgs.builder()\n            .domain(default_.id())\n            .type(\"A\")\n            .name(\"www\")\n            .value(\"192.168.0.11\")\n            .build());\n\n        // Add a MX record for the example.com domain itself.\n        var mx = new DnsRecord(\"mx\", DnsRecordArgs.builder()\n            .domain(default_.id())\n            .type(\"MX\")\n            .name(\"@\")\n            .priority(10)\n            .value(\"mail.example.com.\")\n            .build());\n\n        ctx.export(\"wwwFqdn\", www.fqdn());\n        ctx.export(\"mxFqdn\", mx.fqdn());\n    }\n}\n```\n```yaml\nresources:\n  default:\n    type: digitalocean:Domain\n    properties:\n      name: example.com\n  # Add an A record to the domain for www.example.com.\n  www:\n    type: digitalocean:DnsRecord\n    properties:\n      domain: ${default.id}\n      type: A\n      name: www\n      value: 192.168.0.11\n  # Add a MX record for the example.com domain itself.\n  mx:\n    type: digitalocean:DnsRecord\n    properties:\n      domain: ${default.id}\n      type: MX\n      name: '@'\n      priority: 10\n      value: mail.example.com.\noutputs:\n  # Output the FQDN for the www A record.\n  wwwFqdn: ${www.fqdn}\n  # Output the FQDN for the MX record.\n  mxFqdn: ${mx.fqdn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRecords can be imported using the domain name and record \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 joined with a comma. See the following example:\n\n```sh\n$ pulumi import digitalocean:index/dnsRecord:DnsRecord example_record example.com,12345678\n```\n\n\u003e  You find the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of the records [using the DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Domain-Records/operation/domains_list_records) or CLI. Run the follow command to list the IDs for all DNS records on a domain: `doctl compute domain records list \u003cdomain.name\u003e`\n\n",
            "properties": {
                "domain": {
                    "type": "string",
                    "description": "The domain to add the record to.\n"
                },
                "flags": {
                    "type": "integer",
                    "description": "The flags of the record. Only valid when type is `CAA`. Must be between 0 and 255.\n"
                },
                "fqdn": {
                    "type": "string",
                    "description": "The FQDN of the record\n"
                },
                "name": {
                    "type": "string",
                    "description": "The hostname of the record. Use `@` for records on domain's name itself.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port of the record. Only valid when type is `SRV`.  Must be between 1 and 65535.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of the record. Only valid when type is `MX` or `SRV`. Must be between 0 and 65535.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The tag of the record. Only valid when type is `CAA`. Must be one of \u003cspan pulumi-lang-nodejs=\"`issue`\" pulumi-lang-dotnet=\"`Issue`\" pulumi-lang-go=\"`issue`\" pulumi-lang-python=\"`issue`\" pulumi-lang-yaml=\"`issue`\" pulumi-lang-java=\"`issue`\"\u003e`issue`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`issuewild`\" pulumi-lang-dotnet=\"`Issuewild`\" pulumi-lang-go=\"`issuewild`\" pulumi-lang-python=\"`issuewild`\" pulumi-lang-yaml=\"`issuewild`\" pulumi-lang-java=\"`issuewild`\"\u003e`issuewild`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`iodef`\" pulumi-lang-dotnet=\"`Iodef`\" pulumi-lang-go=\"`iodef`\" pulumi-lang-python=\"`iodef`\" pulumi-lang-yaml=\"`iodef`\" pulumi-lang-java=\"`iodef`\"\u003e`iodef`\u003c/span\u003e.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The time to live for the record, in seconds. Must be at least 0. Defaults to 1800.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of record. Must be one of `A`, `AAAA`, `CAA`, `CNAME`, `MX`, `NS`, `TXT`, or `SRV`.\n"
                },
                "value": {
                    "type": "string",
                    "description": "The value of the record.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight of the record. Only valid when type is `SRV`.  Must be between 0 and 65535.\n"
                }
            },
            "required": [
                "domain",
                "fqdn",
                "name",
                "ttl",
                "type",
                "value"
            ],
            "inputProperties": {
                "domain": {
                    "type": "string",
                    "description": "The domain to add the record to.\n",
                    "willReplaceOnChanges": true
                },
                "flags": {
                    "type": "integer",
                    "description": "The flags of the record. Only valid when type is `CAA`. Must be between 0 and 255.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The hostname of the record. Use `@` for records on domain's name itself.\n"
                },
                "port": {
                    "type": "integer",
                    "description": "The port of the record. Only valid when type is `SRV`.  Must be between 1 and 65535.\n"
                },
                "priority": {
                    "type": "integer",
                    "description": "The priority of the record. Only valid when type is `MX` or `SRV`. Must be between 0 and 65535.\n"
                },
                "tag": {
                    "type": "string",
                    "description": "The tag of the record. Only valid when type is `CAA`. Must be one of \u003cspan pulumi-lang-nodejs=\"`issue`\" pulumi-lang-dotnet=\"`Issue`\" pulumi-lang-go=\"`issue`\" pulumi-lang-python=\"`issue`\" pulumi-lang-yaml=\"`issue`\" pulumi-lang-java=\"`issue`\"\u003e`issue`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`issuewild`\" pulumi-lang-dotnet=\"`Issuewild`\" pulumi-lang-go=\"`issuewild`\" pulumi-lang-python=\"`issuewild`\" pulumi-lang-yaml=\"`issuewild`\" pulumi-lang-java=\"`issuewild`\"\u003e`issuewild`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`iodef`\" pulumi-lang-dotnet=\"`Iodef`\" pulumi-lang-go=\"`iodef`\" pulumi-lang-python=\"`iodef`\" pulumi-lang-yaml=\"`iodef`\" pulumi-lang-java=\"`iodef`\"\u003e`iodef`\u003c/span\u003e.\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The time to live for the record, in seconds. Must be at least 0. Defaults to 1800.\n"
                },
                "type": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:RecordType"
                        }
                    ],
                    "description": "The type of record. Must be one of `A`, `AAAA`, `CAA`, `CNAME`, `MX`, `NS`, `TXT`, or `SRV`.\n",
                    "willReplaceOnChanges": true
                },
                "value": {
                    "type": "string",
                    "description": "The value of the record.\n"
                },
                "weight": {
                    "type": "integer",
                    "description": "The weight of the record. Only valid when type is `SRV`.  Must be between 0 and 65535.\n"
                }
            },
            "requiredInputs": [
                "domain",
                "type",
                "value"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DnsRecord resources.\n",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "The domain to add the record to.\n",
                        "willReplaceOnChanges": true
                    },
                    "flags": {
                        "type": "integer",
                        "description": "The flags of the record. Only valid when type is `CAA`. Must be between 0 and 255.\n"
                    },
                    "fqdn": {
                        "type": "string",
                        "description": "The FQDN of the record\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The hostname of the record. Use `@` for records on domain's name itself.\n"
                    },
                    "port": {
                        "type": "integer",
                        "description": "The port of the record. Only valid when type is `SRV`.  Must be between 1 and 65535.\n"
                    },
                    "priority": {
                        "type": "integer",
                        "description": "The priority of the record. Only valid when type is `MX` or `SRV`. Must be between 0 and 65535.\n"
                    },
                    "tag": {
                        "type": "string",
                        "description": "The tag of the record. Only valid when type is `CAA`. Must be one of \u003cspan pulumi-lang-nodejs=\"`issue`\" pulumi-lang-dotnet=\"`Issue`\" pulumi-lang-go=\"`issue`\" pulumi-lang-python=\"`issue`\" pulumi-lang-yaml=\"`issue`\" pulumi-lang-java=\"`issue`\"\u003e`issue`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`issuewild`\" pulumi-lang-dotnet=\"`Issuewild`\" pulumi-lang-go=\"`issuewild`\" pulumi-lang-python=\"`issuewild`\" pulumi-lang-yaml=\"`issuewild`\" pulumi-lang-java=\"`issuewild`\"\u003e`issuewild`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`iodef`\" pulumi-lang-dotnet=\"`Iodef`\" pulumi-lang-go=\"`iodef`\" pulumi-lang-python=\"`iodef`\" pulumi-lang-yaml=\"`iodef`\" pulumi-lang-java=\"`iodef`\"\u003e`iodef`\u003c/span\u003e.\n"
                    },
                    "ttl": {
                        "type": "integer",
                        "description": "The time to live for the record, in seconds. Must be at least 0. Defaults to 1800.\n"
                    },
                    "type": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:RecordType"
                            }
                        ],
                        "description": "The type of record. Must be one of `A`, `AAAA`, `CAA`, `CNAME`, `MX`, `NS`, `TXT`, or `SRV`.\n",
                        "willReplaceOnChanges": true
                    },
                    "value": {
                        "type": "string",
                        "description": "The value of the record.\n"
                    },
                    "weight": {
                        "type": "integer",
                        "description": "The weight of the record. Only valid when type is `SRV`.  Must be between 0 and 65535.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/domain:Domain": {
            "description": "Provides a DigitalOcean domain resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new domain\nconst _default = new digitalocean.Domain(\"default\", {\n    name: \"example.com\",\n    ipAddress: foo.ipv4Address,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new domain\ndefault = digitalocean.Domain(\"default\",\n    name=\"example.com\",\n    ip_address=foo[\"ipv4Address\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new domain\n    var @default = new DigitalOcean.Domain(\"default\", new()\n    {\n        Name = \"example.com\",\n        IpAddress = foo.Ipv4Address,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a new domain\n\t\t_, err := digitalocean.NewDomain(ctx, \"default\", \u0026digitalocean.DomainArgs{\n\t\t\tName:      pulumi.String(\"example.com\"),\n\t\t\tIpAddress: pulumi.Any(foo.Ipv4Address),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Domain;\nimport com.pulumi.digitalocean.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        // Create a new domain\n        var default_ = new Domain(\"default\", DomainArgs.builder()\n            .name(\"example.com\")\n            .ipAddress(foo.ipv4Address())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new domain\n  default:\n    type: digitalocean:Domain\n    properties:\n      name: example.com\n      ipAddress: ${foo.ipv4Address}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomains can be imported using the `domain name`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/domain:Domain mydomain mytestdomain.com\n```\n\n",
            "properties": {
                "domainUrn": {
                    "type": "string",
                    "description": "The uniform resource name of the domain\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address of the domain. If specified, this IP\nis used to created an initial A record for the domain.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the domain\n"
                },
                "ttl": {
                    "type": "integer",
                    "description": "The TTL value of the domain\n"
                }
            },
            "required": [
                "name",
                "ttl",
                "domainUrn"
            ],
            "inputProperties": {
                "ipAddress": {
                    "type": "string",
                    "description": "The IP address of the domain. If specified, this IP\nis used to created an initial A record for the domain.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the domain\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "name"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Domain resources.\n",
                "properties": {
                    "domainUrn": {
                        "type": "string",
                        "description": "The uniform resource name of the domain\n"
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The IP address of the domain. If specified, this IP\nis used to created an initial A record for the domain.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the domain\n",
                        "willReplaceOnChanges": true
                    },
                    "ttl": {
                        "type": "integer",
                        "description": "The TTL value of the domain\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/droplet:Droplet": {
            "description": "Provides a DigitalOcean Droplet resource. This can be used to create,\nmodify, and delete Droplets. Droplets also support\nprovisioning.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new Web Droplet in the nyc2 region\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-20-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    backups: true,\n    backupPolicy: {\n        plan: \"weekly\",\n        weekday: \"TUE\",\n        hour: 8,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new Web Droplet in the nyc2 region\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-20-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    backups=True,\n    backup_policy={\n        \"plan\": \"weekly\",\n        \"weekday\": \"TUE\",\n        \"hour\": 8,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new Web Droplet in the nyc2 region\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-20-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Backups = true,\n        BackupPolicy = new DigitalOcean.Inputs.DropletBackupPolicyArgs\n        {\n            Plan = \"weekly\",\n            Weekday = \"TUE\",\n            Hour = 8,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a new Web Droplet in the nyc2 region\n\t\t_, err := digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:   pulumi.String(\"ubuntu-20-04-x64\"),\n\t\t\tName:    pulumi.String(\"web-1\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tBackups: pulumi.Bool(true),\n\t\t\tBackupPolicy: \u0026digitalocean.DropletBackupPolicyArgs{\n\t\t\t\tPlan:    pulumi.String(\"weekly\"),\n\t\t\t\tWeekday: pulumi.String(\"TUE\"),\n\t\t\t\tHour:    pulumi.Int(8),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.inputs.DropletBackupPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new Web Droplet in the nyc2 region\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-20-04-x64\")\n            .name(\"web-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .backups(true)\n            .backupPolicy(DropletBackupPolicyArgs.builder()\n                .plan(\"weekly\")\n                .weekday(\"TUE\")\n                .hour(8)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new Web Droplet in the nyc2 region\n  web:\n    type: digitalocean:Droplet\n    properties:\n      image: ubuntu-20-04-x64\n      name: web-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      backups: true\n      backupPolicy:\n        plan: weekly\n        weekday: TUE\n        hour: 8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDroplets can be imported using the Droplet \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/droplet:Droplet mydroplet 100823\n```\n\n",
            "properties": {
                "backupPolicy": {
                    "$ref": "#/types/digitalocean:index/DropletBackupPolicy:DropletBackupPolicy",
                    "description": "An object specifying the backup policy for the Droplet. If omitted and \u003cspan pulumi-lang-nodejs=\"`backups`\" pulumi-lang-dotnet=\"`Backups`\" pulumi-lang-go=\"`backups`\" pulumi-lang-python=\"`backups`\" pulumi-lang-yaml=\"`backups`\" pulumi-lang-java=\"`backups`\"\u003e`backups`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the backup plan will default to daily.\n"
                },
                "backups": {
                    "type": "boolean",
                    "description": "Boolean controlling if backups are made. Defaults to\nfalse.\n"
                },
                "createdAt": {
                    "type": "string"
                },
                "disk": {
                    "type": "integer",
                    "description": "The size of the instance's disk in GB\n"
                },
                "dropletAgent": {
                    "type": "boolean",
                    "description": "A boolean indicating whether to install the\nDigitalOcean agent used for providing access to the Droplet web console in\nthe control panel. By default, the agent is installed on new Droplets but\ninstallation errors (i.e. OS not supported) are ignored. To prevent it from\nbeing installed, set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. To make installation errors fatal, explicitly\nset it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"
                },
                "dropletUrn": {
                    "type": "string",
                    "description": "The uniform resource name of the Droplet\n"
                },
                "gracefulShutdown": {
                    "type": "boolean",
                    "description": "A boolean indicating whether the droplet\nshould be gracefully shut down before it is deleted.\n\n\u003e **NOTE:** If you use \u003cspan pulumi-lang-nodejs=\"`volumeIds`\" pulumi-lang-dotnet=\"`VolumeIds`\" pulumi-lang-go=\"`volumeIds`\" pulumi-lang-python=\"`volume_ids`\" pulumi-lang-yaml=\"`volumeIds`\" pulumi-lang-java=\"`volumeIds`\"\u003e`volume_ids`\u003c/span\u003e on a Droplet, Terraform will assume management over the full set volumes for the instance, and treat additional volumes as a drift. For this reason, \u003cspan pulumi-lang-nodejs=\"`volumeIds`\" pulumi-lang-dotnet=\"`VolumeIds`\" pulumi-lang-go=\"`volumeIds`\" pulumi-lang-python=\"`volume_ids`\" pulumi-lang-yaml=\"`volumeIds`\" pulumi-lang-java=\"`volumeIds`\"\u003e`volume_ids`\u003c/span\u003e must not be mixed with external \u003cspan pulumi-lang-nodejs=\"`digitalocean.VolumeAttachment`\" pulumi-lang-dotnet=\"`digitalocean.VolumeAttachment`\" pulumi-lang-go=\"`VolumeAttachment`\" pulumi-lang-python=\"`VolumeAttachment`\" pulumi-lang-yaml=\"`digitalocean.VolumeAttachment`\" pulumi-lang-java=\"`digitalocean.VolumeAttachment`\"\u003e`digitalocean.VolumeAttachment`\u003c/span\u003e resources for a given instance.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The Droplet image ID or slug. This could be either image ID or droplet snapshot ID. You can find image IDs and slugs using the [DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Images).\n"
                },
                "ipv4Address": {
                    "type": "string",
                    "description": "The IPv4 address\n"
                },
                "ipv4AddressPrivate": {
                    "type": "string",
                    "description": "The private networking IPv4 address\n"
                },
                "ipv6": {
                    "type": "boolean",
                    "description": "Boolean controlling if IPv6 is enabled. Defaults to false.\nOnce enabled for a Droplet, IPv6 can not be disabled. When enabling IPv6 on\nan existing Droplet, [additional OS-level configuration](https://docs.digitalocean.com/products/networking/ipv6/how-to/enable/#on-existing-droplets)\nis required.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "The IPv6 address\n"
                },
                "locked": {
                    "type": "boolean",
                    "description": "Is the Droplet locked\n"
                },
                "memory": {
                    "type": "integer"
                },
                "monitoring": {
                    "type": "boolean",
                    "description": "Boolean controlling whether monitoring agent is installed.\nDefaults to false. If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, you can configure monitor alert policies\n[monitor alert resource](https://www.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/monitor_alert)\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Droplet name.\n"
                },
                "priceHourly": {
                    "type": "number",
                    "description": "Droplet hourly price\n"
                },
                "priceMonthly": {
                    "type": "number",
                    "description": "Droplet monthly price\n"
                },
                "privateNetworking": {
                    "type": "boolean",
                    "description": "**Deprecated** Boolean controlling if private networking\nis enabled. This parameter has been deprecated. Use \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e instead to specify a VPC network for the Droplet. If no \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e is provided, the Droplet will be placed in your account's default VPC for the region.\n",
                    "deprecationMessage": "This parameter has been deprecated. Use \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e instead to specify a VPC network for the Droplet. If no \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e is provided, the Droplet will be placed in your account's default VPC for the region."
                },
                "region": {
                    "type": "string",
                    "description": "The region where the Droplet will be created.\n"
                },
                "resizeDisk": {
                    "type": "boolean",
                    "description": "Boolean controlling whether to increase the disk\nsize when resizing a Droplet. It defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. When set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e,\nonly the Droplet's RAM and CPU will be resized. **Increasing a Droplet's disk\nsize is a permanent change**. Increasing only RAM and CPU is reversible.\n"
                },
                "size": {
                    "type": "string",
                    "description": "The unique slug that identifies the type of Droplet. You may list the available slugs using the [DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Sizes).\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of SSH key IDs or fingerprints to enable in\nthe format `[12345, 123456]`. To retrieve this info, use the\n[DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/SSH-Keys)\nor CLI (`doctl compute ssh-key list`). Once a Droplet is created keys can not\nbe added or removed via this provider. Modifying this field will prompt you\nto destroy and recreate the Droplet.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the Droplet\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the tags to be applied to this Droplet.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "A string of the desired User Data provided [during Droplet creation](https://docs.digitalocean.com/products/droplets/how-to/provide-user-data/). Changing this forces a new resource to be created.\n"
                },
                "vcpus": {
                    "type": "integer",
                    "description": "The number of the instance's virtual CPUs\n"
                },
                "volumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the IDs of each [block storage volume](https://www.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/volume) to be attached to the Droplet.\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the Droplet will be located.\n"
                }
            },
            "required": [
                "createdAt",
                "disk",
                "image",
                "ipv4Address",
                "ipv4AddressPrivate",
                "ipv6Address",
                "locked",
                "memory",
                "name",
                "priceHourly",
                "priceMonthly",
                "privateNetworking",
                "region",
                "size",
                "status",
                "dropletUrn",
                "vcpus",
                "volumeIds",
                "vpcUuid"
            ],
            "inputProperties": {
                "backupPolicy": {
                    "$ref": "#/types/digitalocean:index/DropletBackupPolicy:DropletBackupPolicy",
                    "description": "An object specifying the backup policy for the Droplet. If omitted and \u003cspan pulumi-lang-nodejs=\"`backups`\" pulumi-lang-dotnet=\"`Backups`\" pulumi-lang-go=\"`backups`\" pulumi-lang-python=\"`backups`\" pulumi-lang-yaml=\"`backups`\" pulumi-lang-java=\"`backups`\"\u003e`backups`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the backup plan will default to daily.\n"
                },
                "backups": {
                    "type": "boolean",
                    "description": "Boolean controlling if backups are made. Defaults to\nfalse.\n"
                },
                "dropletAgent": {
                    "type": "boolean",
                    "description": "A boolean indicating whether to install the\nDigitalOcean agent used for providing access to the Droplet web console in\nthe control panel. By default, the agent is installed on new Droplets but\ninstallation errors (i.e. OS not supported) are ignored. To prevent it from\nbeing installed, set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. To make installation errors fatal, explicitly\nset it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n",
                    "willReplaceOnChanges": true
                },
                "gracefulShutdown": {
                    "type": "boolean",
                    "description": "A boolean indicating whether the droplet\nshould be gracefully shut down before it is deleted.\n\n\u003e **NOTE:** If you use \u003cspan pulumi-lang-nodejs=\"`volumeIds`\" pulumi-lang-dotnet=\"`VolumeIds`\" pulumi-lang-go=\"`volumeIds`\" pulumi-lang-python=\"`volume_ids`\" pulumi-lang-yaml=\"`volumeIds`\" pulumi-lang-java=\"`volumeIds`\"\u003e`volume_ids`\u003c/span\u003e on a Droplet, Terraform will assume management over the full set volumes for the instance, and treat additional volumes as a drift. For this reason, \u003cspan pulumi-lang-nodejs=\"`volumeIds`\" pulumi-lang-dotnet=\"`VolumeIds`\" pulumi-lang-go=\"`volumeIds`\" pulumi-lang-python=\"`volume_ids`\" pulumi-lang-yaml=\"`volumeIds`\" pulumi-lang-java=\"`volumeIds`\"\u003e`volume_ids`\u003c/span\u003e must not be mixed with external \u003cspan pulumi-lang-nodejs=\"`digitalocean.VolumeAttachment`\" pulumi-lang-dotnet=\"`digitalocean.VolumeAttachment`\" pulumi-lang-go=\"`VolumeAttachment`\" pulumi-lang-python=\"`VolumeAttachment`\" pulumi-lang-yaml=\"`digitalocean.VolumeAttachment`\" pulumi-lang-java=\"`digitalocean.VolumeAttachment`\"\u003e`digitalocean.VolumeAttachment`\u003c/span\u003e resources for a given instance.\n"
                },
                "image": {
                    "type": "string",
                    "description": "The Droplet image ID or slug. This could be either image ID or droplet snapshot ID. You can find image IDs and slugs using the [DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Images).\n",
                    "willReplaceOnChanges": true
                },
                "ipv6": {
                    "type": "boolean",
                    "description": "Boolean controlling if IPv6 is enabled. Defaults to false.\nOnce enabled for a Droplet, IPv6 can not be disabled. When enabling IPv6 on\nan existing Droplet, [additional OS-level configuration](https://docs.digitalocean.com/products/networking/ipv6/how-to/enable/#on-existing-droplets)\nis required.\n"
                },
                "ipv6Address": {
                    "type": "string",
                    "description": "The IPv6 address\n"
                },
                "monitoring": {
                    "type": "boolean",
                    "description": "Boolean controlling whether monitoring agent is installed.\nDefaults to false. If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, you can configure monitor alert policies\n[monitor alert resource](https://www.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/monitor_alert)\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The Droplet name.\n"
                },
                "privateNetworking": {
                    "type": "boolean",
                    "description": "**Deprecated** Boolean controlling if private networking\nis enabled. This parameter has been deprecated. Use \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e instead to specify a VPC network for the Droplet. If no \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e is provided, the Droplet will be placed in your account's default VPC for the region.\n",
                    "deprecationMessage": "This parameter has been deprecated. Use \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e instead to specify a VPC network for the Droplet. If no \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e is provided, the Droplet will be placed in your account's default VPC for the region."
                },
                "region": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:Region"
                        }
                    ],
                    "description": "The region where the Droplet will be created.\n",
                    "willReplaceOnChanges": true
                },
                "resizeDisk": {
                    "type": "boolean",
                    "description": "Boolean controlling whether to increase the disk\nsize when resizing a Droplet. It defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. When set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e,\nonly the Droplet's RAM and CPU will be resized. **Increasing a Droplet's disk\nsize is a permanent change**. Increasing only RAM and CPU is reversible.\n"
                },
                "size": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:DropletSlug"
                        }
                    ],
                    "description": "The unique slug that identifies the type of Droplet. You may list the available slugs using the [DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Sizes).\n"
                },
                "sshKeys": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of SSH key IDs or fingerprints to enable in\nthe format `[12345, 123456]`. To retrieve this info, use the\n[DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/SSH-Keys)\nor CLI (`doctl compute ssh-key list`). Once a Droplet is created keys can not\nbe added or removed via this provider. Modifying this field will prompt you\nto destroy and recreate the Droplet.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the tags to be applied to this Droplet.\n"
                },
                "userData": {
                    "type": "string",
                    "description": "A string of the desired User Data provided [during Droplet creation](https://docs.digitalocean.com/products/droplets/how-to/provide-user-data/). Changing this forces a new resource to be created.\n",
                    "willReplaceOnChanges": true
                },
                "volumeIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the IDs of each [block storage volume](https://www.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/volume) to be attached to the Droplet.\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the Droplet will be located.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "image",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Droplet resources.\n",
                "properties": {
                    "backupPolicy": {
                        "$ref": "#/types/digitalocean:index/DropletBackupPolicy:DropletBackupPolicy",
                        "description": "An object specifying the backup policy for the Droplet. If omitted and \u003cspan pulumi-lang-nodejs=\"`backups`\" pulumi-lang-dotnet=\"`Backups`\" pulumi-lang-go=\"`backups`\" pulumi-lang-python=\"`backups`\" pulumi-lang-yaml=\"`backups`\" pulumi-lang-java=\"`backups`\"\u003e`backups`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the backup plan will default to daily.\n"
                    },
                    "backups": {
                        "type": "boolean",
                        "description": "Boolean controlling if backups are made. Defaults to\nfalse.\n"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "disk": {
                        "type": "integer",
                        "description": "The size of the instance's disk in GB\n"
                    },
                    "dropletAgent": {
                        "type": "boolean",
                        "description": "A boolean indicating whether to install the\nDigitalOcean agent used for providing access to the Droplet web console in\nthe control panel. By default, the agent is installed on new Droplets but\ninstallation errors (i.e. OS not supported) are ignored. To prevent it from\nbeing installed, set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. To make installation errors fatal, explicitly\nset it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n",
                        "willReplaceOnChanges": true
                    },
                    "dropletUrn": {
                        "type": "string",
                        "description": "The uniform resource name of the Droplet\n"
                    },
                    "gracefulShutdown": {
                        "type": "boolean",
                        "description": "A boolean indicating whether the droplet\nshould be gracefully shut down before it is deleted.\n\n\u003e **NOTE:** If you use \u003cspan pulumi-lang-nodejs=\"`volumeIds`\" pulumi-lang-dotnet=\"`VolumeIds`\" pulumi-lang-go=\"`volumeIds`\" pulumi-lang-python=\"`volume_ids`\" pulumi-lang-yaml=\"`volumeIds`\" pulumi-lang-java=\"`volumeIds`\"\u003e`volume_ids`\u003c/span\u003e on a Droplet, Terraform will assume management over the full set volumes for the instance, and treat additional volumes as a drift. For this reason, \u003cspan pulumi-lang-nodejs=\"`volumeIds`\" pulumi-lang-dotnet=\"`VolumeIds`\" pulumi-lang-go=\"`volumeIds`\" pulumi-lang-python=\"`volume_ids`\" pulumi-lang-yaml=\"`volumeIds`\" pulumi-lang-java=\"`volumeIds`\"\u003e`volume_ids`\u003c/span\u003e must not be mixed with external \u003cspan pulumi-lang-nodejs=\"`digitalocean.VolumeAttachment`\" pulumi-lang-dotnet=\"`digitalocean.VolumeAttachment`\" pulumi-lang-go=\"`VolumeAttachment`\" pulumi-lang-python=\"`VolumeAttachment`\" pulumi-lang-yaml=\"`digitalocean.VolumeAttachment`\" pulumi-lang-java=\"`digitalocean.VolumeAttachment`\"\u003e`digitalocean.VolumeAttachment`\u003c/span\u003e resources for a given instance.\n"
                    },
                    "image": {
                        "type": "string",
                        "description": "The Droplet image ID or slug. This could be either image ID or droplet snapshot ID. You can find image IDs and slugs using the [DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Images).\n",
                        "willReplaceOnChanges": true
                    },
                    "ipv4Address": {
                        "type": "string",
                        "description": "The IPv4 address\n"
                    },
                    "ipv4AddressPrivate": {
                        "type": "string",
                        "description": "The private networking IPv4 address\n"
                    },
                    "ipv6": {
                        "type": "boolean",
                        "description": "Boolean controlling if IPv6 is enabled. Defaults to false.\nOnce enabled for a Droplet, IPv6 can not be disabled. When enabling IPv6 on\nan existing Droplet, [additional OS-level configuration](https://docs.digitalocean.com/products/networking/ipv6/how-to/enable/#on-existing-droplets)\nis required.\n"
                    },
                    "ipv6Address": {
                        "type": "string",
                        "description": "The IPv6 address\n"
                    },
                    "locked": {
                        "type": "boolean",
                        "description": "Is the Droplet locked\n"
                    },
                    "memory": {
                        "type": "integer"
                    },
                    "monitoring": {
                        "type": "boolean",
                        "description": "Boolean controlling whether monitoring agent is installed.\nDefaults to false. If set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, you can configure monitor alert policies\n[monitor alert resource](https://www.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/monitor_alert)\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The Droplet name.\n"
                    },
                    "priceHourly": {
                        "type": "number",
                        "description": "Droplet hourly price\n"
                    },
                    "priceMonthly": {
                        "type": "number",
                        "description": "Droplet monthly price\n"
                    },
                    "privateNetworking": {
                        "type": "boolean",
                        "description": "**Deprecated** Boolean controlling if private networking\nis enabled. This parameter has been deprecated. Use \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e instead to specify a VPC network for the Droplet. If no \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e is provided, the Droplet will be placed in your account's default VPC for the region.\n",
                        "deprecationMessage": "This parameter has been deprecated. Use \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e instead to specify a VPC network for the Droplet. If no \u003cspan pulumi-lang-nodejs=\"`vpcUuid`\" pulumi-lang-dotnet=\"`VpcUuid`\" pulumi-lang-go=\"`vpcUuid`\" pulumi-lang-python=\"`vpc_uuid`\" pulumi-lang-yaml=\"`vpcUuid`\" pulumi-lang-java=\"`vpcUuid`\"\u003e`vpc_uuid`\u003c/span\u003e is provided, the Droplet will be placed in your account's default VPC for the region."
                    },
                    "region": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:Region"
                            }
                        ],
                        "description": "The region where the Droplet will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "resizeDisk": {
                        "type": "boolean",
                        "description": "Boolean controlling whether to increase the disk\nsize when resizing a Droplet. It defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e. When set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e,\nonly the Droplet's RAM and CPU will be resized. **Increasing a Droplet's disk\nsize is a permanent change**. Increasing only RAM and CPU is reversible.\n"
                    },
                    "size": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:DropletSlug"
                            }
                        ],
                        "description": "The unique slug that identifies the type of Droplet. You may list the available slugs using the [DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Sizes).\n"
                    },
                    "sshKeys": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of SSH key IDs or fingerprints to enable in\nthe format `[12345, 123456]`. To retrieve this info, use the\n[DigitalOcean API](https://docs.digitalocean.com/reference/api/digitalocean/#tag/SSH-Keys)\nor CLI (`doctl compute ssh-key list`). Once a Droplet is created keys can not\nbe added or removed via this provider. Modifying this field will prompt you\nto destroy and recreate the Droplet.\n",
                        "willReplaceOnChanges": true
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the Droplet\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of the tags to be applied to this Droplet.\n"
                    },
                    "userData": {
                        "type": "string",
                        "description": "A string of the desired User Data provided [during Droplet creation](https://docs.digitalocean.com/products/droplets/how-to/provide-user-data/). Changing this forces a new resource to be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "vcpus": {
                        "type": "integer",
                        "description": "The number of the instance's virtual CPUs\n"
                    },
                    "volumeIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of the IDs of each [block storage volume](https://www.terraform.io/providers/digitalocean/digitalocean/latest/docs/resources/volume) to be attached to the Droplet.\n"
                    },
                    "vpcUuid": {
                        "type": "string",
                        "description": "The ID of the VPC where the Droplet will be located.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/dropletAutoscale:DropletAutoscale": {
            "description": "Provides a DigitalOcean Droplet Autoscale resource. This can be used to create, modify, \nread and delete Droplet Autoscale pools.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\nconst my_ssh_key = new digitalocean.SshKey(\"my-ssh-key\", {\n    name: \"terraform-example\",\n    publicKey: std.file({\n        input: \"/Users/terraform/.ssh/id_rsa.pub\",\n    }).then(invoke =\u003e invoke.result),\n});\nconst my_tag = new digitalocean.Tag(\"my-tag\", {name: \"terraform-example\"});\nconst my_autoscale_pool = new digitalocean.DropletAutoscale(\"my-autoscale-pool\", {\n    name: \"terraform-example\",\n    config: {\n        minInstances: 10,\n        maxInstances: 50,\n        targetCpuUtilization: 0.5,\n        targetMemoryUtilization: 0.5,\n        cooldownMinutes: 5,\n    },\n    dropletTemplate: {\n        size: \"c-2\",\n        region: \"nyc3\",\n        image: \"ubuntu-24-04-x64\",\n        tags: [my_tag.id],\n        sshKeys: [my_ssh_key.id],\n        withDropletAgent: true,\n        ipv6: true,\n        userData: `\n#cloud-config\nruncmd:\n- apt-get update\n- apt-get install -y stress-ng\n`,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\nmy_ssh_key = digitalocean.SshKey(\"my-ssh-key\",\n    name=\"terraform-example\",\n    public_key=std.file(input=\"/Users/terraform/.ssh/id_rsa.pub\").result)\nmy_tag = digitalocean.Tag(\"my-tag\", name=\"terraform-example\")\nmy_autoscale_pool = digitalocean.DropletAutoscale(\"my-autoscale-pool\",\n    name=\"terraform-example\",\n    config={\n        \"min_instances\": 10,\n        \"max_instances\": 50,\n        \"target_cpu_utilization\": 0.5,\n        \"target_memory_utilization\": 0.5,\n        \"cooldown_minutes\": 5,\n    },\n    droplet_template={\n        \"size\": \"c-2\",\n        \"region\": \"nyc3\",\n        \"image\": \"ubuntu-24-04-x64\",\n        \"tags\": [my_tag.id],\n        \"ssh_keys\": [my_ssh_key.id],\n        \"with_droplet_agent\": True,\n        \"ipv6\": True,\n        \"user_data\": \"\"\"\n#cloud-config\nruncmd:\n- apt-get update\n- apt-get install -y stress-ng\n\"\"\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_ssh_key = new DigitalOcean.SshKey(\"my-ssh-key\", new()\n    {\n        Name = \"terraform-example\",\n        PublicKey = Std.File.Invoke(new()\n        {\n            Input = \"/Users/terraform/.ssh/id_rsa.pub\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n    var my_tag = new DigitalOcean.Tag(\"my-tag\", new()\n    {\n        Name = \"terraform-example\",\n    });\n\n    var my_autoscale_pool = new DigitalOcean.DropletAutoscale(\"my-autoscale-pool\", new()\n    {\n        Name = \"terraform-example\",\n        Config = new DigitalOcean.Inputs.DropletAutoscaleConfigArgs\n        {\n            MinInstances = 10,\n            MaxInstances = 50,\n            TargetCpuUtilization = 0.5,\n            TargetMemoryUtilization = 0.5,\n            CooldownMinutes = 5,\n        },\n        DropletTemplate = new DigitalOcean.Inputs.DropletAutoscaleDropletTemplateArgs\n        {\n            Size = \"c-2\",\n            Region = \"nyc3\",\n            Image = \"ubuntu-24-04-x64\",\n            Tags = new[]\n            {\n                my_tag.Id,\n            },\n            SshKeys = new[]\n            {\n                my_ssh_key.Id,\n            },\n            WithDropletAgent = true,\n            Ipv6 = true,\n            UserData = @\"\n#cloud-config\nruncmd:\n- apt-get update\n- apt-get install -y stress-ng\n\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/terraform/.ssh/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmy_ssh_key, err := digitalocean.NewSshKey(ctx, \"my-ssh-key\", \u0026digitalocean.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"terraform-example\"),\n\t\t\tPublicKey: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmy_tag, err := digitalocean.NewTag(ctx, \"my-tag\", \u0026digitalocean.TagArgs{\n\t\t\tName: pulumi.String(\"terraform-example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDropletAutoscale(ctx, \"my-autoscale-pool\", \u0026digitalocean.DropletAutoscaleArgs{\n\t\t\tName: pulumi.String(\"terraform-example\"),\n\t\t\tConfig: \u0026digitalocean.DropletAutoscaleConfigArgs{\n\t\t\t\tMinInstances:            pulumi.Int(10),\n\t\t\t\tMaxInstances:            pulumi.Int(50),\n\t\t\t\tTargetCpuUtilization:    pulumi.Float64(0.5),\n\t\t\t\tTargetMemoryUtilization: pulumi.Float64(0.5),\n\t\t\t\tCooldownMinutes:         pulumi.Int(5),\n\t\t\t},\n\t\t\tDropletTemplate: \u0026digitalocean.DropletAutoscaleDropletTemplateArgs{\n\t\t\t\tSize:   pulumi.String(\"c-2\"),\n\t\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t\t\tImage:  pulumi.String(\"ubuntu-24-04-x64\"),\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tmy_tag.ID(),\n\t\t\t\t},\n\t\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\t\tmy_ssh_key.ID(),\n\t\t\t\t},\n\t\t\t\tWithDropletAgent: pulumi.Bool(true),\n\t\t\t\tIpv6:             pulumi.Bool(true),\n\t\t\t\tUserData: pulumi.String(`\n#cloud-config\nruncmd:\n- apt-get update\n- apt-get install -y stress-ng\n`),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SshKey;\nimport com.pulumi.digitalocean.SshKeyArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.digitalocean.Tag;\nimport com.pulumi.digitalocean.TagArgs;\nimport com.pulumi.digitalocean.DropletAutoscale;\nimport com.pulumi.digitalocean.DropletAutoscaleArgs;\nimport com.pulumi.digitalocean.inputs.DropletAutoscaleConfigArgs;\nimport com.pulumi.digitalocean.inputs.DropletAutoscaleDropletTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_ssh_key = new SshKey(\"my-ssh-key\", SshKeyArgs.builder()\n            .name(\"terraform-example\")\n            .publicKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/terraform/.ssh/id_rsa.pub\")\n                .build()).result())\n            .build());\n\n        var my_tag = new Tag(\"my-tag\", TagArgs.builder()\n            .name(\"terraform-example\")\n            .build());\n\n        var my_autoscale_pool = new DropletAutoscale(\"my-autoscale-pool\", DropletAutoscaleArgs.builder()\n            .name(\"terraform-example\")\n            .config(DropletAutoscaleConfigArgs.builder()\n                .minInstances(10)\n                .maxInstances(50)\n                .targetCpuUtilization(0.5)\n                .targetMemoryUtilization(0.5)\n                .cooldownMinutes(5)\n                .build())\n            .dropletTemplate(DropletAutoscaleDropletTemplateArgs.builder()\n                .size(\"c-2\")\n                .region(\"nyc3\")\n                .image(\"ubuntu-24-04-x64\")\n                .tags(my_tag.id())\n                .sshKeys(my_ssh_key.id())\n                .withDropletAgent(true)\n                .ipv6(true)\n                .userData(\"\"\"\n\n#cloud-config\nruncmd:\n- apt-get update\n- apt-get install -y stress-ng\n                \"\"\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-ssh-key:\n    type: digitalocean:SshKey\n    properties:\n      name: terraform-example\n      publicKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/terraform/.ssh/id_rsa.pub\n          return: result\n  my-tag:\n    type: digitalocean:Tag\n    properties:\n      name: terraform-example\n  my-autoscale-pool:\n    type: digitalocean:DropletAutoscale\n    properties:\n      name: terraform-example\n      config:\n        minInstances: 10\n        maxInstances: 50\n        targetCpuUtilization: 0.5\n        targetMemoryUtilization: 0.5\n        cooldownMinutes: 5\n      dropletTemplate:\n        size: c-2\n        region: nyc3\n        image: ubuntu-24-04-x64\n        tags:\n          - ${[\"my-tag\"].id}\n        sshKeys:\n          - ${[\"my-ssh-key\"].id}\n        withDropletAgent: true\n        ipv6: true\n        userData: |2\n          #cloud-config\n          runcmd:\n          - apt-get update\n          - apt-get install -y stress-ng\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDroplet Autoscale pools can be imported using their \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/dropletAutoscale:DropletAutoscale my-autoscale-pool 38e66834-d741-47ec-88e7-c70cbdcz0445\n```\n\n",
            "properties": {
                "config": {
                    "$ref": "#/types/digitalocean:index/DropletAutoscaleConfig:DropletAutoscaleConfig",
                    "description": "The configuration parameters for Droplet Autoscale pool, the supported arguments are \ndocumented below.\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Created at timestamp for the Droplet Autoscale pool.\n"
                },
                "currentUtilizations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/DropletAutoscaleCurrentUtilization:DropletAutoscaleCurrentUtilization"
                    },
                    "description": "The current average resource utilization of the Droplet Autoscale pool, this attribute further\nembeds \u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`cpu`\" pulumi-lang-dotnet=\"`Cpu`\" pulumi-lang-go=\"`cpu`\" pulumi-lang-python=\"`cpu`\" pulumi-lang-yaml=\"`cpu`\" pulumi-lang-java=\"`cpu`\"\u003e`cpu`\u003c/span\u003e attributes to respectively report utilization data.\n"
                },
                "dropletTemplate": {
                    "$ref": "#/types/digitalocean:index/DropletAutoscaleDropletTemplate:DropletAutoscaleDropletTemplate",
                    "description": "The droplet template parameters for Droplet Autoscale pool, the supported arguments \nare documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Droplet Autoscale pool.\n"
                },
                "status": {
                    "type": "string",
                    "description": "Droplet Autoscale pool health status; this reflects if the pool is currently healthy and ready to accept\ntraffic, or in an error state and needs user intervention.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated at timestamp for the Droplet Autoscale pool.\n"
                }
            },
            "required": [
                "config",
                "createdAt",
                "currentUtilizations",
                "dropletTemplate",
                "name",
                "status",
                "updatedAt"
            ],
            "inputProperties": {
                "config": {
                    "$ref": "#/types/digitalocean:index/DropletAutoscaleConfig:DropletAutoscaleConfig",
                    "description": "The configuration parameters for Droplet Autoscale pool, the supported arguments are \ndocumented below.\n"
                },
                "dropletTemplate": {
                    "$ref": "#/types/digitalocean:index/DropletAutoscaleDropletTemplate:DropletAutoscaleDropletTemplate",
                    "description": "The droplet template parameters for Droplet Autoscale pool, the supported arguments \nare documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Droplet Autoscale pool.\n"
                }
            },
            "requiredInputs": [
                "config",
                "dropletTemplate"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DropletAutoscale resources.\n",
                "properties": {
                    "config": {
                        "$ref": "#/types/digitalocean:index/DropletAutoscaleConfig:DropletAutoscaleConfig",
                        "description": "The configuration parameters for Droplet Autoscale pool, the supported arguments are \ndocumented below.\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Created at timestamp for the Droplet Autoscale pool.\n"
                    },
                    "currentUtilizations": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/DropletAutoscaleCurrentUtilization:DropletAutoscaleCurrentUtilization"
                        },
                        "description": "The current average resource utilization of the Droplet Autoscale pool, this attribute further\nembeds \u003cspan pulumi-lang-nodejs=\"`memory`\" pulumi-lang-dotnet=\"`Memory`\" pulumi-lang-go=\"`memory`\" pulumi-lang-python=\"`memory`\" pulumi-lang-yaml=\"`memory`\" pulumi-lang-java=\"`memory`\"\u003e`memory`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`cpu`\" pulumi-lang-dotnet=\"`Cpu`\" pulumi-lang-go=\"`cpu`\" pulumi-lang-python=\"`cpu`\" pulumi-lang-yaml=\"`cpu`\" pulumi-lang-java=\"`cpu`\"\u003e`cpu`\u003c/span\u003e attributes to respectively report utilization data.\n"
                    },
                    "dropletTemplate": {
                        "$ref": "#/types/digitalocean:index/DropletAutoscaleDropletTemplate:DropletAutoscaleDropletTemplate",
                        "description": "The droplet template parameters for Droplet Autoscale pool, the supported arguments \nare documented below.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Droplet Autoscale pool.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "Droplet Autoscale pool health status; this reflects if the pool is currently healthy and ready to accept\ntraffic, or in an error state and needs user intervention.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Updated at timestamp for the Droplet Autoscale pool.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/dropletSnapshot:DropletSnapshot": {
            "description": "Provides a resource which can be used to create a snapshot from an existing DigitalOcean Droplet.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web = new digitalocean.Droplet(\"web\", {\n    name: \"web-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-22-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst web_snapshot = new digitalocean.DropletSnapshot(\"web-snapshot\", {\n    dropletId: web.id,\n    name: \"web-snapshot-01\",\n});\nconst from_snapshot = new digitalocean.Droplet(\"from-snapshot\", {\n    image: web_snapshot.id,\n    name: \"web-02\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS2VCPU4GB,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb = digitalocean.Droplet(\"web\",\n    name=\"web-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-22-04-x64\",\n    region=digitalocean.Region.NYC3)\nweb_snapshot = digitalocean.DropletSnapshot(\"web-snapshot\",\n    droplet_id=web.id,\n    name=\"web-snapshot-01\")\nfrom_snapshot = digitalocean.Droplet(\"from-snapshot\",\n    image=web_snapshot.id,\n    name=\"web-02\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S2_VCPU4_GB)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Name = \"web-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-22-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var web_snapshot = new DigitalOcean.DropletSnapshot(\"web-snapshot\", new()\n    {\n        DropletId = web.Id,\n        Name = \"web-snapshot-01\",\n    });\n\n    var from_snapshot = new DigitalOcean.Droplet(\"from-snapshot\", new()\n    {\n        Image = web_snapshot.Id,\n        Name = \"web-02\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS2VCPU4GB,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb, err := digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"web-01\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-22-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tweb_snapshot, err := digitalocean.NewDropletSnapshot(ctx, \"web-snapshot\", \u0026digitalocean.DropletSnapshotArgs{\n\t\t\tDropletId: web.ID(),\n\t\t\tName:      pulumi.String(\"web-snapshot-01\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"from-snapshot\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  web_snapshot.ID(),\n\t\t\tName:   pulumi.String(\"web-02\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS2VCPU4GB),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.DropletSnapshot;\nimport com.pulumi.digitalocean.DropletSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .name(\"web-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-22-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var web_snapshot = new DropletSnapshot(\"web-snapshot\", DropletSnapshotArgs.builder()\n            .dropletId(web.id())\n            .name(\"web-snapshot-01\")\n            .build());\n\n        var from_snapshot = new Droplet(\"from-snapshot\", DropletArgs.builder()\n            .image(web_snapshot.id())\n            .name(\"web-02\")\n            .region(\"nyc3\")\n            .size(\"s-2vcpu-4gb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web:\n    type: digitalocean:Droplet\n    properties:\n      name: web-01\n      size: s-1vcpu-1gb\n      image: ubuntu-22-04-x64\n      region: nyc3\n  web-snapshot:\n    type: digitalocean:DropletSnapshot\n    properties:\n      dropletId: ${web.id}\n      name: web-snapshot-01\n  from-snapshot:\n    type: digitalocean:Droplet\n    properties:\n      image: ${[\"web-snapshot\"].id}\n      name: web-02\n      region: nyc3\n      size: s-2vcpu-4gb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDroplet Snapshots can be imported using the `snapshot id`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/dropletSnapshot:DropletSnapshot mysnapshot 123456\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the Droplet snapshot was created.\n"
                },
                "dropletId": {
                    "type": "string",
                    "description": "The ID of the Droplet from which the snapshot will be taken.\n"
                },
                "minDiskSize": {
                    "type": "integer",
                    "description": "The minimum size in gigabytes required for a Droplet to be created based on this snapshot.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the Droplet snapshot.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of DigitalOcean region \"slugs\" indicating where the droplet snapshot is available.\n"
                },
                "size": {
                    "type": "number",
                    "description": "The billable size of the Droplet snapshot in gigabytes.\n"
                }
            },
            "required": [
                "createdAt",
                "dropletId",
                "minDiskSize",
                "name",
                "regions",
                "size"
            ],
            "inputProperties": {
                "dropletId": {
                    "type": "string",
                    "description": "The ID of the Droplet from which the snapshot will be taken.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "A name for the Droplet snapshot.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "dropletId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering DropletSnapshot resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the Droplet snapshot was created.\n"
                    },
                    "dropletId": {
                        "type": "string",
                        "description": "The ID of the Droplet from which the snapshot will be taken.\n",
                        "willReplaceOnChanges": true
                    },
                    "minDiskSize": {
                        "type": "integer",
                        "description": "The minimum size in gigabytes required for a Droplet to be created based on this snapshot.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the Droplet snapshot.\n",
                        "willReplaceOnChanges": true
                    },
                    "regions": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of DigitalOcean region \"slugs\" indicating where the droplet snapshot is available.\n"
                    },
                    "size": {
                        "type": "number",
                        "description": "The billable size of the Droplet snapshot in gigabytes.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/firewall:Firewall": {
            "description": "Provides a DigitalOcean Cloud Firewall resource. This can be used to create,\nmodify, and delete Firewalls.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web = new digitalocean.Droplet(\"web\", {\n    name: \"web-1\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst webFirewall = new digitalocean.Firewall(\"web\", {\n    name: \"only-22-80-and-443\",\n    dropletIds: [web.id],\n    inboundRules: [\n        {\n            protocol: \"tcp\",\n            portRange: \"22\",\n            sourceAddresses: [\n                \"192.168.1.0/24\",\n                \"2002:1:2::/48\",\n            ],\n        },\n        {\n            protocol: \"tcp\",\n            portRange: \"80\",\n            sourceAddresses: [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            protocol: \"tcp\",\n            portRange: \"443\",\n            sourceAddresses: [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            protocol: \"icmp\",\n            sourceAddresses: [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n    ],\n    outboundRules: [\n        {\n            protocol: \"tcp\",\n            portRange: \"53\",\n            destinationAddresses: [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            protocol: \"udp\",\n            portRange: \"53\",\n            destinationAddresses: [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            protocol: \"icmp\",\n            destinationAddresses: [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb = digitalocean.Droplet(\"web\",\n    name=\"web-1\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3)\nweb_firewall = digitalocean.Firewall(\"web\",\n    name=\"only-22-80-and-443\",\n    droplet_ids=[web.id],\n    inbound_rules=[\n        {\n            \"protocol\": \"tcp\",\n            \"port_range\": \"22\",\n            \"source_addresses\": [\n                \"192.168.1.0/24\",\n                \"2002:1:2::/48\",\n            ],\n        },\n        {\n            \"protocol\": \"tcp\",\n            \"port_range\": \"80\",\n            \"source_addresses\": [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            \"protocol\": \"tcp\",\n            \"port_range\": \"443\",\n            \"source_addresses\": [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            \"protocol\": \"icmp\",\n            \"source_addresses\": [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n    ],\n    outbound_rules=[\n        {\n            \"protocol\": \"tcp\",\n            \"port_range\": \"53\",\n            \"destination_addresses\": [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            \"protocol\": \"udp\",\n            \"port_range\": \"53\",\n            \"destination_addresses\": [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n        {\n            \"protocol\": \"icmp\",\n            \"destination_addresses\": [\n                \"0.0.0.0/0\",\n                \"::/0\",\n            ],\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Name = \"web-1\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var webFirewall = new DigitalOcean.Firewall(\"web\", new()\n    {\n        Name = \"only-22-80-and-443\",\n        DropletIds = new[]\n        {\n            web.Id,\n        },\n        InboundRules = new[]\n        {\n            new DigitalOcean.Inputs.FirewallInboundRuleArgs\n            {\n                Protocol = \"tcp\",\n                PortRange = \"22\",\n                SourceAddresses = new[]\n                {\n                    \"192.168.1.0/24\",\n                    \"2002:1:2::/48\",\n                },\n            },\n            new DigitalOcean.Inputs.FirewallInboundRuleArgs\n            {\n                Protocol = \"tcp\",\n                PortRange = \"80\",\n                SourceAddresses = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n            },\n            new DigitalOcean.Inputs.FirewallInboundRuleArgs\n            {\n                Protocol = \"tcp\",\n                PortRange = \"443\",\n                SourceAddresses = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n            },\n            new DigitalOcean.Inputs.FirewallInboundRuleArgs\n            {\n                Protocol = \"icmp\",\n                SourceAddresses = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n            },\n        },\n        OutboundRules = new[]\n        {\n            new DigitalOcean.Inputs.FirewallOutboundRuleArgs\n            {\n                Protocol = \"tcp\",\n                PortRange = \"53\",\n                DestinationAddresses = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n            },\n            new DigitalOcean.Inputs.FirewallOutboundRuleArgs\n            {\n                Protocol = \"udp\",\n                PortRange = \"53\",\n                DestinationAddresses = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n            },\n            new DigitalOcean.Inputs.FirewallOutboundRuleArgs\n            {\n                Protocol = \"icmp\",\n                DestinationAddresses = new[]\n                {\n                    \"0.0.0.0/0\",\n                    \"::/0\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb, err := digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"web-1\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewFirewall(ctx, \"web\", \u0026digitalocean.FirewallArgs{\n\t\t\tName: pulumi.String(\"only-22-80-and-443\"),\n\t\t\tDropletIds: pulumi.IntArray{\n\t\t\t\tweb.ID(),\n\t\t\t},\n\t\t\tInboundRules: digitalocean.FirewallInboundRuleArray{\n\t\t\t\t\u0026digitalocean.FirewallInboundRuleArgs{\n\t\t\t\t\tProtocol:  pulumi.String(\"tcp\"),\n\t\t\t\t\tPortRange: pulumi.String(\"22\"),\n\t\t\t\t\tSourceAddresses: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"192.168.1.0/24\"),\n\t\t\t\t\t\tpulumi.String(\"2002:1:2::/48\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026digitalocean.FirewallInboundRuleArgs{\n\t\t\t\t\tProtocol:  pulumi.String(\"tcp\"),\n\t\t\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\t\t\tSourceAddresses: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026digitalocean.FirewallInboundRuleArgs{\n\t\t\t\t\tProtocol:  pulumi.String(\"tcp\"),\n\t\t\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t\t\t\tSourceAddresses: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026digitalocean.FirewallInboundRuleArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"icmp\"),\n\t\t\t\t\tSourceAddresses: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOutboundRules: digitalocean.FirewallOutboundRuleArray{\n\t\t\t\t\u0026digitalocean.FirewallOutboundRuleArgs{\n\t\t\t\t\tProtocol:  pulumi.String(\"tcp\"),\n\t\t\t\t\tPortRange: pulumi.String(\"53\"),\n\t\t\t\t\tDestinationAddresses: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026digitalocean.FirewallOutboundRuleArgs{\n\t\t\t\t\tProtocol:  pulumi.String(\"udp\"),\n\t\t\t\t\tPortRange: pulumi.String(\"53\"),\n\t\t\t\t\tDestinationAddresses: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026digitalocean.FirewallOutboundRuleArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"icmp\"),\n\t\t\t\t\tDestinationAddresses: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\tpulumi.String(\"::/0\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.Firewall;\nimport com.pulumi.digitalocean.FirewallArgs;\nimport com.pulumi.digitalocean.inputs.FirewallInboundRuleArgs;\nimport com.pulumi.digitalocean.inputs.FirewallOutboundRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .name(\"web-1\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var webFirewall = new Firewall(\"webFirewall\", FirewallArgs.builder()\n            .name(\"only-22-80-and-443\")\n            .dropletIds(web.id())\n            .inboundRules(            \n                FirewallInboundRuleArgs.builder()\n                    .protocol(\"tcp\")\n                    .portRange(\"22\")\n                    .sourceAddresses(                    \n                        \"192.168.1.0/24\",\n                        \"2002:1:2::/48\")\n                    .build(),\n                FirewallInboundRuleArgs.builder()\n                    .protocol(\"tcp\")\n                    .portRange(\"80\")\n                    .sourceAddresses(                    \n                        \"0.0.0.0/0\",\n                        \"::/0\")\n                    .build(),\n                FirewallInboundRuleArgs.builder()\n                    .protocol(\"tcp\")\n                    .portRange(\"443\")\n                    .sourceAddresses(                    \n                        \"0.0.0.0/0\",\n                        \"::/0\")\n                    .build(),\n                FirewallInboundRuleArgs.builder()\n                    .protocol(\"icmp\")\n                    .sourceAddresses(                    \n                        \"0.0.0.0/0\",\n                        \"::/0\")\n                    .build())\n            .outboundRules(            \n                FirewallOutboundRuleArgs.builder()\n                    .protocol(\"tcp\")\n                    .portRange(\"53\")\n                    .destinationAddresses(                    \n                        \"0.0.0.0/0\",\n                        \"::/0\")\n                    .build(),\n                FirewallOutboundRuleArgs.builder()\n                    .protocol(\"udp\")\n                    .portRange(\"53\")\n                    .destinationAddresses(                    \n                        \"0.0.0.0/0\",\n                        \"::/0\")\n                    .build(),\n                FirewallOutboundRuleArgs.builder()\n                    .protocol(\"icmp\")\n                    .destinationAddresses(                    \n                        \"0.0.0.0/0\",\n                        \"::/0\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web:\n    type: digitalocean:Droplet\n    properties:\n      name: web-1\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n  webFirewall:\n    type: digitalocean:Firewall\n    name: web\n    properties:\n      name: only-22-80-and-443\n      dropletIds:\n        - ${web.id}\n      inboundRules:\n        - protocol: tcp\n          portRange: '22'\n          sourceAddresses:\n            - 192.168.1.0/24\n            - 2002:1:2::/48\n        - protocol: tcp\n          portRange: '80'\n          sourceAddresses:\n            - 0.0.0.0/0\n            - ::/0\n        - protocol: tcp\n          portRange: '443'\n          sourceAddresses:\n            - 0.0.0.0/0\n            - ::/0\n        - protocol: icmp\n          sourceAddresses:\n            - 0.0.0.0/0\n            - ::/0\n      outboundRules:\n        - protocol: tcp\n          portRange: '53'\n          destinationAddresses:\n            - 0.0.0.0/0\n            - ::/0\n        - protocol: udp\n          portRange: '53'\n          destinationAddresses:\n            - 0.0.0.0/0\n            - ::/0\n        - protocol: icmp\n          destinationAddresses:\n            - 0.0.0.0/0\n            - ::/0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewalls can be imported using the firewall \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/firewall:Firewall myfirewall b8ecd2ab-2267-4a5e-8692-cbf1d32583e3\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "A time value given in ISO8601 combined date and time format\nthat represents when the Firewall was created.\n"
                },
                "dropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "The list of the IDs of the Droplets assigned\nto the Firewall (max. 10). If you want to assign more droplets to the\nFirewall, add Tags to them and use the \u003cspan pulumi-lang-nodejs=\"`tags`\" pulumi-lang-dotnet=\"`Tags`\" pulumi-lang-go=\"`tags`\" pulumi-lang-python=\"`tags`\" pulumi-lang-yaml=\"`tags`\" pulumi-lang-java=\"`tags`\"\u003e`tags`\u003c/span\u003e argument below.\n"
                },
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/FirewallInboundRule:FirewallInboundRule"
                    },
                    "description": "The inbound access rule block for the Firewall.\nThe \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inbound_rule`\u003c/span\u003e block is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Firewall name\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/FirewallOutboundRule:FirewallOutboundRule"
                    },
                    "description": "The outbound access rule block for the Firewall.\nThe \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outbound_rule`\u003c/span\u003e block is documented below.\n"
                },
                "pendingChanges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/FirewallPendingChange:FirewallPendingChange"
                    },
                    "description": "An list of object containing the fields, \u003cspan pulumi-lang-nodejs=\"\"dropletId\"\" pulumi-lang-dotnet=\"\"DropletId\"\" pulumi-lang-go=\"\"dropletId\"\" pulumi-lang-python=\"\"droplet_id\"\" pulumi-lang-yaml=\"\"dropletId\"\" pulumi-lang-java=\"\"dropletId\"\"\u003e\"droplet_id\"\u003c/span\u003e,\n\"removing\", and \"status\".  It is provided to detail exactly which Droplets\nare having their security policies updated.  When empty, all changes\nhave been successfully applied.\n"
                },
                "status": {
                    "type": "string",
                    "description": "A status string indicating the current state of the Firewall.\nThis can be \"waiting\", \"succeeded\", or \"failed\".\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The names of the Tags assigned to the Firewall (max. 5).\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "pendingChanges",
                "status"
            ],
            "inputProperties": {
                "dropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "The list of the IDs of the Droplets assigned\nto the Firewall (max. 10). If you want to assign more droplets to the\nFirewall, add Tags to them and use the \u003cspan pulumi-lang-nodejs=\"`tags`\" pulumi-lang-dotnet=\"`Tags`\" pulumi-lang-go=\"`tags`\" pulumi-lang-python=\"`tags`\" pulumi-lang-yaml=\"`tags`\" pulumi-lang-java=\"`tags`\"\u003e`tags`\u003c/span\u003e argument below.\n"
                },
                "inboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/FirewallInboundRule:FirewallInboundRule"
                    },
                    "description": "The inbound access rule block for the Firewall.\nThe \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inbound_rule`\u003c/span\u003e block is documented below.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Firewall name\n"
                },
                "outboundRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/FirewallOutboundRule:FirewallOutboundRule"
                    },
                    "description": "The outbound access rule block for the Firewall.\nThe \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outbound_rule`\u003c/span\u003e block is documented below.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The names of the Tags assigned to the Firewall (max. 5).\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Firewall resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "A time value given in ISO8601 combined date and time format\nthat represents when the Firewall was created.\n"
                    },
                    "dropletIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "description": "The list of the IDs of the Droplets assigned\nto the Firewall (max. 10). If you want to assign more droplets to the\nFirewall, add Tags to them and use the \u003cspan pulumi-lang-nodejs=\"`tags`\" pulumi-lang-dotnet=\"`Tags`\" pulumi-lang-go=\"`tags`\" pulumi-lang-python=\"`tags`\" pulumi-lang-yaml=\"`tags`\" pulumi-lang-java=\"`tags`\"\u003e`tags`\u003c/span\u003e argument below.\n"
                    },
                    "inboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/FirewallInboundRule:FirewallInboundRule"
                        },
                        "description": "The inbound access rule block for the Firewall.\nThe \u003cspan pulumi-lang-nodejs=\"`inboundRule`\" pulumi-lang-dotnet=\"`InboundRule`\" pulumi-lang-go=\"`inboundRule`\" pulumi-lang-python=\"`inbound_rule`\" pulumi-lang-yaml=\"`inboundRule`\" pulumi-lang-java=\"`inboundRule`\"\u003e`inbound_rule`\u003c/span\u003e block is documented below.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The Firewall name\n"
                    },
                    "outboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/FirewallOutboundRule:FirewallOutboundRule"
                        },
                        "description": "The outbound access rule block for the Firewall.\nThe \u003cspan pulumi-lang-nodejs=\"`outboundRule`\" pulumi-lang-dotnet=\"`OutboundRule`\" pulumi-lang-go=\"`outboundRule`\" pulumi-lang-python=\"`outbound_rule`\" pulumi-lang-yaml=\"`outboundRule`\" pulumi-lang-java=\"`outboundRule`\"\u003e`outbound_rule`\u003c/span\u003e block is documented below.\n"
                    },
                    "pendingChanges": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/FirewallPendingChange:FirewallPendingChange"
                        },
                        "description": "An list of object containing the fields, \u003cspan pulumi-lang-nodejs=\"\"dropletId\"\" pulumi-lang-dotnet=\"\"DropletId\"\" pulumi-lang-go=\"\"dropletId\"\" pulumi-lang-python=\"\"droplet_id\"\" pulumi-lang-yaml=\"\"dropletId\"\" pulumi-lang-java=\"\"dropletId\"\"\u003e\"droplet_id\"\u003c/span\u003e,\n\"removing\", and \"status\".  It is provided to detail exactly which Droplets\nare having their security policies updated.  When empty, all changes\nhave been successfully applied.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "A status string indicating the current state of the Firewall.\nThis can be \"waiting\", \"succeeded\", or \"failed\".\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The names of the Tags assigned to the Firewall (max. 5).\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/floatingIp:FloatingIp": {
            "description": "\u003e **Deprecated:** DigitalOcean Floating IPs have been renamed reserved IPs. This resource will be removed in a future release. Please use \u003cspan pulumi-lang-nodejs=\"`digitalocean.ReservedIp`\" pulumi-lang-dotnet=\"`digitalocean.ReservedIp`\" pulumi-lang-go=\"`ReservedIp`\" pulumi-lang-python=\"`ReservedIp`\" pulumi-lang-yaml=\"`digitalocean.ReservedIp`\" pulumi-lang-java=\"`digitalocean.ReservedIp`\"\u003e`digitalocean.ReservedIp`\u003c/span\u003e instead.\n\nProvides a DigitalOcean Floating IP to represent a publicly-accessible static IP addresses that can be mapped to one of your Droplets.\n\n\u003e **NOTE:** Floating IPs can be assigned to a Droplet either directly on the \u003cspan pulumi-lang-nodejs=\"`digitalocean.FloatingIp`\" pulumi-lang-dotnet=\"`digitalocean.FloatingIp`\" pulumi-lang-go=\"`FloatingIp`\" pulumi-lang-python=\"`FloatingIp`\" pulumi-lang-yaml=\"`digitalocean.FloatingIp`\" pulumi-lang-java=\"`digitalocean.FloatingIp`\"\u003e`digitalocean.FloatingIp`\u003c/span\u003e resource by setting a \u003cspan pulumi-lang-nodejs=\"`dropletId`\" pulumi-lang-dotnet=\"`DropletId`\" pulumi-lang-go=\"`dropletId`\" pulumi-lang-python=\"`droplet_id`\" pulumi-lang-yaml=\"`dropletId`\" pulumi-lang-java=\"`dropletId`\"\u003e`droplet_id`\u003c/span\u003e or using the \u003cspan pulumi-lang-nodejs=\"`digitalocean.FloatingIpAssignment`\" pulumi-lang-dotnet=\"`digitalocean.FloatingIpAssignment`\" pulumi-lang-go=\"`FloatingIpAssignment`\" pulumi-lang-python=\"`FloatingIpAssignment`\" pulumi-lang-yaml=\"`digitalocean.FloatingIpAssignment`\" pulumi-lang-java=\"`digitalocean.FloatingIpAssignment`\"\u003e`digitalocean.FloatingIpAssignment`\u003c/span\u003e resource, but the two cannot be used together.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Droplet(\"foobar\", {\n    name: \"baz\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.SGP1,\n    ipv6: true,\n    privateNetworking: true,\n});\nconst foobarFloatingIp = new digitalocean.FloatingIp(\"foobar\", {\n    dropletId: foobar.id,\n    region: foobar.region,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Droplet(\"foobar\",\n    name=\"baz\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.SGP1,\n    ipv6=True,\n    private_networking=True)\nfoobar_floating_ip = digitalocean.FloatingIp(\"foobar\",\n    droplet_id=foobar.id,\n    region=foobar.region)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"baz\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.SGP1,\n        Ipv6 = true,\n        PrivateNetworking = true,\n    });\n\n    var foobarFloatingIp = new DigitalOcean.FloatingIp(\"foobar\", new()\n    {\n        DropletId = foobar.Id,\n        Region = foobar.Region,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:              pulumi.String(\"baz\"),\n\t\t\tSize:              pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:             pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:            pulumi.String(digitalocean.RegionSGP1),\n\t\t\tIpv6:              pulumi.Bool(true),\n\t\t\tPrivateNetworking: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewFloatingIp(ctx, \"foobar\", \u0026digitalocean.FloatingIpArgs{\n\t\t\tDropletId: foobar.ID(),\n\t\t\tRegion:    foobar.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.FloatingIp;\nimport com.pulumi.digitalocean.FloatingIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Droplet(\"foobar\", DropletArgs.builder()\n            .name(\"baz\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"sgp1\")\n            .ipv6(true)\n            .privateNetworking(true)\n            .build());\n\n        var foobarFloatingIp = new FloatingIp(\"foobarFloatingIp\", FloatingIpArgs.builder()\n            .dropletId(foobar.id())\n            .region(foobar.region())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Droplet\n    properties:\n      name: baz\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: sgp1\n      ipv6: true\n      privateNetworking: true\n  foobarFloatingIp:\n    type: digitalocean:FloatingIp\n    name: foobar\n    properties:\n      dropletId: ${foobar.id}\n      region: ${foobar.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFloating IPs can be imported using the \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/floatingIp:FloatingIp myip 192.168.0.1\n```\n\n",
            "properties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the Floating IP will be assigned to.\n"
                },
                "floatingIpUrn": {
                    "type": "string",
                    "description": "The uniform resource name of the floating ip\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP Address of the resource\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region that the Floating IP is reserved to.\n"
                }
            },
            "required": [
                "ipAddress",
                "region",
                "floatingIpUrn"
            ],
            "inputProperties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the Floating IP will be assigned to.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP Address of the resource\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region that the Floating IP is reserved to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FloatingIp resources.\n",
                "properties": {
                    "dropletId": {
                        "type": "integer",
                        "description": "The ID of Droplet that the Floating IP will be assigned to.\n"
                    },
                    "floatingIpUrn": {
                        "type": "string",
                        "description": "The uniform resource name of the floating ip\n"
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The IP Address of the resource\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region that the Floating IP is reserved to.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/floatingIpAssignment:FloatingIpAssignment": {
            "description": "\u003e **Deprecated:** DigitalOcean Floating IPs have been renamed reserved IPs. This resource will be removed in a future release. Please use \u003cspan pulumi-lang-nodejs=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-dotnet=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-go=\"`ReservedIpAssignment`\" pulumi-lang-python=\"`ReservedIpAssignment`\" pulumi-lang-yaml=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-java=\"`digitalocean.ReservedIpAssignment`\"\u003e`digitalocean.ReservedIpAssignment`\u003c/span\u003e instead.\n\nProvides a resource for assigning an existing DigitalOcean Floating IP to a Droplet. This\nmakes it easy to provision floating IP addresses that are not tied to the lifecycle of your\nDroplet.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.FloatingIp(\"foobar\", {region: \"sgp1\"});\nconst foobarDroplet = new digitalocean.Droplet(\"foobar\", {\n    name: \"baz\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.SGP1,\n    ipv6: true,\n    privateNetworking: true,\n});\nconst foobarFloatingIpAssignment = new digitalocean.FloatingIpAssignment(\"foobar\", {\n    ipAddress: foobar.ipAddress,\n    dropletId: foobarDroplet.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.FloatingIp(\"foobar\", region=\"sgp1\")\nfoobar_droplet = digitalocean.Droplet(\"foobar\",\n    name=\"baz\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.SGP1,\n    ipv6=True,\n    private_networking=True)\nfoobar_floating_ip_assignment = digitalocean.FloatingIpAssignment(\"foobar\",\n    ip_address=foobar.ip_address,\n    droplet_id=foobar_droplet.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.FloatingIp(\"foobar\", new()\n    {\n        Region = \"sgp1\",\n    });\n\n    var foobarDroplet = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"baz\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.SGP1,\n        Ipv6 = true,\n        PrivateNetworking = true,\n    });\n\n    var foobarFloatingIpAssignment = new DigitalOcean.FloatingIpAssignment(\"foobar\", new()\n    {\n        IpAddress = foobar.IpAddress,\n        DropletId = foobarDroplet.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewFloatingIp(ctx, \"foobar\", \u0026digitalocean.FloatingIpArgs{\n\t\t\tRegion: pulumi.String(\"sgp1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarDroplet, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:              pulumi.String(\"baz\"),\n\t\t\tSize:              pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:             pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:            pulumi.String(digitalocean.RegionSGP1),\n\t\t\tIpv6:              pulumi.Bool(true),\n\t\t\tPrivateNetworking: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewFloatingIpAssignment(ctx, \"foobar\", \u0026digitalocean.FloatingIpAssignmentArgs{\n\t\t\tIpAddress: foobar.IpAddress,\n\t\t\tDropletId: foobarDroplet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.FloatingIp;\nimport com.pulumi.digitalocean.FloatingIpArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.FloatingIpAssignment;\nimport com.pulumi.digitalocean.FloatingIpAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new FloatingIp(\"foobar\", FloatingIpArgs.builder()\n            .region(\"sgp1\")\n            .build());\n\n        var foobarDroplet = new Droplet(\"foobarDroplet\", DropletArgs.builder()\n            .name(\"baz\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"sgp1\")\n            .ipv6(true)\n            .privateNetworking(true)\n            .build());\n\n        var foobarFloatingIpAssignment = new FloatingIpAssignment(\"foobarFloatingIpAssignment\", FloatingIpAssignmentArgs.builder()\n            .ipAddress(foobar.ipAddress())\n            .dropletId(foobarDroplet.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:FloatingIp\n    properties:\n      region: sgp1\n  foobarDroplet:\n    type: digitalocean:Droplet\n    name: foobar\n    properties:\n      name: baz\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: sgp1\n      ipv6: true\n      privateNetworking: true\n  foobarFloatingIpAssignment:\n    type: digitalocean:FloatingIpAssignment\n    name: foobar\n    properties:\n      ipAddress: ${foobar.ipAddress}\n      dropletId: ${foobarDroplet.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFloating IP assignments can be imported using the Floating IP itself and the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of\nthe Droplet joined with a comma. For example:\n\n```sh\n$ pulumi import digitalocean:index/floatingIpAssignment:FloatingIpAssignment foobar 192.0.2.1,123456\n```\n\n",
            "properties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the Floating IP will be assigned to.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The Floating IP to assign to the Droplet.\n"
                }
            },
            "required": [
                "dropletId",
                "ipAddress"
            ],
            "inputProperties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the Floating IP will be assigned to.\n",
                    "willReplaceOnChanges": true
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The Floating IP to assign to the Droplet.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "dropletId",
                "ipAddress"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering FloatingIpAssignment resources.\n",
                "properties": {
                    "dropletId": {
                        "type": "integer",
                        "description": "The ID of Droplet that the Floating IP will be assigned to.\n",
                        "willReplaceOnChanges": true
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The Floating IP to assign to the Droplet.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/genaiAgent:GenaiAgent": {
            "properties": {
                "agentGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentAgentGuardrail:GenaiAgentAgentGuardrail"
                    },
                    "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentAnthropicApiKey:GenaiAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information"
                },
                "anthropicKeyUuid": {
                    "type": "string",
                    "description": "Optional Anthropic API key ID to use with Anthropic models"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentApiKeyInfo:GenaiAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentApiKey:GenaiAgentApiKey"
                    },
                    "description": "List of API Keys"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChatbotIdentifier:GenaiAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChatbot:GenaiAgentChatbot"
                    },
                    "description": "ChatBot configuration"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChildAgent:GenaiAgentChildAgent"
                    },
                    "description": "List of child agents"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was created"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentDeployment:GenaiAgentDeployment"
                    },
                    "description": "List of API Key Infos"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentFunction:GenaiAgentFunction"
                    },
                    "description": "List of Functions"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case condition"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent"
                },
                "k": {
                    "type": "integer",
                    "description": "K value"
                },
                "knowledgeBaseUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Ids of the knowledge base(s) to attach to the agent"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentKnowledgeBase:GenaiAgentKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentModel:GenaiAgentModel"
                    },
                    "description": "Model of the Agent"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent"
                },
                "openAiApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentOpenAiApiKey:GenaiAgentOpenAiApiKey"
                    },
                    "description": "OpenAI API Key information"
                },
                "openAiKeyUuid": {
                    "type": "string",
                    "description": "Optional OpenAI API key ID to use with OpenAI models"
                },
                "parentAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentParentAgent:GenaiAgentParentAgent"
                    },
                    "description": "List of child agents"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent"
                },
                "provideCitations": {
                    "type": "boolean",
                    "description": "Indicates if the agent should provide citations in responses"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used"
                },
                "routeCreatedAt": {
                    "type": "string",
                    "description": "Timestamp when the route was created"
                },
                "routeCreatedBy": {
                    "type": "string",
                    "description": "User who created the route"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name"
                },
                "routeUuid": {
                    "type": "string",
                    "description": "Route UUID"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentTemplate:GenaiAgentTemplate"
                    },
                    "description": "Agent Template"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was updated"
                },
                "url": {
                    "type": "string",
                    "description": "URL for the Agent"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID linked with the Agent"
                },
                "workspaceUuid": {
                    "type": "string",
                    "description": "Identifier for the workspace"
                }
            },
            "required": [
                "childAgents",
                "instruction",
                "knowledgeBases",
                "models",
                "modelUuid",
                "name",
                "parentAgents",
                "projectId",
                "region",
                "routeCreatedAt",
                "updatedAt"
            ],
            "inputProperties": {
                "agentGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentAgentGuardrail:GenaiAgentAgentGuardrail"
                    },
                    "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentAnthropicApiKey:GenaiAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information"
                },
                "anthropicKeyUuid": {
                    "type": "string",
                    "description": "Optional Anthropic API key ID to use with Anthropic models"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentApiKeyInfo:GenaiAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentApiKey:GenaiAgentApiKey"
                    },
                    "description": "List of API Keys"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChatbotIdentifier:GenaiAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChatbot:GenaiAgentChatbot"
                    },
                    "description": "ChatBot configuration"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentChildAgent:GenaiAgentChildAgent"
                    },
                    "description": "List of child agents"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was created"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentDeployment:GenaiAgentDeployment"
                    },
                    "description": "List of API Key Infos"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentFunction:GenaiAgentFunction"
                    },
                    "description": "List of Functions"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case condition"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent"
                },
                "k": {
                    "type": "integer",
                    "description": "K value"
                },
                "knowledgeBaseUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Ids of the knowledge base(s) to attach to the agent"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentKnowledgeBase:GenaiAgentKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentModel:GenaiAgentModel"
                    },
                    "description": "Model of the Agent"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent"
                },
                "openAiApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentOpenAiApiKey:GenaiAgentOpenAiApiKey"
                    },
                    "description": "OpenAI API Key information"
                },
                "openAiKeyUuid": {
                    "type": "string",
                    "description": "Optional OpenAI API key ID to use with OpenAI models"
                },
                "parentAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentParentAgent:GenaiAgentParentAgent"
                    },
                    "description": "List of child agents"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent"
                },
                "provideCitations": {
                    "type": "boolean",
                    "description": "Indicates if the agent should provide citations in responses"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used"
                },
                "routeCreatedBy": {
                    "type": "string",
                    "description": "User who created the route"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name"
                },
                "routeUuid": {
                    "type": "string",
                    "description": "Route UUID"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiAgentTemplate:GenaiAgentTemplate"
                    },
                    "description": "Agent Template"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter"
                },
                "url": {
                    "type": "string",
                    "description": "URL for the Agent"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID linked with the Agent"
                },
                "workspaceUuid": {
                    "type": "string",
                    "description": "Identifier for the workspace"
                }
            },
            "requiredInputs": [
                "instruction",
                "modelUuid",
                "projectId",
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GenaiAgent resources.\n",
                "properties": {
                    "agentGuardrails": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentAgentGuardrail:GenaiAgentAgentGuardrail"
                        },
                        "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent"
                    },
                    "anthropicApiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentAnthropicApiKey:GenaiAgentAnthropicApiKey"
                        },
                        "description": "Anthropic API Key information"
                    },
                    "anthropicKeyUuid": {
                        "type": "string",
                        "description": "Optional Anthropic API key ID to use with Anthropic models"
                    },
                    "apiKeyInfos": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentApiKeyInfo:GenaiAgentApiKeyInfo"
                        },
                        "description": "List of API Key Infos"
                    },
                    "apiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentApiKey:GenaiAgentApiKey"
                        },
                        "description": "List of API Keys"
                    },
                    "chatbotIdentifiers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentChatbotIdentifier:GenaiAgentChatbotIdentifier"
                        },
                        "description": "List of Chatbot Identifiers"
                    },
                    "chatbots": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentChatbot:GenaiAgentChatbot"
                        },
                        "description": "ChatBot configuration"
                    },
                    "childAgents": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentChildAgent:GenaiAgentChildAgent"
                        },
                        "description": "List of child agents"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Timestamp when the Agent was created"
                    },
                    "deployments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentDeployment:GenaiAgentDeployment"
                        },
                        "description": "List of API Key Infos"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description for the Agent"
                    },
                    "functions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentFunction:GenaiAgentFunction"
                        },
                        "description": "List of Functions"
                    },
                    "ifCase": {
                        "type": "string",
                        "description": "If case condition"
                    },
                    "instruction": {
                        "type": "string",
                        "description": "Instruction for the Agent"
                    },
                    "k": {
                        "type": "integer",
                        "description": "K value"
                    },
                    "knowledgeBaseUuids": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Ids of the knowledge base(s) to attach to the agent"
                    },
                    "knowledgeBases": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentKnowledgeBase:GenaiAgentKnowledgeBase"
                        },
                        "description": "List of Knowledge Bases"
                    },
                    "maxTokens": {
                        "type": "integer",
                        "description": "Maximum tokens allowed"
                    },
                    "modelUuid": {
                        "type": "string",
                        "description": "Model UUID of the Agent"
                    },
                    "models": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentModel:GenaiAgentModel"
                        },
                        "description": "Model of the Agent"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the Agent"
                    },
                    "openAiApiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentOpenAiApiKey:GenaiAgentOpenAiApiKey"
                        },
                        "description": "OpenAI API Key information"
                    },
                    "openAiKeyUuid": {
                        "type": "string",
                        "description": "Optional OpenAI API key ID to use with OpenAI models"
                    },
                    "parentAgents": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentParentAgent:GenaiAgentParentAgent"
                        },
                        "description": "List of child agents"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "Project ID of the Agent"
                    },
                    "provideCitations": {
                        "type": "boolean",
                        "description": "Indicates if the agent should provide citations in responses"
                    },
                    "region": {
                        "type": "string",
                        "description": "Region where the Agent is deployed"
                    },
                    "retrievalMethod": {
                        "type": "string",
                        "description": "Retrieval method used"
                    },
                    "routeCreatedAt": {
                        "type": "string",
                        "description": "Timestamp when the route was created"
                    },
                    "routeCreatedBy": {
                        "type": "string",
                        "description": "User who created the route"
                    },
                    "routeName": {
                        "type": "string",
                        "description": "Route name"
                    },
                    "routeUuid": {
                        "type": "string",
                        "description": "Route UUID"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of Tags"
                    },
                    "temperature": {
                        "type": "number",
                        "description": "Agent temperature setting"
                    },
                    "templates": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiAgentTemplate:GenaiAgentTemplate"
                        },
                        "description": "Agent Template"
                    },
                    "topP": {
                        "type": "number",
                        "description": "Top P sampling parameter"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Timestamp when the Agent was updated"
                    },
                    "url": {
                        "type": "string",
                        "description": "URL for the Agent"
                    },
                    "userId": {
                        "type": "string",
                        "description": "User ID linked with the Agent"
                    },
                    "workspaceUuid": {
                        "type": "string",
                        "description": "Identifier for the workspace"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "digitalocean.GenaiAgent has been deprecated in favor of digitalocean.GradientaiAgent"
        },
        "digitalocean:index/genaiAgentKnowledgeBaseAttachment:GenaiAgentKnowledgeBaseAttachment": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "A unique identifier for an agent."
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "A unique identifier for a knowledge base."
                }
            },
            "required": [
                "agentUuid",
                "knowledgeBaseUuid"
            ],
            "inputProperties": {
                "agentUuid": {
                    "type": "string",
                    "description": "A unique identifier for an agent.",
                    "willReplaceOnChanges": true
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "A unique identifier for a knowledge base.",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "agentUuid",
                "knowledgeBaseUuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GenaiAgentKnowledgeBaseAttachment resources.\n",
                "properties": {
                    "agentUuid": {
                        "type": "string",
                        "description": "A unique identifier for an agent.",
                        "willReplaceOnChanges": true
                    },
                    "knowledgeBaseUuid": {
                        "type": "string",
                        "description": "A unique identifier for a knowledge base.",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "digitalocean.GenaiAgentKnowledgeBaseAttachment has been deprecated in favor of digitalocean.GradientaiAgentKnowledgeBaseAttachment"
        },
        "digitalocean:index/genaiAgentRoute:GenaiAgentRoute": {
            "properties": {
                "childAgentUuid": {
                    "type": "string",
                    "description": "The UUID of the child agent."
                },
                "ifCase": {
                    "type": "string",
                    "description": "if-case condition for the route."
                },
                "parentAgentUuid": {
                    "type": "string",
                    "description": "The UUID of the parent agent."
                },
                "rollback": {
                    "type": "boolean"
                },
                "routeName": {
                    "type": "string",
                    "description": "A name for the route."
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the linkage"
                }
            },
            "required": [
                "childAgentUuid",
                "parentAgentUuid",
                "uuid"
            ],
            "inputProperties": {
                "childAgentUuid": {
                    "type": "string",
                    "description": "The UUID of the child agent."
                },
                "ifCase": {
                    "type": "string",
                    "description": "if-case condition for the route."
                },
                "parentAgentUuid": {
                    "type": "string",
                    "description": "The UUID of the parent agent."
                },
                "rollback": {
                    "type": "boolean"
                },
                "routeName": {
                    "type": "string",
                    "description": "A name for the route."
                }
            },
            "requiredInputs": [
                "childAgentUuid",
                "parentAgentUuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GenaiAgentRoute resources.\n",
                "properties": {
                    "childAgentUuid": {
                        "type": "string",
                        "description": "The UUID of the child agent."
                    },
                    "ifCase": {
                        "type": "string",
                        "description": "if-case condition for the route."
                    },
                    "parentAgentUuid": {
                        "type": "string",
                        "description": "The UUID of the parent agent."
                    },
                    "rollback": {
                        "type": "boolean"
                    },
                    "routeName": {
                        "type": "string",
                        "description": "A name for the route."
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the linkage"
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "digitalocean.GenaiAgentRoute has been deprecated in favor of digitalocean.GradientaiAgentRoute"
        },
        "digitalocean:index/genaiFunction:GenaiFunction": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "The name of the GradientAI resource."
                },
                "description": {
                    "type": "string",
                    "description": "The region where the GradientAI resource will be created."
                },
                "faasName": {
                    "type": "string",
                    "description": "The model to use for the GradientAI resource."
                },
                "faasNamespace": {
                    "type": "string",
                    "description": "The current status of the GradientAI resource."
                },
                "functionName": {
                    "type": "string",
                    "description": "The creation timestamp of the GradientAI resource."
                },
                "functionUuid": {
                    "type": "string",
                    "description": "The unique identifier of the GradientAI function."
                },
                "inputSchema": {
                    "type": "string",
                    "description": "The input schema of the GradientAI resource."
                },
                "outputSchema": {
                    "type": "string",
                    "description": "The output schema of the GradientAI resource."
                }
            },
            "required": [
                "agentId",
                "description",
                "faasNamespace",
                "functionName",
                "functionUuid",
                "inputSchema"
            ],
            "inputProperties": {
                "agentId": {
                    "type": "string",
                    "description": "The name of the GradientAI resource."
                },
                "description": {
                    "type": "string",
                    "description": "The region where the GradientAI resource will be created."
                },
                "faasName": {
                    "type": "string",
                    "description": "The model to use for the GradientAI resource."
                },
                "faasNamespace": {
                    "type": "string",
                    "description": "The current status of the GradientAI resource."
                },
                "functionName": {
                    "type": "string",
                    "description": "The creation timestamp of the GradientAI resource."
                },
                "inputSchema": {
                    "type": "string",
                    "description": "The input schema of the GradientAI resource."
                },
                "outputSchema": {
                    "type": "string",
                    "description": "The output schema of the GradientAI resource."
                }
            },
            "requiredInputs": [
                "agentId",
                "description",
                "faasNamespace",
                "functionName",
                "inputSchema"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GenaiFunction resources.\n",
                "properties": {
                    "agentId": {
                        "type": "string",
                        "description": "The name of the GradientAI resource."
                    },
                    "description": {
                        "type": "string",
                        "description": "The region where the GradientAI resource will be created."
                    },
                    "faasName": {
                        "type": "string",
                        "description": "The model to use for the GradientAI resource."
                    },
                    "faasNamespace": {
                        "type": "string",
                        "description": "The current status of the GradientAI resource."
                    },
                    "functionName": {
                        "type": "string",
                        "description": "The creation timestamp of the GradientAI resource."
                    },
                    "functionUuid": {
                        "type": "string",
                        "description": "The unique identifier of the GradientAI function."
                    },
                    "inputSchema": {
                        "type": "string",
                        "description": "The input schema of the GradientAI resource."
                    },
                    "outputSchema": {
                        "type": "string",
                        "description": "The output schema of the GradientAI resource."
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "digitalocean.GenaiFunction has been deprecated in favor of digitalocean.GradientaiFunction"
        },
        "digitalocean:index/genaiIndexingJobCancel:GenaiIndexingJobCancel": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of data sources that were completed before cancellation."
                },
                "createdAt": {
                    "type": "string",
                    "description": "When the indexing job was created."
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of data source UUIDs associated with this indexing job."
                },
                "finishedAt": {
                    "type": "string",
                    "description": "When the indexing job was finished."
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "The UUID of the knowledge base associated with this indexing job."
                },
                "phase": {
                    "type": "string",
                    "description": "Current phase of the indexing job."
                },
                "startedAt": {
                    "type": "string",
                    "description": "When the indexing job was started."
                },
                "status": {
                    "type": "string",
                    "description": "The status of the indexing job after cancellation."
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed before cancellation."
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of data sources in the indexing job."
                },
                "totalItemsFailed": {
                    "type": "integer",
                    "description": "Total number of items that failed during indexing."
                },
                "totalItemsIndexed": {
                    "type": "integer",
                    "description": "Total number of items that were successfully indexed."
                },
                "totalItemsSkipped": {
                    "type": "integer",
                    "description": "Total number of items that were skipped during indexing."
                },
                "updatedAt": {
                    "type": "string",
                    "description": "When the indexing job was last updated."
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the indexing job to cancel."
                }
            },
            "required": [
                "completedDatasources",
                "createdAt",
                "dataSourceUuids",
                "finishedAt",
                "knowledgeBaseUuid",
                "phase",
                "startedAt",
                "status",
                "tokens",
                "totalDatasources",
                "totalItemsFailed",
                "totalItemsIndexed",
                "totalItemsSkipped",
                "updatedAt",
                "uuid"
            ],
            "inputProperties": {
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the indexing job to cancel.",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "uuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GenaiIndexingJobCancel resources.\n",
                "properties": {
                    "completedDatasources": {
                        "type": "integer",
                        "description": "Number of data sources that were completed before cancellation."
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "When the indexing job was created."
                    },
                    "dataSourceUuids": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of data source UUIDs associated with this indexing job."
                    },
                    "finishedAt": {
                        "type": "string",
                        "description": "When the indexing job was finished."
                    },
                    "knowledgeBaseUuid": {
                        "type": "string",
                        "description": "The UUID of the knowledge base associated with this indexing job."
                    },
                    "phase": {
                        "type": "string",
                        "description": "Current phase of the indexing job."
                    },
                    "startedAt": {
                        "type": "string",
                        "description": "When the indexing job was started."
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the indexing job after cancellation."
                    },
                    "tokens": {
                        "type": "integer",
                        "description": "Number of tokens processed before cancellation."
                    },
                    "totalDatasources": {
                        "type": "integer",
                        "description": "Total number of data sources in the indexing job."
                    },
                    "totalItemsFailed": {
                        "type": "integer",
                        "description": "Total number of items that failed during indexing."
                    },
                    "totalItemsIndexed": {
                        "type": "integer",
                        "description": "Total number of items that were successfully indexed."
                    },
                    "totalItemsSkipped": {
                        "type": "integer",
                        "description": "Total number of items that were skipped during indexing."
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "When the indexing job was last updated."
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the indexing job to cancel.",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "digitalocean.GenaiIndexingJobCancel has been deprecated in favor of digitalocean.GradientaiIndexingJobCancel"
        },
        "digitalocean:index/genaiKnowledgeBase:GenaiKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "The time when the knowledge base was added to the agent."
                },
                "createdAt": {
                    "type": "string",
                    "description": "The time when the knowledge base was created."
                },
                "databaseId": {
                    "type": "string",
                    "description": "The unique identifier of the DigitalOcean OpenSearch database this knowledge base will use"
                },
                "datasources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSource:GradientaiKnowledgeBaseDataSource"
                    },
                    "description": "Data sources for the knowledge base"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "The unique identifier of the embedding model"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates whether the knowledge base is public or private."
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseLastIndexingJob:GenaiKnowledgeBaseLastIndexingJob"
                    },
                    "description": "The last indexing job for the knowledge base."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the knowledge base."
                },
                "projectId": {
                    "type": "string",
                    "description": "The unique identifier of the project to which the knowledge base belongs."
                },
                "region": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The unique identifier of the VPC to which the knowledge base belongs."
                }
            },
            "required": [
                "createdAt",
                "datasources",
                "embeddingModelUuid",
                "name",
                "projectId",
                "region"
            ],
            "inputProperties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "The time when the knowledge base was added to the agent."
                },
                "databaseId": {
                    "type": "string",
                    "description": "The unique identifier of the DigitalOcean OpenSearch database this knowledge base will use"
                },
                "datasources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSource:GradientaiKnowledgeBaseDataSource"
                    },
                    "description": "Data sources for the knowledge base",
                    "willReplaceOnChanges": true
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "The unique identifier of the embedding model",
                    "willReplaceOnChanges": true
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates whether the knowledge base is public or private."
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseLastIndexingJob:GenaiKnowledgeBaseLastIndexingJob"
                    },
                    "description": "The last indexing job for the knowledge base."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the knowledge base."
                },
                "projectId": {
                    "type": "string",
                    "description": "The unique identifier of the project to which the knowledge base belongs."
                },
                "region": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The unique identifier of the VPC to which the knowledge base belongs.",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "datasources",
                "embeddingModelUuid",
                "projectId",
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GenaiKnowledgeBase resources.\n",
                "properties": {
                    "addedToAgentAt": {
                        "type": "string",
                        "description": "The time when the knowledge base was added to the agent."
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The time when the knowledge base was created."
                    },
                    "databaseId": {
                        "type": "string",
                        "description": "The unique identifier of the DigitalOcean OpenSearch database this knowledge base will use"
                    },
                    "datasources": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSource:GradientaiKnowledgeBaseDataSource"
                        },
                        "description": "Data sources for the knowledge base",
                        "willReplaceOnChanges": true
                    },
                    "embeddingModelUuid": {
                        "type": "string",
                        "description": "The unique identifier of the embedding model",
                        "willReplaceOnChanges": true
                    },
                    "isPublic": {
                        "type": "boolean",
                        "description": "Indicates whether the knowledge base is public or private."
                    },
                    "lastIndexingJobs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseLastIndexingJob:GenaiKnowledgeBaseLastIndexingJob"
                        },
                        "description": "The last indexing job for the knowledge base."
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the knowledge base."
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The unique identifier of the project to which the knowledge base belongs."
                    },
                    "region": {
                        "type": "string"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "vpcUuid": {
                        "type": "string",
                        "description": "The unique identifier of the VPC to which the knowledge base belongs.",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "digitalocean.GenaiKnowledgeBase has been deprecated in favor of digitalocean.GradientaiKnowledgeBase"
        },
        "digitalocean:index/genaiKnowledgeBaseDataSource:GenaiKnowledgeBaseDataSource": {
            "properties": {
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base"
                },
                "spacesDataSource": {
                    "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseDataSourceSpacesDataSource:GenaiKnowledgeBaseDataSourceSpacesDataSource"
                },
                "webCrawlerDataSource": {
                    "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseDataSourceWebCrawlerDataSource:GenaiKnowledgeBaseDataSourceWebCrawlerDataSource"
                }
            },
            "required": [
                "knowledgeBaseUuid"
            ],
            "inputProperties": {
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base",
                    "willReplaceOnChanges": true
                },
                "spacesDataSource": {
                    "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseDataSourceSpacesDataSource:GenaiKnowledgeBaseDataSourceSpacesDataSource",
                    "willReplaceOnChanges": true
                },
                "webCrawlerDataSource": {
                    "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseDataSourceWebCrawlerDataSource:GenaiKnowledgeBaseDataSourceWebCrawlerDataSource",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "knowledgeBaseUuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GenaiKnowledgeBaseDataSource resources.\n",
                "properties": {
                    "knowledgeBaseUuid": {
                        "type": "string",
                        "description": "UUID of the Knowledge Base",
                        "willReplaceOnChanges": true
                    },
                    "spacesDataSource": {
                        "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseDataSourceSpacesDataSource:GenaiKnowledgeBaseDataSourceSpacesDataSource",
                        "willReplaceOnChanges": true
                    },
                    "webCrawlerDataSource": {
                        "$ref": "#/types/digitalocean:index/GenaiKnowledgeBaseDataSourceWebCrawlerDataSource:GenaiKnowledgeBaseDataSourceWebCrawlerDataSource",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "digitalocean.GenaiKnowledgeBaseDataSource has been deprecated in favor of digitalocean.GradientaiKnowledgeBaseDataSource"
        },
        "digitalocean:index/genaiOpenaiApiKey:GenaiOpenaiApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "The OpenAI API key."
                },
                "createdAt": {
                    "type": "string",
                    "description": "When the API key was created."
                },
                "createdBy": {
                    "type": "string",
                    "description": "Who created the API key."
                },
                "deletedAt": {
                    "type": "string",
                    "description": "When the API key was deleted."
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiOpenaiApiKeyModel:GenaiOpenaiApiKeyModel"
                    },
                    "description": "Models associated with the OpenAI API key"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the API key."
                },
                "updatedAt": {
                    "type": "string",
                    "description": "When the API key was last updated."
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the API key."
                }
            },
            "required": [
                "apiKey",
                "createdAt",
                "createdBy",
                "deletedAt",
                "models",
                "name",
                "updatedAt",
                "uuid"
            ],
            "inputProperties": {
                "apiKey": {
                    "type": "string",
                    "description": "The OpenAI API key."
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GenaiOpenaiApiKeyModel:GenaiOpenaiApiKeyModel"
                    },
                    "description": "Models associated with the OpenAI API key"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the API key."
                }
            },
            "requiredInputs": [
                "apiKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GenaiOpenaiApiKey resources.\n",
                "properties": {
                    "apiKey": {
                        "type": "string",
                        "description": "The OpenAI API key."
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "When the API key was created."
                    },
                    "createdBy": {
                        "type": "string",
                        "description": "Who created the API key."
                    },
                    "deletedAt": {
                        "type": "string",
                        "description": "When the API key was deleted."
                    },
                    "models": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GenaiOpenaiApiKeyModel:GenaiOpenaiApiKeyModel"
                        },
                        "description": "Models associated with the OpenAI API key"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the API key."
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "When the API key was last updated."
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the API key."
                    }
                },
                "type": "object"
            },
            "deprecationMessage": "digitalocean.GenaiOpenaiApiKey has been deprecated in favor of digitalocean.GradientaiOpenaiApiKey"
        },
        "digitalocean:index/gradientaiAgent:GradientaiAgent": {
            "properties": {
                "agentGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentAgentGuardrail:GradientaiAgentAgentGuardrail"
                    },
                    "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentAnthropicApiKey:GradientaiAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information"
                },
                "anthropicKeyUuid": {
                    "type": "string",
                    "description": "Optional Anthropic API key ID to use with Anthropic models"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentApiKeyInfo:GradientaiAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentApiKey:GradientaiAgentApiKey"
                    },
                    "description": "List of API Keys"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChatbotIdentifier:GradientaiAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChatbot:GradientaiAgentChatbot"
                    },
                    "description": "ChatBot configuration"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgent:GradientaiAgentChildAgent"
                    },
                    "description": "List of child agents"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was created"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentDeployment:GradientaiAgentDeployment"
                    },
                    "description": "List of API Key Infos"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentFunction:GradientaiAgentFunction"
                    },
                    "description": "List of Functions"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case condition"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent"
                },
                "k": {
                    "type": "integer",
                    "description": "K value"
                },
                "knowledgeBaseUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Ids of the knowledge base(s) to attach to the agent"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentKnowledgeBase:GradientaiAgentKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentModel:GradientaiAgentModel"
                    },
                    "description": "Model of the Agent"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent"
                },
                "openAiApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentOpenAiApiKey:GradientaiAgentOpenAiApiKey"
                    },
                    "description": "OpenAI API Key information"
                },
                "openAiKeyUuid": {
                    "type": "string",
                    "description": "Optional OpenAI API key ID to use with OpenAI models"
                },
                "parentAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgent:GradientaiAgentParentAgent"
                    },
                    "description": "List of child agents"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent"
                },
                "provideCitations": {
                    "type": "boolean",
                    "description": "Indicates if the agent should provide citations in responses"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used"
                },
                "routeCreatedAt": {
                    "type": "string",
                    "description": "Timestamp when the route was created"
                },
                "routeCreatedBy": {
                    "type": "string",
                    "description": "User who created the route"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name"
                },
                "routeUuid": {
                    "type": "string",
                    "description": "Route UUID"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentTemplate:GradientaiAgentTemplate"
                    },
                    "description": "Agent Template"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was updated"
                },
                "url": {
                    "type": "string",
                    "description": "URL for the Agent"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID linked with the Agent"
                },
                "workspaceUuid": {
                    "type": "string",
                    "description": "Identifier for the workspace"
                }
            },
            "required": [
                "childAgents",
                "instruction",
                "knowledgeBases",
                "models",
                "modelUuid",
                "name",
                "parentAgents",
                "projectId",
                "region",
                "routeCreatedAt",
                "updatedAt"
            ],
            "inputProperties": {
                "agentGuardrails": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentAgentGuardrail:GradientaiAgentAgentGuardrail"
                    },
                    "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent"
                },
                "anthropicApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentAnthropicApiKey:GradientaiAgentAnthropicApiKey"
                    },
                    "description": "Anthropic API Key information"
                },
                "anthropicKeyUuid": {
                    "type": "string",
                    "description": "Optional Anthropic API key ID to use with Anthropic models"
                },
                "apiKeyInfos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentApiKeyInfo:GradientaiAgentApiKeyInfo"
                    },
                    "description": "List of API Key Infos"
                },
                "apiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentApiKey:GradientaiAgentApiKey"
                    },
                    "description": "List of API Keys"
                },
                "chatbotIdentifiers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChatbotIdentifier:GradientaiAgentChatbotIdentifier"
                    },
                    "description": "List of Chatbot Identifiers"
                },
                "chatbots": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChatbot:GradientaiAgentChatbot"
                    },
                    "description": "ChatBot configuration"
                },
                "childAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgent:GradientaiAgentChildAgent"
                    },
                    "description": "List of child agents"
                },
                "createdAt": {
                    "type": "string",
                    "description": "Timestamp when the Agent was created"
                },
                "deployments": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentDeployment:GradientaiAgentDeployment"
                    },
                    "description": "List of API Key Infos"
                },
                "description": {
                    "type": "string",
                    "description": "Description for the Agent"
                },
                "functions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentFunction:GradientaiAgentFunction"
                    },
                    "description": "List of Functions"
                },
                "ifCase": {
                    "type": "string",
                    "description": "If case condition"
                },
                "instruction": {
                    "type": "string",
                    "description": "Instruction for the Agent"
                },
                "k": {
                    "type": "integer",
                    "description": "K value"
                },
                "knowledgeBaseUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "Ids of the knowledge base(s) to attach to the agent"
                },
                "knowledgeBases": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentKnowledgeBase:GradientaiAgentKnowledgeBase"
                    },
                    "description": "List of Knowledge Bases"
                },
                "maxTokens": {
                    "type": "integer",
                    "description": "Maximum tokens allowed"
                },
                "modelUuid": {
                    "type": "string",
                    "description": "Model UUID of the Agent"
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentModel:GradientaiAgentModel"
                    },
                    "description": "Model of the Agent"
                },
                "name": {
                    "type": "string",
                    "description": "Name of the Agent"
                },
                "openAiApiKeys": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentOpenAiApiKey:GradientaiAgentOpenAiApiKey"
                    },
                    "description": "OpenAI API Key information"
                },
                "openAiKeyUuid": {
                    "type": "string",
                    "description": "Optional OpenAI API key ID to use with OpenAI models"
                },
                "parentAgents": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgent:GradientaiAgentParentAgent"
                    },
                    "description": "List of child agents"
                },
                "projectId": {
                    "type": "string",
                    "description": "Project ID of the Agent"
                },
                "provideCitations": {
                    "type": "boolean",
                    "description": "Indicates if the agent should provide citations in responses"
                },
                "region": {
                    "type": "string",
                    "description": "Region where the Agent is deployed"
                },
                "retrievalMethod": {
                    "type": "string",
                    "description": "Retrieval method used"
                },
                "routeCreatedBy": {
                    "type": "string",
                    "description": "User who created the route"
                },
                "routeName": {
                    "type": "string",
                    "description": "Route name"
                },
                "routeUuid": {
                    "type": "string",
                    "description": "Route UUID"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of Tags"
                },
                "temperature": {
                    "type": "number",
                    "description": "Agent temperature setting"
                },
                "templates": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiAgentTemplate:GradientaiAgentTemplate"
                    },
                    "description": "Agent Template"
                },
                "topP": {
                    "type": "number",
                    "description": "Top P sampling parameter"
                },
                "url": {
                    "type": "string",
                    "description": "URL for the Agent"
                },
                "userId": {
                    "type": "string",
                    "description": "User ID linked with the Agent"
                },
                "workspaceUuid": {
                    "type": "string",
                    "description": "Identifier for the workspace"
                }
            },
            "requiredInputs": [
                "instruction",
                "modelUuid",
                "projectId",
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GradientaiAgent resources.\n",
                "properties": {
                    "agentGuardrails": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentAgentGuardrail:GradientaiAgentAgentGuardrail"
                        },
                        "description": "AgentGuardrail represents a Guardrail attached to Gen AI Agent"
                    },
                    "anthropicApiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentAnthropicApiKey:GradientaiAgentAnthropicApiKey"
                        },
                        "description": "Anthropic API Key information"
                    },
                    "anthropicKeyUuid": {
                        "type": "string",
                        "description": "Optional Anthropic API key ID to use with Anthropic models"
                    },
                    "apiKeyInfos": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentApiKeyInfo:GradientaiAgentApiKeyInfo"
                        },
                        "description": "List of API Key Infos"
                    },
                    "apiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentApiKey:GradientaiAgentApiKey"
                        },
                        "description": "List of API Keys"
                    },
                    "chatbotIdentifiers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentChatbotIdentifier:GradientaiAgentChatbotIdentifier"
                        },
                        "description": "List of Chatbot Identifiers"
                    },
                    "chatbots": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentChatbot:GradientaiAgentChatbot"
                        },
                        "description": "ChatBot configuration"
                    },
                    "childAgents": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentChildAgent:GradientaiAgentChildAgent"
                        },
                        "description": "List of child agents"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "Timestamp when the Agent was created"
                    },
                    "deployments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentDeployment:GradientaiAgentDeployment"
                        },
                        "description": "List of API Key Infos"
                    },
                    "description": {
                        "type": "string",
                        "description": "Description for the Agent"
                    },
                    "functions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentFunction:GradientaiAgentFunction"
                        },
                        "description": "List of Functions"
                    },
                    "ifCase": {
                        "type": "string",
                        "description": "If case condition"
                    },
                    "instruction": {
                        "type": "string",
                        "description": "Instruction for the Agent"
                    },
                    "k": {
                        "type": "integer",
                        "description": "K value"
                    },
                    "knowledgeBaseUuids": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Ids of the knowledge base(s) to attach to the agent"
                    },
                    "knowledgeBases": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentKnowledgeBase:GradientaiAgentKnowledgeBase"
                        },
                        "description": "List of Knowledge Bases"
                    },
                    "maxTokens": {
                        "type": "integer",
                        "description": "Maximum tokens allowed"
                    },
                    "modelUuid": {
                        "type": "string",
                        "description": "Model UUID of the Agent"
                    },
                    "models": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentModel:GradientaiAgentModel"
                        },
                        "description": "Model of the Agent"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the Agent"
                    },
                    "openAiApiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentOpenAiApiKey:GradientaiAgentOpenAiApiKey"
                        },
                        "description": "OpenAI API Key information"
                    },
                    "openAiKeyUuid": {
                        "type": "string",
                        "description": "Optional OpenAI API key ID to use with OpenAI models"
                    },
                    "parentAgents": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentParentAgent:GradientaiAgentParentAgent"
                        },
                        "description": "List of child agents"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "Project ID of the Agent"
                    },
                    "provideCitations": {
                        "type": "boolean",
                        "description": "Indicates if the agent should provide citations in responses"
                    },
                    "region": {
                        "type": "string",
                        "description": "Region where the Agent is deployed"
                    },
                    "retrievalMethod": {
                        "type": "string",
                        "description": "Retrieval method used"
                    },
                    "routeCreatedAt": {
                        "type": "string",
                        "description": "Timestamp when the route was created"
                    },
                    "routeCreatedBy": {
                        "type": "string",
                        "description": "User who created the route"
                    },
                    "routeName": {
                        "type": "string",
                        "description": "Route name"
                    },
                    "routeUuid": {
                        "type": "string",
                        "description": "Route UUID"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of Tags"
                    },
                    "temperature": {
                        "type": "number",
                        "description": "Agent temperature setting"
                    },
                    "templates": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiAgentTemplate:GradientaiAgentTemplate"
                        },
                        "description": "Agent Template"
                    },
                    "topP": {
                        "type": "number",
                        "description": "Top P sampling parameter"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Timestamp when the Agent was updated"
                    },
                    "url": {
                        "type": "string",
                        "description": "URL for the Agent"
                    },
                    "userId": {
                        "type": "string",
                        "description": "User ID linked with the Agent"
                    },
                    "workspaceUuid": {
                        "type": "string",
                        "description": "Identifier for the workspace"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "digitalocean:index/genaiAgent:GenaiAgent"
                }
            ]
        },
        "digitalocean:index/gradientaiAgentKnowledgeBaseAttachment:GradientaiAgentKnowledgeBaseAttachment": {
            "properties": {
                "agentUuid": {
                    "type": "string",
                    "description": "A unique identifier for an agent."
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "A unique identifier for a knowledge base."
                }
            },
            "required": [
                "agentUuid",
                "knowledgeBaseUuid"
            ],
            "inputProperties": {
                "agentUuid": {
                    "type": "string",
                    "description": "A unique identifier for an agent.",
                    "willReplaceOnChanges": true
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "A unique identifier for a knowledge base.",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "agentUuid",
                "knowledgeBaseUuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GradientaiAgentKnowledgeBaseAttachment resources.\n",
                "properties": {
                    "agentUuid": {
                        "type": "string",
                        "description": "A unique identifier for an agent.",
                        "willReplaceOnChanges": true
                    },
                    "knowledgeBaseUuid": {
                        "type": "string",
                        "description": "A unique identifier for a knowledge base.",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "digitalocean:index/genaiAgentKnowledgeBaseAttachment:GenaiAgentKnowledgeBaseAttachment"
                }
            ]
        },
        "digitalocean:index/gradientaiAgentRoute:GradientaiAgentRoute": {
            "properties": {
                "childAgentUuid": {
                    "type": "string",
                    "description": "The UUID of the child agent."
                },
                "ifCase": {
                    "type": "string",
                    "description": "if-case condition for the route."
                },
                "parentAgentUuid": {
                    "type": "string",
                    "description": "The UUID of the parent agent."
                },
                "rollback": {
                    "type": "boolean"
                },
                "routeName": {
                    "type": "string",
                    "description": "A name for the route."
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the linkage"
                }
            },
            "required": [
                "childAgentUuid",
                "parentAgentUuid",
                "uuid"
            ],
            "inputProperties": {
                "childAgentUuid": {
                    "type": "string",
                    "description": "The UUID of the child agent."
                },
                "ifCase": {
                    "type": "string",
                    "description": "if-case condition for the route."
                },
                "parentAgentUuid": {
                    "type": "string",
                    "description": "The UUID of the parent agent."
                },
                "rollback": {
                    "type": "boolean"
                },
                "routeName": {
                    "type": "string",
                    "description": "A name for the route."
                }
            },
            "requiredInputs": [
                "childAgentUuid",
                "parentAgentUuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GradientaiAgentRoute resources.\n",
                "properties": {
                    "childAgentUuid": {
                        "type": "string",
                        "description": "The UUID of the child agent."
                    },
                    "ifCase": {
                        "type": "string",
                        "description": "if-case condition for the route."
                    },
                    "parentAgentUuid": {
                        "type": "string",
                        "description": "The UUID of the parent agent."
                    },
                    "rollback": {
                        "type": "boolean"
                    },
                    "routeName": {
                        "type": "string",
                        "description": "A name for the route."
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the linkage"
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "digitalocean:index/genaiAgentRoute:GenaiAgentRoute"
                }
            ]
        },
        "digitalocean:index/gradientaiFunction:GradientaiFunction": {
            "properties": {
                "agentId": {
                    "type": "string",
                    "description": "The name of the GradientAI resource."
                },
                "description": {
                    "type": "string",
                    "description": "The region where the GradientAI resource will be created."
                },
                "faasName": {
                    "type": "string",
                    "description": "The model to use for the GradientAI resource."
                },
                "faasNamespace": {
                    "type": "string",
                    "description": "The current status of the GradientAI resource."
                },
                "functionName": {
                    "type": "string",
                    "description": "The creation timestamp of the GradientAI resource."
                },
                "functionUuid": {
                    "type": "string",
                    "description": "The unique identifier of the GradientAI function."
                },
                "inputSchema": {
                    "type": "string",
                    "description": "The input schema of the GradientAI resource."
                },
                "outputSchema": {
                    "type": "string",
                    "description": "The output schema of the GradientAI resource."
                }
            },
            "required": [
                "agentId",
                "description",
                "faasNamespace",
                "functionName",
                "functionUuid",
                "inputSchema"
            ],
            "inputProperties": {
                "agentId": {
                    "type": "string",
                    "description": "The name of the GradientAI resource."
                },
                "description": {
                    "type": "string",
                    "description": "The region where the GradientAI resource will be created."
                },
                "faasName": {
                    "type": "string",
                    "description": "The model to use for the GradientAI resource."
                },
                "faasNamespace": {
                    "type": "string",
                    "description": "The current status of the GradientAI resource."
                },
                "functionName": {
                    "type": "string",
                    "description": "The creation timestamp of the GradientAI resource."
                },
                "inputSchema": {
                    "type": "string",
                    "description": "The input schema of the GradientAI resource."
                },
                "outputSchema": {
                    "type": "string",
                    "description": "The output schema of the GradientAI resource."
                }
            },
            "requiredInputs": [
                "agentId",
                "description",
                "faasNamespace",
                "functionName",
                "inputSchema"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GradientaiFunction resources.\n",
                "properties": {
                    "agentId": {
                        "type": "string",
                        "description": "The name of the GradientAI resource."
                    },
                    "description": {
                        "type": "string",
                        "description": "The region where the GradientAI resource will be created."
                    },
                    "faasName": {
                        "type": "string",
                        "description": "The model to use for the GradientAI resource."
                    },
                    "faasNamespace": {
                        "type": "string",
                        "description": "The current status of the GradientAI resource."
                    },
                    "functionName": {
                        "type": "string",
                        "description": "The creation timestamp of the GradientAI resource."
                    },
                    "functionUuid": {
                        "type": "string",
                        "description": "The unique identifier of the GradientAI function."
                    },
                    "inputSchema": {
                        "type": "string",
                        "description": "The input schema of the GradientAI resource."
                    },
                    "outputSchema": {
                        "type": "string",
                        "description": "The output schema of the GradientAI resource."
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "digitalocean:index/genaiFunction:GenaiFunction"
                }
            ]
        },
        "digitalocean:index/gradientaiIndexingJobCancel:GradientaiIndexingJobCancel": {
            "properties": {
                "completedDatasources": {
                    "type": "integer",
                    "description": "Number of data sources that were completed before cancellation."
                },
                "createdAt": {
                    "type": "string",
                    "description": "When the indexing job was created."
                },
                "dataSourceUuids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of data source UUIDs associated with this indexing job."
                },
                "finishedAt": {
                    "type": "string",
                    "description": "When the indexing job was finished."
                },
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "The UUID of the knowledge base associated with this indexing job."
                },
                "phase": {
                    "type": "string",
                    "description": "Current phase of the indexing job."
                },
                "startedAt": {
                    "type": "string",
                    "description": "When the indexing job was started."
                },
                "status": {
                    "type": "string",
                    "description": "The status of the indexing job after cancellation."
                },
                "tokens": {
                    "type": "integer",
                    "description": "Number of tokens processed before cancellation."
                },
                "totalDatasources": {
                    "type": "integer",
                    "description": "Total number of data sources in the indexing job."
                },
                "totalItemsFailed": {
                    "type": "integer",
                    "description": "Total number of items that failed during indexing."
                },
                "totalItemsIndexed": {
                    "type": "integer",
                    "description": "Total number of items that were successfully indexed."
                },
                "totalItemsSkipped": {
                    "type": "integer",
                    "description": "Total number of items that were skipped during indexing."
                },
                "updatedAt": {
                    "type": "string",
                    "description": "When the indexing job was last updated."
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the indexing job to cancel."
                }
            },
            "required": [
                "completedDatasources",
                "createdAt",
                "dataSourceUuids",
                "finishedAt",
                "knowledgeBaseUuid",
                "phase",
                "startedAt",
                "status",
                "tokens",
                "totalDatasources",
                "totalItemsFailed",
                "totalItemsIndexed",
                "totalItemsSkipped",
                "updatedAt",
                "uuid"
            ],
            "inputProperties": {
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the indexing job to cancel.",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "uuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GradientaiIndexingJobCancel resources.\n",
                "properties": {
                    "completedDatasources": {
                        "type": "integer",
                        "description": "Number of data sources that were completed before cancellation."
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "When the indexing job was created."
                    },
                    "dataSourceUuids": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of data source UUIDs associated with this indexing job."
                    },
                    "finishedAt": {
                        "type": "string",
                        "description": "When the indexing job was finished."
                    },
                    "knowledgeBaseUuid": {
                        "type": "string",
                        "description": "The UUID of the knowledge base associated with this indexing job."
                    },
                    "phase": {
                        "type": "string",
                        "description": "Current phase of the indexing job."
                    },
                    "startedAt": {
                        "type": "string",
                        "description": "When the indexing job was started."
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the indexing job after cancellation."
                    },
                    "tokens": {
                        "type": "integer",
                        "description": "Number of tokens processed before cancellation."
                    },
                    "totalDatasources": {
                        "type": "integer",
                        "description": "Total number of data sources in the indexing job."
                    },
                    "totalItemsFailed": {
                        "type": "integer",
                        "description": "Total number of items that failed during indexing."
                    },
                    "totalItemsIndexed": {
                        "type": "integer",
                        "description": "Total number of items that were successfully indexed."
                    },
                    "totalItemsSkipped": {
                        "type": "integer",
                        "description": "Total number of items that were skipped during indexing."
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "When the indexing job was last updated."
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the indexing job to cancel.",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "digitalocean:index/genaiIndexingJobCancel:GenaiIndexingJobCancel"
                }
            ]
        },
        "digitalocean:index/gradientaiKnowledgeBase:GradientaiKnowledgeBase": {
            "properties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "The time when the knowledge base was added to the agent."
                },
                "createdAt": {
                    "type": "string",
                    "description": "The time when the knowledge base was created."
                },
                "databaseId": {
                    "type": "string",
                    "description": "The unique identifier of the DigitalOcean OpenSearch database this knowledge base will use"
                },
                "datasources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSource:GradientaiKnowledgeBaseDataSource"
                    },
                    "description": "Data sources for the knowledge base"
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "The unique identifier of the embedding model"
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates whether the knowledge base is public or private."
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseLastIndexingJob:GradientaiKnowledgeBaseLastIndexingJob"
                    },
                    "description": "The last indexing job for the knowledge base."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the knowledge base."
                },
                "projectId": {
                    "type": "string",
                    "description": "The unique identifier of the project to which the knowledge base belongs."
                },
                "region": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The unique identifier of the VPC to which the knowledge base belongs."
                }
            },
            "required": [
                "createdAt",
                "datasources",
                "embeddingModelUuid",
                "name",
                "projectId",
                "region"
            ],
            "inputProperties": {
                "addedToAgentAt": {
                    "type": "string",
                    "description": "The time when the knowledge base was added to the agent."
                },
                "databaseId": {
                    "type": "string",
                    "description": "The unique identifier of the DigitalOcean OpenSearch database this knowledge base will use"
                },
                "datasources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSource:GradientaiKnowledgeBaseDataSource"
                    },
                    "description": "Data sources for the knowledge base",
                    "willReplaceOnChanges": true
                },
                "embeddingModelUuid": {
                    "type": "string",
                    "description": "The unique identifier of the embedding model",
                    "willReplaceOnChanges": true
                },
                "isPublic": {
                    "type": "boolean",
                    "description": "Indicates whether the knowledge base is public or private."
                },
                "lastIndexingJobs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseLastIndexingJob:GradientaiKnowledgeBaseLastIndexingJob"
                    },
                    "description": "The last indexing job for the knowledge base."
                },
                "name": {
                    "type": "string",
                    "description": "The name of the knowledge base."
                },
                "projectId": {
                    "type": "string",
                    "description": "The unique identifier of the project to which the knowledge base belongs."
                },
                "region": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The unique identifier of the VPC to which the knowledge base belongs.",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "datasources",
                "embeddingModelUuid",
                "projectId",
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GradientaiKnowledgeBase resources.\n",
                "properties": {
                    "addedToAgentAt": {
                        "type": "string",
                        "description": "The time when the knowledge base was added to the agent."
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The time when the knowledge base was created."
                    },
                    "databaseId": {
                        "type": "string",
                        "description": "The unique identifier of the DigitalOcean OpenSearch database this knowledge base will use"
                    },
                    "datasources": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSource:GradientaiKnowledgeBaseDataSource"
                        },
                        "description": "Data sources for the knowledge base",
                        "willReplaceOnChanges": true
                    },
                    "embeddingModelUuid": {
                        "type": "string",
                        "description": "The unique identifier of the embedding model",
                        "willReplaceOnChanges": true
                    },
                    "isPublic": {
                        "type": "boolean",
                        "description": "Indicates whether the knowledge base is public or private."
                    },
                    "lastIndexingJobs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseLastIndexingJob:GradientaiKnowledgeBaseLastIndexingJob"
                        },
                        "description": "The last indexing job for the knowledge base."
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the knowledge base."
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The unique identifier of the project to which the knowledge base belongs."
                    },
                    "region": {
                        "type": "string"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "vpcUuid": {
                        "type": "string",
                        "description": "The unique identifier of the VPC to which the knowledge base belongs.",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "digitalocean:index/genaiKnowledgeBase:GenaiKnowledgeBase"
                }
            ]
        },
        "digitalocean:index/gradientaiKnowledgeBaseDataSource:GradientaiKnowledgeBaseDataSource": {
            "properties": {
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base"
                },
                "spacesDataSource": {
                    "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceSpacesDataSource:GradientaiKnowledgeBaseDataSourceSpacesDataSource"
                },
                "webCrawlerDataSource": {
                    "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource:GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource"
                }
            },
            "required": [
                "knowledgeBaseUuid"
            ],
            "inputProperties": {
                "knowledgeBaseUuid": {
                    "type": "string",
                    "description": "UUID of the Knowledge Base",
                    "willReplaceOnChanges": true
                },
                "spacesDataSource": {
                    "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceSpacesDataSource:GradientaiKnowledgeBaseDataSourceSpacesDataSource",
                    "willReplaceOnChanges": true
                },
                "webCrawlerDataSource": {
                    "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource:GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "knowledgeBaseUuid"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GradientaiKnowledgeBaseDataSource resources.\n",
                "properties": {
                    "knowledgeBaseUuid": {
                        "type": "string",
                        "description": "UUID of the Knowledge Base",
                        "willReplaceOnChanges": true
                    },
                    "spacesDataSource": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceSpacesDataSource:GradientaiKnowledgeBaseDataSourceSpacesDataSource",
                        "willReplaceOnChanges": true
                    },
                    "webCrawlerDataSource": {
                        "$ref": "#/types/digitalocean:index/GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource:GradientaiKnowledgeBaseDataSourceWebCrawlerDataSource",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "digitalocean:index/genaiKnowledgeBaseDataSource:GenaiKnowledgeBaseDataSource"
                }
            ]
        },
        "digitalocean:index/gradientaiOpenaiApiKey:GradientaiOpenaiApiKey": {
            "properties": {
                "apiKey": {
                    "type": "string",
                    "description": "The OpenAI API key."
                },
                "createdAt": {
                    "type": "string",
                    "description": "When the API key was created."
                },
                "createdBy": {
                    "type": "string",
                    "description": "Who created the API key."
                },
                "deletedAt": {
                    "type": "string",
                    "description": "When the API key was deleted."
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiOpenaiApiKeyModel:GradientaiOpenaiApiKeyModel"
                    },
                    "description": "Models associated with the OpenAI API key"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the API key."
                },
                "updatedAt": {
                    "type": "string",
                    "description": "When the API key was last updated."
                },
                "uuid": {
                    "type": "string",
                    "description": "The UUID of the API key."
                }
            },
            "required": [
                "apiKey",
                "createdAt",
                "createdBy",
                "deletedAt",
                "models",
                "name",
                "updatedAt",
                "uuid"
            ],
            "inputProperties": {
                "apiKey": {
                    "type": "string",
                    "description": "The OpenAI API key."
                },
                "models": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/GradientaiOpenaiApiKeyModel:GradientaiOpenaiApiKeyModel"
                    },
                    "description": "Models associated with the OpenAI API key"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the API key."
                }
            },
            "requiredInputs": [
                "apiKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering GradientaiOpenaiApiKey resources.\n",
                "properties": {
                    "apiKey": {
                        "type": "string",
                        "description": "The OpenAI API key."
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "When the API key was created."
                    },
                    "createdBy": {
                        "type": "string",
                        "description": "Who created the API key."
                    },
                    "deletedAt": {
                        "type": "string",
                        "description": "When the API key was deleted."
                    },
                    "models": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/GradientaiOpenaiApiKeyModel:GradientaiOpenaiApiKeyModel"
                        },
                        "description": "Models associated with the OpenAI API key"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the API key."
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "When the API key was last updated."
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the API key."
                    }
                },
                "type": "object"
            },
            "aliases": [
                {
                    "type": "digitalocean:index/genaiOpenaiApiKey:GenaiOpenaiApiKey"
                }
            ]
        },
        "digitalocean:index/kubernetesCluster:KubernetesCluster": {
            "description": "Provides a DigitalOcean Kubernetes cluster resource. This can be used to create, delete, and modify clusters. For more information see the [official documentation](https://www.digitalocean.com/docs/kubernetes/).\n\n## Example Usage\n\n### Basic Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foo = new digitalocean.KubernetesCluster(\"foo\", {\n    name: \"foo\",\n    region: digitalocean.Region.NYC1,\n    version: \"latest\",\n    nodePool: {\n        name: \"worker-pool\",\n        size: \"s-2vcpu-2gb\",\n        nodeCount: 3,\n        taints: [{\n            key: \"workloadKind\",\n            value: \"database\",\n            effect: \"NoSchedule\",\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoo = digitalocean.KubernetesCluster(\"foo\",\n    name=\"foo\",\n    region=digitalocean.Region.NYC1,\n    version=\"latest\",\n    node_pool={\n        \"name\": \"worker-pool\",\n        \"size\": \"s-2vcpu-2gb\",\n        \"node_count\": 3,\n        \"taints\": [{\n            \"key\": \"workloadKind\",\n            \"value\": \"database\",\n            \"effect\": \"NoSchedule\",\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foo = new DigitalOcean.KubernetesCluster(\"foo\", new()\n    {\n        Name = \"foo\",\n        Region = DigitalOcean.Region.NYC1,\n        Version = \"latest\",\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"worker-pool\",\n            Size = \"s-2vcpu-2gb\",\n            NodeCount = 3,\n            Taints = new[]\n            {\n                new DigitalOcean.Inputs.KubernetesClusterNodePoolTaintArgs\n                {\n                    Key = \"workloadKind\",\n                    Value = \"database\",\n                    Effect = \"NoSchedule\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewKubernetesCluster(ctx, \"foo\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"foo\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC1),\n\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"worker-pool\"),\n\t\t\t\tSize:      pulumi.String(\"s-2vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\tTaints: digitalocean.KubernetesClusterNodePoolTaintArray{\n\t\t\t\t\t\u0026digitalocean.KubernetesClusterNodePoolTaintArgs{\n\t\t\t\t\t\tKey:    pulumi.String(\"workloadKind\"),\n\t\t\t\t\t\tValue:  pulumi.String(\"database\"),\n\t\t\t\t\t\tEffect: pulumi.String(\"NoSchedule\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foo = new KubernetesCluster(\"foo\", KubernetesClusterArgs.builder()\n            .name(\"foo\")\n            .region(\"nyc1\")\n            .version(\"latest\")\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"worker-pool\")\n                .size(\"s-2vcpu-2gb\")\n                .nodeCount(3)\n                .taints(KubernetesClusterNodePoolTaintArgs.builder()\n                    .key(\"workloadKind\")\n                    .value(\"database\")\n                    .effect(\"NoSchedule\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foo:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: foo\n      region: nyc1\n      version: latest\n      nodePool:\n        name: worker-pool\n        size: s-2vcpu-2gb\n        nodeCount: 3\n        taints:\n          - key: workloadKind\n            value: database\n            effect: NoSchedule\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Autoscaling Example\n\nNode pools may also be configured to [autoscale](https://www.digitalocean.com/docs/kubernetes/how-to/autoscale/).\nFor example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foo = new digitalocean.KubernetesCluster(\"foo\", {\n    name: \"foo\",\n    region: digitalocean.Region.NYC1,\n    version: \"1.22.8-do.1\",\n    nodePool: {\n        name: \"autoscale-worker-pool\",\n        size: \"s-2vcpu-2gb\",\n        autoScale: true,\n        minNodes: 1,\n        maxNodes: 5,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoo = digitalocean.KubernetesCluster(\"foo\",\n    name=\"foo\",\n    region=digitalocean.Region.NYC1,\n    version=\"1.22.8-do.1\",\n    node_pool={\n        \"name\": \"autoscale-worker-pool\",\n        \"size\": \"s-2vcpu-2gb\",\n        \"auto_scale\": True,\n        \"min_nodes\": 1,\n        \"max_nodes\": 5,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foo = new DigitalOcean.KubernetesCluster(\"foo\", new()\n    {\n        Name = \"foo\",\n        Region = DigitalOcean.Region.NYC1,\n        Version = \"1.22.8-do.1\",\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"autoscale-worker-pool\",\n            Size = \"s-2vcpu-2gb\",\n            AutoScale = true,\n            MinNodes = 1,\n            MaxNodes = 5,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewKubernetesCluster(ctx, \"foo\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"foo\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC1),\n\t\t\tVersion: pulumi.String(\"1.22.8-do.1\"),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"autoscale-worker-pool\"),\n\t\t\t\tSize:      pulumi.String(\"s-2vcpu-2gb\"),\n\t\t\t\tAutoScale: pulumi.Bool(true),\n\t\t\t\tMinNodes:  pulumi.Int(1),\n\t\t\t\tMaxNodes:  pulumi.Int(5),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foo = new KubernetesCluster(\"foo\", KubernetesClusterArgs.builder()\n            .name(\"foo\")\n            .region(\"nyc1\")\n            .version(\"1.22.8-do.1\")\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"autoscale-worker-pool\")\n                .size(\"s-2vcpu-2gb\")\n                .autoScale(true)\n                .minNodes(1)\n                .maxNodes(5)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foo:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: foo\n      region: nyc1\n      version: 1.22.8-do.1\n      nodePool:\n        name: autoscale-worker-pool\n        size: s-2vcpu-2gb\n        autoScale: true\n        minNodes: 1\n        maxNodes: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nNote that, currently, each node pool must always have at least one node and when using autoscaling the\u003cspan pulumi-lang-nodejs=\" minNodes \" pulumi-lang-dotnet=\" MinNodes \" pulumi-lang-go=\" minNodes \" pulumi-lang-python=\" min_nodes \" pulumi-lang-yaml=\" minNodes \" pulumi-lang-java=\" minNodes \"\u003e min_nodes \u003c/span\u003emust be greater than or equal to 1.\n\u003e Autoscaling to zero (`min_nodes=0`) is in [private preview](https://docs.digitalocean.com/release-notes/kubernetes/#2025-01-07) and not available for public use.\n\n### Auto Upgrade Example\n\nDigitalOcean Kubernetes clusters may also be configured to [auto upgrade](https://www.digitalocean.com/docs/kubernetes/how-to/upgrade-cluster/#automatically) patch versions. You may explicitly specify the maintenance window policy.\nFor example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesVersions({\n    versionPrefix: \"1.22.\",\n});\nconst foo = new digitalocean.KubernetesCluster(\"foo\", {\n    name: \"foo\",\n    region: digitalocean.Region.NYC1,\n    autoUpgrade: true,\n    version: example.then(example =\u003e example.latestVersion),\n    maintenancePolicy: {\n        startTime: \"04:00\",\n        day: \"sunday\",\n    },\n    nodePool: {\n        name: \"default\",\n        size: \"s-1vcpu-2gb\",\n        nodeCount: 3,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions(version_prefix=\"1.22.\")\nfoo = digitalocean.KubernetesCluster(\"foo\",\n    name=\"foo\",\n    region=digitalocean.Region.NYC1,\n    auto_upgrade=True,\n    version=example.latest_version,\n    maintenance_policy={\n        \"start_time\": \"04:00\",\n        \"day\": \"sunday\",\n    },\n    node_pool={\n        \"name\": \"default\",\n        \"size\": \"s-1vcpu-2gb\",\n        \"node_count\": 3,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke(new()\n    {\n        VersionPrefix = \"1.22.\",\n    });\n\n    var foo = new DigitalOcean.KubernetesCluster(\"foo\", new()\n    {\n        Name = \"foo\",\n        Region = DigitalOcean.Region.NYC1,\n        AutoUpgrade = true,\n        Version = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.LatestVersion),\n        MaintenancePolicy = new DigitalOcean.Inputs.KubernetesClusterMaintenancePolicyArgs\n        {\n            StartTime = \"04:00\",\n            Day = \"sunday\",\n        },\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"default\",\n            Size = \"s-1vcpu-2gb\",\n            NodeCount = 3,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{\n\t\t\tVersionPrefix: pulumi.StringRef(\"1.22.\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesCluster(ctx, \"foo\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:        pulumi.String(\"foo\"),\n\t\t\tRegion:      pulumi.String(digitalocean.RegionNYC1),\n\t\t\tAutoUpgrade: pulumi.Bool(true),\n\t\t\tVersion:     pulumi.String(example.LatestVersion),\n\t\t\tMaintenancePolicy: \u0026digitalocean.KubernetesClusterMaintenancePolicyArgs{\n\t\t\t\tStartTime: pulumi.String(\"04:00\"),\n\t\t\t\tDay:       pulumi.String(\"sunday\"),\n\t\t\t},\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"default\"),\n\t\t\t\tSize:      pulumi.String(\"s-1vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterMaintenancePolicyArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions(GetKubernetesVersionsArgs.builder()\n            .versionPrefix(\"1.22.\")\n            .build());\n\n        var foo = new KubernetesCluster(\"foo\", KubernetesClusterArgs.builder()\n            .name(\"foo\")\n            .region(\"nyc1\")\n            .autoUpgrade(true)\n            .version(example.latestVersion())\n            .maintenancePolicy(KubernetesClusterMaintenancePolicyArgs.builder()\n                .startTime(\"04:00\")\n                .day(\"sunday\")\n                .build())\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"default\")\n                .size(\"s-1vcpu-2gb\")\n                .nodeCount(3)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foo:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: foo\n      region: nyc1\n      autoUpgrade: true\n      version: ${example.latestVersion}\n      maintenancePolicy:\n        startTime: 04:00\n        day: sunday\n      nodePool:\n        name: default\n        size: s-1vcpu-2gb\n        nodeCount: 3\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesVersions\n      arguments:\n        versionPrefix: 1.22.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nNote that a data source is used to supply the version. This is needed to prevent configuration diff whenever a cluster is upgraded.\n\n### Kubernetes Terraform Provider Example\n\nThe cluster's kubeconfig is exported as an attribute allowing you to use it with\nthe Kubernetes Terraform provider.\n\n\u003e When using interpolation to pass credentials from a \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesCluster`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesCluster`\" pulumi-lang-go=\"`KubernetesCluster`\" pulumi-lang-python=\"`KubernetesCluster`\" pulumi-lang-yaml=\"`digitalocean.KubernetesCluster`\" pulumi-lang-java=\"`digitalocean.KubernetesCluster`\"\u003e`digitalocean.KubernetesCluster`\u003c/span\u003e\nresource to the Kubernetes provider, the cluster resource generally should not\nbe created in the same Terraform module where Kubernetes provider resources are\nalso used. This can lead to unpredictable errors which are hard to debug and\ndiagnose. The root issue lies with the order in which Terraform itself evaluates\nthe provider blocks vs. actual resources.\n\nWhen using the Kubernetes provider with a cluster created in a separate Terraform\nmodule or configuration, use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesCluster`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesCluster`\" pulumi-lang-go=\"`KubernetesCluster`\" pulumi-lang-python=\"`KubernetesCluster`\" pulumi-lang-yaml=\"`digitalocean.KubernetesCluster`\" pulumi-lang-java=\"`digitalocean.KubernetesCluster`\"\u003e`digitalocean.KubernetesCluster`\u003c/span\u003e data-source\nto access the cluster's credentials. See here for a full example.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesCluster({\n    name: \"prod-cluster-01\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_cluster(name=\"prod-cluster-01\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesCluster.Invoke(new()\n    {\n        Name = \"prod-cluster-01\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupKubernetesCluster(ctx, \u0026digitalocean.LookupKubernetesClusterArgs{\n\t\t\tName: \"prod-cluster-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesCluster(GetKubernetesClusterArgs.builder()\n            .name(\"prod-cluster-01\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesCluster\n      arguments:\n        name: prod-cluster-01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Exec credential plugin\n\nAnother method to ensure that the Kubernetes provider is receiving valid credentials\nis to use an exec plugin. In order to use use this approach, the DigitalOcean\nCLI (\u003cspan pulumi-lang-nodejs=\"`doctl`\" pulumi-lang-dotnet=\"`Doctl`\" pulumi-lang-go=\"`doctl`\" pulumi-lang-python=\"`doctl`\" pulumi-lang-yaml=\"`doctl`\" pulumi-lang-java=\"`doctl`\"\u003e`doctl`\u003c/span\u003e) must be present. \u003cspan pulumi-lang-nodejs=\"`doctl`\" pulumi-lang-dotnet=\"`Doctl`\" pulumi-lang-go=\"`doctl`\" pulumi-lang-python=\"`doctl`\" pulumi-lang-yaml=\"`doctl`\" pulumi-lang-java=\"`doctl`\"\u003e`doctl`\u003c/span\u003e will renew the token if needed before\ninitializing the provider.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\n```\n```python\nimport pulumi\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n    }\n}\n```\n```yaml\n{}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBefore importing a Kubernetes cluster, the cluster's default node pool must be tagged with\nthe `terraform:default-node-pool` tag. The provider will automatically add this tag if\nthe cluster only has a single node pool. Clusters with more than one node pool, however, will require\nthat you manually add the `terraform:default-node-pool` tag to the node pool that you intend to be\nthe default node pool.\n\nThen the Kubernetes cluster and its default node pool can be imported using the cluster's \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/kubernetesCluster:KubernetesCluster mycluster 1b8b2100-0e9f-4e8f-ad78-9eb578c2a0af\n```\n\nAdditional node pools must be imported separately as \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesCluster`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesCluster`\" pulumi-lang-go=\"`KubernetesCluster`\" pulumi-lang-python=\"`KubernetesCluster`\" pulumi-lang-yaml=\"`digitalocean.KubernetesCluster`\" pulumi-lang-java=\"`digitalocean.KubernetesCluster`\"\u003e`digitalocean.KubernetesCluster`\u003c/span\u003e\nresources, e.g.\n\n```sh\n$ pulumi import digitalocean:index/kubernetesCluster:KubernetesCluster mynodepool 9d76f410-9284-4436-9633-4066852442c8\n```\n\n",
            "properties": {
                "amdGpuDeviceMetricsExporterPlugin": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterAmdGpuDeviceMetricsExporterPlugin:KubernetesClusterAmdGpuDeviceMetricsExporterPlugin",
                    "description": "Block containing options for the AMD GPU device metrics exporter component.\n"
                },
                "amdGpuDevicePlugin": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterAmdGpuDevicePlugin:KubernetesClusterAmdGpuDevicePlugin",
                    "description": "Block containing options for the AMD GPU device plugin component. If not specified, the component will be enabled by default for clusters with AMD GPU nodes.\n"
                },
                "autoUpgrade": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether the cluster will be automatically upgraded to new patch releases during its maintenance window.\n"
                },
                "clusterAutoscalerConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterClusterAutoscalerConfiguration:KubernetesClusterClusterAutoscalerConfiguration"
                    },
                    "description": "Block containing options for cluster auto-scaling.\n"
                },
                "clusterSubnet": {
                    "type": "string",
                    "description": "The range of IP addresses in the overlay network of the Kubernetes cluster. For more information, see [here](https://docs.digitalocean.com/products/kubernetes/how-to/create-clusters/#create-with-vpc-native).\n"
                },
                "clusterUrn": {
                    "type": "string",
                    "description": "The uniform resource name (URN) for the Kubernetes cluster.\n"
                },
                "controlPlaneFirewall": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterControlPlaneFirewall:KubernetesClusterControlPlaneFirewall",
                    "description": "A block representing the cluster's control plane firewall\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the node was created.\n"
                },
                "destroyAllAssociatedResources": {
                    "type": "boolean",
                    "description": "**Use with caution.** When set to true, all associated DigitalOcean resources created via the Kubernetes API (load balancers, volumes, and volume snapshots) will be destroyed along with the cluster when it is destroyed.\n"
                },
                "endpoint": {
                    "type": "string",
                    "description": "The base URL of the API server on the Kubernetes master node.\n"
                },
                "ha": {
                    "type": "boolean",
                    "description": "Enable/disable the high availability control plane for a cluster. Once enabled for a cluster, high availability cannot be disabled. Default: false\n"
                },
                "ipv4Address": {
                    "type": "string",
                    "description": "The public IPv4 address of the Kubernetes master node. This will not be set if high availability is configured on the cluster (v1.21+)\n"
                },
                "kubeConfigs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterKubeConfig:KubernetesClusterKubeConfig"
                    },
                    "description": "A representation of the Kubernetes cluster's kubeconfig with the following attributes:\n",
                    "secret": true
                },
                "kubeconfigExpireSeconds": {
                    "type": "integer",
                    "description": "The duration in seconds that the returned Kubernetes credentials will be valid. If not set or 0, the credentials will have a 7 day expiry.\n"
                },
                "maintenancePolicy": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterMaintenancePolicy:KubernetesClusterMaintenancePolicy",
                    "description": "A block representing the cluster's maintenance window. Updates will be applied within this window. If not specified, a default maintenance window will be chosen. \u003cspan pulumi-lang-nodejs=\"`autoUpgrade`\" pulumi-lang-dotnet=\"`AutoUpgrade`\" pulumi-lang-go=\"`autoUpgrade`\" pulumi-lang-python=\"`auto_upgrade`\" pulumi-lang-yaml=\"`autoUpgrade`\" pulumi-lang-java=\"`autoUpgrade`\"\u003e`auto_upgrade`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e for this to have an effect.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the Kubernetes cluster.\n"
                },
                "nodePool": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterNodePool:KubernetesClusterNodePool",
                    "description": "A block representing the cluster's default node pool. Additional node pools may be added to the cluster using the \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-go=\"`KubernetesNodePool`\" pulumi-lang-python=\"`KubernetesNodePool`\" pulumi-lang-yaml=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-java=\"`digitalocean.KubernetesNodePool`\"\u003e`digitalocean.KubernetesNodePool`\u003c/span\u003e resource. The following arguments may be specified:\n"
                },
                "nvidiaGpuDevicePlugin": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterNvidiaGpuDevicePlugin:KubernetesClusterNvidiaGpuDevicePlugin",
                    "description": "Block containing options for the NVIDIA GPU device plugin component. If not specified, the component will be enabled by default for clusters with NVIDIA GPU nodes.\n"
                },
                "rdmaSharedDevicePlugin": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterRdmaSharedDevicePlugin:KubernetesClusterRdmaSharedDevicePlugin"
                },
                "region": {
                    "type": "string",
                    "description": "The slug identifier for the region where the Kubernetes cluster will be created.\n"
                },
                "registryIntegration": {
                    "type": "boolean",
                    "description": "Enables or disables the DigitalOcean container registry integration for the cluster. This requires that a container registry has first been created for the account. Default: false\n"
                },
                "routingAgent": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterRoutingAgent:KubernetesClusterRoutingAgent",
                    "description": "Block containing options for the routing-agent component. If not specified, the routing-agent component will not be installed in the cluster.\n"
                },
                "serviceSubnet": {
                    "type": "string",
                    "description": "The range of assignable IP addresses for services running in the Kubernetes cluster. For more information, see [here](https://docs.digitalocean.com/products/kubernetes/how-to/create-clusters/#create-with-vpc-native).\n"
                },
                "ssos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterSso:KubernetesClusterSso"
                    }
                },
                "status": {
                    "type": "string",
                    "description": "A string indicating the current status of the individual node.\n"
                },
                "surgeUpgrade": {
                    "type": "boolean",
                    "description": "Enable/disable surge upgrades for a cluster. Default: true\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names to be applied to the Kubernetes cluster.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "The date and time when the node was last updated.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The slug identifier for the version of Kubernetes used for the cluster. Use [doctl](https://github.com/digitalocean/doctl) to find the available versions `doctl kubernetes options versions`. (**Note:** A cluster may only be upgraded to newer versions in-place. If the version is decreased, a new resource will be created.)\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the Kubernetes cluster will be located.\n"
                }
            },
            "required": [
                "amdGpuDeviceMetricsExporterPlugin",
                "amdGpuDevicePlugin",
                "clusterSubnet",
                "controlPlaneFirewall",
                "createdAt",
                "endpoint",
                "ipv4Address",
                "kubeConfigs",
                "maintenancePolicy",
                "name",
                "nodePool",
                "nvidiaGpuDevicePlugin",
                "rdmaSharedDevicePlugin",
                "region",
                "routingAgent",
                "serviceSubnet",
                "status",
                "updatedAt",
                "clusterUrn",
                "version",
                "vpcUuid"
            ],
            "inputProperties": {
                "amdGpuDeviceMetricsExporterPlugin": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterAmdGpuDeviceMetricsExporterPlugin:KubernetesClusterAmdGpuDeviceMetricsExporterPlugin",
                    "description": "Block containing options for the AMD GPU device metrics exporter component.\n"
                },
                "amdGpuDevicePlugin": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterAmdGpuDevicePlugin:KubernetesClusterAmdGpuDevicePlugin",
                    "description": "Block containing options for the AMD GPU device plugin component. If not specified, the component will be enabled by default for clusters with AMD GPU nodes.\n"
                },
                "autoUpgrade": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether the cluster will be automatically upgraded to new patch releases during its maintenance window.\n"
                },
                "clusterAutoscalerConfigurations": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterClusterAutoscalerConfiguration:KubernetesClusterClusterAutoscalerConfiguration"
                    },
                    "description": "Block containing options for cluster auto-scaling.\n"
                },
                "clusterSubnet": {
                    "type": "string",
                    "description": "The range of IP addresses in the overlay network of the Kubernetes cluster. For more information, see [here](https://docs.digitalocean.com/products/kubernetes/how-to/create-clusters/#create-with-vpc-native).\n",
                    "willReplaceOnChanges": true
                },
                "controlPlaneFirewall": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterControlPlaneFirewall:KubernetesClusterControlPlaneFirewall",
                    "description": "A block representing the cluster's control plane firewall\n"
                },
                "destroyAllAssociatedResources": {
                    "type": "boolean",
                    "description": "**Use with caution.** When set to true, all associated DigitalOcean resources created via the Kubernetes API (load balancers, volumes, and volume snapshots) will be destroyed along with the cluster when it is destroyed.\n"
                },
                "ha": {
                    "type": "boolean",
                    "description": "Enable/disable the high availability control plane for a cluster. Once enabled for a cluster, high availability cannot be disabled. Default: false\n"
                },
                "kubeconfigExpireSeconds": {
                    "type": "integer",
                    "description": "The duration in seconds that the returned Kubernetes credentials will be valid. If not set or 0, the credentials will have a 7 day expiry.\n"
                },
                "maintenancePolicy": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterMaintenancePolicy:KubernetesClusterMaintenancePolicy",
                    "description": "A block representing the cluster's maintenance window. Updates will be applied within this window. If not specified, a default maintenance window will be chosen. \u003cspan pulumi-lang-nodejs=\"`autoUpgrade`\" pulumi-lang-dotnet=\"`AutoUpgrade`\" pulumi-lang-go=\"`autoUpgrade`\" pulumi-lang-python=\"`auto_upgrade`\" pulumi-lang-yaml=\"`autoUpgrade`\" pulumi-lang-java=\"`autoUpgrade`\"\u003e`auto_upgrade`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e for this to have an effect.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the Kubernetes cluster.\n"
                },
                "nodePool": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterNodePool:KubernetesClusterNodePool",
                    "description": "A block representing the cluster's default node pool. Additional node pools may be added to the cluster using the \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-go=\"`KubernetesNodePool`\" pulumi-lang-python=\"`KubernetesNodePool`\" pulumi-lang-yaml=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-java=\"`digitalocean.KubernetesNodePool`\"\u003e`digitalocean.KubernetesNodePool`\u003c/span\u003e resource. The following arguments may be specified:\n"
                },
                "nvidiaGpuDevicePlugin": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterNvidiaGpuDevicePlugin:KubernetesClusterNvidiaGpuDevicePlugin",
                    "description": "Block containing options for the NVIDIA GPU device plugin component. If not specified, the component will be enabled by default for clusters with NVIDIA GPU nodes.\n"
                },
                "rdmaSharedDevicePlugin": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterRdmaSharedDevicePlugin:KubernetesClusterRdmaSharedDevicePlugin"
                },
                "region": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:Region"
                        }
                    ],
                    "description": "The slug identifier for the region where the Kubernetes cluster will be created.\n",
                    "willReplaceOnChanges": true
                },
                "registryIntegration": {
                    "type": "boolean",
                    "description": "Enables or disables the DigitalOcean container registry integration for the cluster. This requires that a container registry has first been created for the account. Default: false\n"
                },
                "routingAgent": {
                    "$ref": "#/types/digitalocean:index/KubernetesClusterRoutingAgent:KubernetesClusterRoutingAgent",
                    "description": "Block containing options for the routing-agent component. If not specified, the routing-agent component will not be installed in the cluster.\n"
                },
                "serviceSubnet": {
                    "type": "string",
                    "description": "The range of assignable IP addresses for services running in the Kubernetes cluster. For more information, see [here](https://docs.digitalocean.com/products/kubernetes/how-to/create-clusters/#create-with-vpc-native).\n",
                    "willReplaceOnChanges": true
                },
                "ssos": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterSso:KubernetesClusterSso"
                    }
                },
                "surgeUpgrade": {
                    "type": "boolean",
                    "description": "Enable/disable surge upgrades for a cluster. Default: true\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names to be applied to the Kubernetes cluster.\n"
                },
                "version": {
                    "type": "string",
                    "description": "The slug identifier for the version of Kubernetes used for the cluster. Use [doctl](https://github.com/digitalocean/doctl) to find the available versions `doctl kubernetes options versions`. (**Note:** A cluster may only be upgraded to newer versions in-place. If the version is decreased, a new resource will be created.)\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the Kubernetes cluster will be located.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "nodePool",
                "region",
                "version"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering KubernetesCluster resources.\n",
                "properties": {
                    "amdGpuDeviceMetricsExporterPlugin": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterAmdGpuDeviceMetricsExporterPlugin:KubernetesClusterAmdGpuDeviceMetricsExporterPlugin",
                        "description": "Block containing options for the AMD GPU device metrics exporter component.\n"
                    },
                    "amdGpuDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterAmdGpuDevicePlugin:KubernetesClusterAmdGpuDevicePlugin",
                        "description": "Block containing options for the AMD GPU device plugin component. If not specified, the component will be enabled by default for clusters with AMD GPU nodes.\n"
                    },
                    "autoUpgrade": {
                        "type": "boolean",
                        "description": "A boolean value indicating whether the cluster will be automatically upgraded to new patch releases during its maintenance window.\n"
                    },
                    "clusterAutoscalerConfigurations": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/KubernetesClusterClusterAutoscalerConfiguration:KubernetesClusterClusterAutoscalerConfiguration"
                        },
                        "description": "Block containing options for cluster auto-scaling.\n"
                    },
                    "clusterSubnet": {
                        "type": "string",
                        "description": "The range of IP addresses in the overlay network of the Kubernetes cluster. For more information, see [here](https://docs.digitalocean.com/products/kubernetes/how-to/create-clusters/#create-with-vpc-native).\n",
                        "willReplaceOnChanges": true
                    },
                    "clusterUrn": {
                        "type": "string",
                        "description": "The uniform resource name (URN) for the Kubernetes cluster.\n"
                    },
                    "controlPlaneFirewall": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterControlPlaneFirewall:KubernetesClusterControlPlaneFirewall",
                        "description": "A block representing the cluster's control plane firewall\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the node was created.\n"
                    },
                    "destroyAllAssociatedResources": {
                        "type": "boolean",
                        "description": "**Use with caution.** When set to true, all associated DigitalOcean resources created via the Kubernetes API (load balancers, volumes, and volume snapshots) will be destroyed along with the cluster when it is destroyed.\n"
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "The base URL of the API server on the Kubernetes master node.\n"
                    },
                    "ha": {
                        "type": "boolean",
                        "description": "Enable/disable the high availability control plane for a cluster. Once enabled for a cluster, high availability cannot be disabled. Default: false\n"
                    },
                    "ipv4Address": {
                        "type": "string",
                        "description": "The public IPv4 address of the Kubernetes master node. This will not be set if high availability is configured on the cluster (v1.21+)\n"
                    },
                    "kubeConfigs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/KubernetesClusterKubeConfig:KubernetesClusterKubeConfig"
                        },
                        "description": "A representation of the Kubernetes cluster's kubeconfig with the following attributes:\n",
                        "secret": true
                    },
                    "kubeconfigExpireSeconds": {
                        "type": "integer",
                        "description": "The duration in seconds that the returned Kubernetes credentials will be valid. If not set or 0, the credentials will have a 7 day expiry.\n"
                    },
                    "maintenancePolicy": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterMaintenancePolicy:KubernetesClusterMaintenancePolicy",
                        "description": "A block representing the cluster's maintenance window. Updates will be applied within this window. If not specified, a default maintenance window will be chosen. \u003cspan pulumi-lang-nodejs=\"`autoUpgrade`\" pulumi-lang-dotnet=\"`AutoUpgrade`\" pulumi-lang-go=\"`autoUpgrade`\" pulumi-lang-python=\"`auto_upgrade`\" pulumi-lang-yaml=\"`autoUpgrade`\" pulumi-lang-java=\"`autoUpgrade`\"\u003e`auto_upgrade`\u003c/span\u003e must be set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e for this to have an effect.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the Kubernetes cluster.\n"
                    },
                    "nodePool": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterNodePool:KubernetesClusterNodePool",
                        "description": "A block representing the cluster's default node pool. Additional node pools may be added to the cluster using the \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-go=\"`KubernetesNodePool`\" pulumi-lang-python=\"`KubernetesNodePool`\" pulumi-lang-yaml=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-java=\"`digitalocean.KubernetesNodePool`\"\u003e`digitalocean.KubernetesNodePool`\u003c/span\u003e resource. The following arguments may be specified:\n"
                    },
                    "nvidiaGpuDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterNvidiaGpuDevicePlugin:KubernetesClusterNvidiaGpuDevicePlugin",
                        "description": "Block containing options for the NVIDIA GPU device plugin component. If not specified, the component will be enabled by default for clusters with NVIDIA GPU nodes.\n"
                    },
                    "rdmaSharedDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterRdmaSharedDevicePlugin:KubernetesClusterRdmaSharedDevicePlugin"
                    },
                    "region": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:Region"
                            }
                        ],
                        "description": "The slug identifier for the region where the Kubernetes cluster will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "registryIntegration": {
                        "type": "boolean",
                        "description": "Enables or disables the DigitalOcean container registry integration for the cluster. This requires that a container registry has first been created for the account. Default: false\n"
                    },
                    "routingAgent": {
                        "$ref": "#/types/digitalocean:index/KubernetesClusterRoutingAgent:KubernetesClusterRoutingAgent",
                        "description": "Block containing options for the routing-agent component. If not specified, the routing-agent component will not be installed in the cluster.\n"
                    },
                    "serviceSubnet": {
                        "type": "string",
                        "description": "The range of assignable IP addresses for services running in the Kubernetes cluster. For more information, see [here](https://docs.digitalocean.com/products/kubernetes/how-to/create-clusters/#create-with-vpc-native).\n",
                        "willReplaceOnChanges": true
                    },
                    "ssos": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/KubernetesClusterSso:KubernetesClusterSso"
                        }
                    },
                    "status": {
                        "type": "string",
                        "description": "A string indicating the current status of the individual node.\n"
                    },
                    "surgeUpgrade": {
                        "type": "boolean",
                        "description": "Enable/disable surge upgrades for a cluster. Default: true\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tag names to be applied to the Kubernetes cluster.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "The date and time when the node was last updated.\n"
                    },
                    "version": {
                        "type": "string",
                        "description": "The slug identifier for the version of Kubernetes used for the cluster. Use [doctl](https://github.com/digitalocean/doctl) to find the available versions `doctl kubernetes options versions`. (**Note:** A cluster may only be upgraded to newer versions in-place. If the version is decreased, a new resource will be created.)\n"
                    },
                    "vpcUuid": {
                        "type": "string",
                        "description": "The ID of the VPC where the Kubernetes cluster will be located.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/kubernetesNodePool:KubernetesNodePool": {
            "description": "Provides a DigitalOcean Kubernetes node pool resource. While the default node pool must be defined in the \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesCluster`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesCluster`\" pulumi-lang-go=\"`KubernetesCluster`\" pulumi-lang-python=\"`KubernetesCluster`\" pulumi-lang-yaml=\"`digitalocean.KubernetesCluster`\" pulumi-lang-java=\"`digitalocean.KubernetesCluster`\"\u003e`digitalocean.KubernetesCluster`\u003c/span\u003e resource, this resource can be used to add additional ones to a cluster.\n\n## Example Usage\n\n### Basic Example\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foo = new digitalocean.KubernetesCluster(\"foo\", {\n    name: \"foo\",\n    region: digitalocean.Region.NYC1,\n    version: \"1.22.8-do.1\",\n    nodePool: {\n        name: \"front-end-pool\",\n        size: \"s-2vcpu-2gb\",\n        nodeCount: 3,\n    },\n});\nconst bar = new digitalocean.KubernetesNodePool(\"bar\", {\n    clusterId: foo.id,\n    name: \"backend-pool\",\n    size: digitalocean.DropletSlug.DropletC2,\n    nodeCount: 2,\n    tags: [\"backend\"],\n    labels: {\n        service: \"backend\",\n        priority: \"high\",\n    },\n    taints: [{\n        key: \"workloadKind\",\n        value: \"database\",\n        effect: \"NoSchedule\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoo = digitalocean.KubernetesCluster(\"foo\",\n    name=\"foo\",\n    region=digitalocean.Region.NYC1,\n    version=\"1.22.8-do.1\",\n    node_pool={\n        \"name\": \"front-end-pool\",\n        \"size\": \"s-2vcpu-2gb\",\n        \"node_count\": 3,\n    })\nbar = digitalocean.KubernetesNodePool(\"bar\",\n    cluster_id=foo.id,\n    name=\"backend-pool\",\n    size=digitalocean.DropletSlug.DROPLET_C2,\n    node_count=2,\n    tags=[\"backend\"],\n    labels={\n        \"service\": \"backend\",\n        \"priority\": \"high\",\n    },\n    taints=[{\n        \"key\": \"workloadKind\",\n        \"value\": \"database\",\n        \"effect\": \"NoSchedule\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foo = new DigitalOcean.KubernetesCluster(\"foo\", new()\n    {\n        Name = \"foo\",\n        Region = DigitalOcean.Region.NYC1,\n        Version = \"1.22.8-do.1\",\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"front-end-pool\",\n            Size = \"s-2vcpu-2gb\",\n            NodeCount = 3,\n        },\n    });\n\n    var bar = new DigitalOcean.KubernetesNodePool(\"bar\", new()\n    {\n        ClusterId = foo.Id,\n        Name = \"backend-pool\",\n        Size = DigitalOcean.DropletSlug.DropletC2,\n        NodeCount = 2,\n        Tags = new[]\n        {\n            \"backend\",\n        },\n        Labels = \n        {\n            { \"service\", \"backend\" },\n            { \"priority\", \"high\" },\n        },\n        Taints = new[]\n        {\n            new DigitalOcean.Inputs.KubernetesNodePoolTaintArgs\n            {\n                Key = \"workloadKind\",\n                Value = \"database\",\n                Effect = \"NoSchedule\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoo, err := digitalocean.NewKubernetesCluster(ctx, \"foo\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"foo\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC1),\n\t\t\tVersion: pulumi.String(\"1.22.8-do.1\"),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"front-end-pool\"),\n\t\t\t\tSize:      pulumi.String(\"s-2vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesNodePool(ctx, \"bar\", \u0026digitalocean.KubernetesNodePoolArgs{\n\t\t\tClusterId: foo.ID(),\n\t\t\tName:      pulumi.String(\"backend-pool\"),\n\t\t\tSize:      pulumi.String(digitalocean.DropletSlugDropletC2),\n\t\t\tNodeCount: pulumi.Int(2),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"backend\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"service\":  pulumi.String(\"backend\"),\n\t\t\t\t\"priority\": pulumi.String(\"high\"),\n\t\t\t},\n\t\t\tTaints: digitalocean.KubernetesNodePoolTaintArray{\n\t\t\t\t\u0026digitalocean.KubernetesNodePoolTaintArgs{\n\t\t\t\t\tKey:    pulumi.String(\"workloadKind\"),\n\t\t\t\t\tValue:  pulumi.String(\"database\"),\n\t\t\t\t\tEffect: pulumi.String(\"NoSchedule\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport com.pulumi.digitalocean.KubernetesNodePool;\nimport com.pulumi.digitalocean.KubernetesNodePoolArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesNodePoolTaintArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foo = new KubernetesCluster(\"foo\", KubernetesClusterArgs.builder()\n            .name(\"foo\")\n            .region(\"nyc1\")\n            .version(\"1.22.8-do.1\")\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"front-end-pool\")\n                .size(\"s-2vcpu-2gb\")\n                .nodeCount(3)\n                .build())\n            .build());\n\n        var bar = new KubernetesNodePool(\"bar\", KubernetesNodePoolArgs.builder()\n            .clusterId(foo.id())\n            .name(\"backend-pool\")\n            .size(\"c-2\")\n            .nodeCount(2)\n            .tags(\"backend\")\n            .labels(Map.ofEntries(\n                Map.entry(\"service\", \"backend\"),\n                Map.entry(\"priority\", \"high\")\n            ))\n            .taints(KubernetesNodePoolTaintArgs.builder()\n                .key(\"workloadKind\")\n                .value(\"database\")\n                .effect(\"NoSchedule\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foo:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: foo\n      region: nyc1\n      version: 1.22.8-do.1\n      nodePool:\n        name: front-end-pool\n        size: s-2vcpu-2gb\n        nodeCount: 3\n  bar:\n    type: digitalocean:KubernetesNodePool\n    properties:\n      clusterId: ${foo.id}\n      name: backend-pool\n      size: c-2\n      nodeCount: 2\n      tags:\n        - backend\n      labels:\n        service: backend\n        priority: high\n      taints:\n        - key: workloadKind\n          value: database\n          effect: NoSchedule\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Autoscaling Example\n\nNode pools may also be configured to [autoscale](https://www.digitalocean.com/docs/kubernetes/how-to/autoscale/).\nFor example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst autoscale_pool_01 = new digitalocean.KubernetesNodePool(\"autoscale-pool-01\", {\n    clusterId: foo.id,\n    name: \"autoscale-pool-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU2GB,\n    autoScale: true,\n    minNodes: 1,\n    maxNodes: 5,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nautoscale_pool_01 = digitalocean.KubernetesNodePool(\"autoscale-pool-01\",\n    cluster_id=foo[\"id\"],\n    name=\"autoscale-pool-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU2_GB,\n    auto_scale=True,\n    min_nodes=1,\n    max_nodes=5)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var autoscale_pool_01 = new DigitalOcean.KubernetesNodePool(\"autoscale-pool-01\", new()\n    {\n        ClusterId = foo.Id,\n        Name = \"autoscale-pool-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU2GB,\n        AutoScale = true,\n        MinNodes = 1,\n        MaxNodes = 5,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewKubernetesNodePool(ctx, \"autoscale-pool-01\", \u0026digitalocean.KubernetesNodePoolArgs{\n\t\t\tClusterId: pulumi.Any(foo.Id),\n\t\t\tName:      pulumi.String(\"autoscale-pool-01\"),\n\t\t\tSize:      pulumi.String(digitalocean.DropletSlugDropletS1VCPU2GB),\n\t\t\tAutoScale: pulumi.Bool(true),\n\t\t\tMinNodes:  pulumi.Int(1),\n\t\t\tMaxNodes:  pulumi.Int(5),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.KubernetesNodePool;\nimport com.pulumi.digitalocean.KubernetesNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var autoscale_pool_01 = new KubernetesNodePool(\"autoscale-pool-01\", KubernetesNodePoolArgs.builder()\n            .clusterId(foo.id())\n            .name(\"autoscale-pool-01\")\n            .size(\"s-1vcpu-2gb\")\n            .autoScale(true)\n            .minNodes(1)\n            .maxNodes(5)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  autoscale-pool-01:\n    type: digitalocean:KubernetesNodePool\n    properties:\n      clusterId: ${foo.id}\n      name: autoscale-pool-01\n      size: s-1vcpu-2gb\n      autoScale: true\n      minNodes: 1\n      maxNodes: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIf you are importing an existing Kubernetes cluster with a single node pool, just\nimport the cluster. Additional node pools can be imported by using their \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/kubernetesNodePool:KubernetesNodePool mynodepool 9d76f410-9284-4436-9633-4066852442c8\n```\n\nNote: If the node pool has the `terraform:default-node-pool` tag, then it is a default node pool for an\nexisting cluster. The provider will refuse to import the node pool in that case because the node pool\nis managed by the \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesCluster`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesCluster`\" pulumi-lang-go=\"`KubernetesCluster`\" pulumi-lang-python=\"`KubernetesCluster`\" pulumi-lang-yaml=\"`digitalocean.KubernetesCluster`\" pulumi-lang-java=\"`digitalocean.KubernetesCluster`\"\u003e`digitalocean.KubernetesCluster`\u003c/span\u003e resource and not by this\n\u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-go=\"`KubernetesNodePool`\" pulumi-lang-python=\"`KubernetesNodePool`\" pulumi-lang-yaml=\"`digitalocean.KubernetesNodePool`\" pulumi-lang-java=\"`digitalocean.KubernetesNodePool`\"\u003e`digitalocean.KubernetesNodePool`\u003c/span\u003e resource.\n\n",
            "properties": {
                "actualNodeCount": {
                    "type": "integer",
                    "description": "A computed field representing the actual number of nodes in the node pool, which is especially useful when auto-scaling is enabled.\n"
                },
                "autoScale": {
                    "type": "boolean",
                    "description": "Enable auto-scaling of the number of nodes in the node pool within the given min/max range.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the Kubernetes cluster to which the node pool is associated.\n"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of key/value pairs to apply to nodes in the pool. The labels are exposed in the Kubernetes API as labels in the metadata of the corresponding [Node resources](https://kubernetes.io/docs/concepts/architecture/nodes/).\n"
                },
                "maxNodes": {
                    "type": "integer",
                    "description": "If auto-scaling is enabled, this represents the maximum number of nodes that the node pool can be scaled up to.\n"
                },
                "minNodes": {
                    "type": "integer",
                    "description": "If auto-scaling is enabled, this represents the minimum number of nodes that the node pool can be scaled down to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the node pool.\n"
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "The number of Droplet instances in the node pool. If auto-scaling is enabled, this should only be set if the desired result is to explicitly reset the number of nodes to this value. If auto-scaling is enabled, and the node count is outside of the given min/max range, it will use the min nodes value.\n"
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesNodePoolNode:KubernetesNodePoolNode"
                    },
                    "description": "A list of nodes in the pool. Each node exports the following attributes:\n"
                },
                "size": {
                    "type": "string",
                    "description": "The slug identifier for the type of Droplet to be used as workers in the node pool.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names to be applied to the Kubernetes cluster.\n"
                },
                "taints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesNodePoolTaint:KubernetesNodePoolTaint"
                    },
                    "description": "A list of taints applied to all nodes in the pool.\n\nThis resource supports customized create timeouts. The default timeout is 30 minutes.\n"
                }
            },
            "required": [
                "actualNodeCount",
                "clusterId",
                "name",
                "nodes",
                "size"
            ],
            "inputProperties": {
                "autoScale": {
                    "type": "boolean",
                    "description": "Enable auto-scaling of the number of nodes in the node pool within the given min/max range.\n"
                },
                "clusterId": {
                    "type": "string",
                    "description": "The ID of the Kubernetes cluster to which the node pool is associated.\n",
                    "willReplaceOnChanges": true
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A map of key/value pairs to apply to nodes in the pool. The labels are exposed in the Kubernetes API as labels in the metadata of the corresponding [Node resources](https://kubernetes.io/docs/concepts/architecture/nodes/).\n"
                },
                "maxNodes": {
                    "type": "integer",
                    "description": "If auto-scaling is enabled, this represents the maximum number of nodes that the node pool can be scaled up to.\n"
                },
                "minNodes": {
                    "type": "integer",
                    "description": "If auto-scaling is enabled, this represents the minimum number of nodes that the node pool can be scaled down to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the node pool.\n"
                },
                "nodeCount": {
                    "type": "integer",
                    "description": "The number of Droplet instances in the node pool. If auto-scaling is enabled, this should only be set if the desired result is to explicitly reset the number of nodes to this value. If auto-scaling is enabled, and the node count is outside of the given min/max range, it will use the min nodes value.\n"
                },
                "size": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:DropletSlug"
                        }
                    ],
                    "description": "The slug identifier for the type of Droplet to be used as workers in the node pool.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tag names to be applied to the Kubernetes cluster.\n"
                },
                "taints": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/KubernetesNodePoolTaint:KubernetesNodePoolTaint"
                    },
                    "description": "A list of taints applied to all nodes in the pool.\n\nThis resource supports customized create timeouts. The default timeout is 30 minutes.\n"
                }
            },
            "requiredInputs": [
                "clusterId",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering KubernetesNodePool resources.\n",
                "properties": {
                    "actualNodeCount": {
                        "type": "integer",
                        "description": "A computed field representing the actual number of nodes in the node pool, which is especially useful when auto-scaling is enabled.\n"
                    },
                    "autoScale": {
                        "type": "boolean",
                        "description": "Enable auto-scaling of the number of nodes in the node pool within the given min/max range.\n"
                    },
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the Kubernetes cluster to which the node pool is associated.\n",
                        "willReplaceOnChanges": true
                    },
                    "labels": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "A map of key/value pairs to apply to nodes in the pool. The labels are exposed in the Kubernetes API as labels in the metadata of the corresponding [Node resources](https://kubernetes.io/docs/concepts/architecture/nodes/).\n"
                    },
                    "maxNodes": {
                        "type": "integer",
                        "description": "If auto-scaling is enabled, this represents the maximum number of nodes that the node pool can be scaled up to.\n"
                    },
                    "minNodes": {
                        "type": "integer",
                        "description": "If auto-scaling is enabled, this represents the minimum number of nodes that the node pool can be scaled down to.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the node pool.\n"
                    },
                    "nodeCount": {
                        "type": "integer",
                        "description": "The number of Droplet instances in the node pool. If auto-scaling is enabled, this should only be set if the desired result is to explicitly reset the number of nodes to this value. If auto-scaling is enabled, and the node count is outside of the given min/max range, it will use the min nodes value.\n"
                    },
                    "nodes": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/KubernetesNodePoolNode:KubernetesNodePoolNode"
                        },
                        "description": "A list of nodes in the pool. Each node exports the following attributes:\n"
                    },
                    "size": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:DropletSlug"
                            }
                        ],
                        "description": "The slug identifier for the type of Droplet to be used as workers in the node pool.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tag names to be applied to the Kubernetes cluster.\n"
                    },
                    "taints": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/KubernetesNodePoolTaint:KubernetesNodePoolTaint"
                        },
                        "description": "A list of taints applied to all nodes in the pool.\n\nThis resource supports customized create timeouts. The default timeout is 30 minutes.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/loadBalancer:LoadBalancer": {
            "description": "Provides a DigitalOcean Load Balancer resource. This can be used to create,\nmodify, and delete Load Balancers.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web = new digitalocean.Droplet(\"web\", {\n    name: \"web-1\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst _public = new digitalocean.LoadBalancer(\"public\", {\n    name: \"loadbalancer-1\",\n    region: digitalocean.Region.NYC3,\n    forwardingRules: [{\n        entryPort: 80,\n        entryProtocol: \"http\",\n        targetPort: 80,\n        targetProtocol: \"http\",\n    }],\n    healthcheck: {\n        port: 22,\n        protocol: \"tcp\",\n    },\n    dropletIds: [web.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb = digitalocean.Droplet(\"web\",\n    name=\"web-1\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3)\npublic = digitalocean.LoadBalancer(\"public\",\n    name=\"loadbalancer-1\",\n    region=digitalocean.Region.NYC3,\n    forwarding_rules=[{\n        \"entry_port\": 80,\n        \"entry_protocol\": \"http\",\n        \"target_port\": 80,\n        \"target_protocol\": \"http\",\n    }],\n    healthcheck={\n        \"port\": 22,\n        \"protocol\": \"tcp\",\n    },\n    droplet_ids=[web.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Name = \"web-1\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var @public = new DigitalOcean.LoadBalancer(\"public\", new()\n    {\n        Name = \"loadbalancer-1\",\n        Region = DigitalOcean.Region.NYC3,\n        ForwardingRules = new[]\n        {\n            new DigitalOcean.Inputs.LoadBalancerForwardingRuleArgs\n            {\n                EntryPort = 80,\n                EntryProtocol = \"http\",\n                TargetPort = 80,\n                TargetProtocol = \"http\",\n            },\n        },\n        Healthcheck = new DigitalOcean.Inputs.LoadBalancerHealthcheckArgs\n        {\n            Port = 22,\n            Protocol = \"tcp\",\n        },\n        DropletIds = new[]\n        {\n            web.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb, err := digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"web-1\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewLoadBalancer(ctx, \"public\", \u0026digitalocean.LoadBalancerArgs{\n\t\t\tName:   pulumi.String(\"loadbalancer-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tForwardingRules: digitalocean.LoadBalancerForwardingRuleArray{\n\t\t\t\t\u0026digitalocean.LoadBalancerForwardingRuleArgs{\n\t\t\t\t\tEntryPort:      pulumi.Int(80),\n\t\t\t\t\tEntryProtocol:  pulumi.String(\"http\"),\n\t\t\t\t\tTargetPort:     pulumi.Int(80),\n\t\t\t\t\tTargetProtocol: pulumi.String(\"http\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthcheck: \u0026digitalocean.LoadBalancerHealthcheckArgs{\n\t\t\t\tPort:     pulumi.Int(22),\n\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t},\n\t\t\tDropletIds: pulumi.IntArray{\n\t\t\t\tweb.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.LoadBalancer;\nimport com.pulumi.digitalocean.LoadBalancerArgs;\nimport com.pulumi.digitalocean.inputs.LoadBalancerForwardingRuleArgs;\nimport com.pulumi.digitalocean.inputs.LoadBalancerHealthcheckArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .name(\"web-1\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var public_ = new LoadBalancer(\"public\", LoadBalancerArgs.builder()\n            .name(\"loadbalancer-1\")\n            .region(\"nyc3\")\n            .forwardingRules(LoadBalancerForwardingRuleArgs.builder()\n                .entryPort(80)\n                .entryProtocol(\"http\")\n                .targetPort(80)\n                .targetProtocol(\"http\")\n                .build())\n            .healthcheck(LoadBalancerHealthcheckArgs.builder()\n                .port(22)\n                .protocol(\"tcp\")\n                .build())\n            .dropletIds(web.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web:\n    type: digitalocean:Droplet\n    properties:\n      name: web-1\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n  public:\n    type: digitalocean:LoadBalancer\n    properties:\n      name: loadbalancer-1\n      region: nyc3\n      forwardingRules:\n        - entryPort: 80\n          entryProtocol: http\n          targetPort: 80\n          targetProtocol: http\n      healthcheck:\n        port: 22\n        protocol: tcp\n      dropletIds:\n        - ${web.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nWhen managing certificates attached to the load balancer, make sure to add the \u003cspan pulumi-lang-nodejs=\"`createBeforeDestroy`\" pulumi-lang-dotnet=\"`CreateBeforeDestroy`\" pulumi-lang-go=\"`createBeforeDestroy`\" pulumi-lang-python=\"`create_before_destroy`\" pulumi-lang-yaml=\"`createBeforeDestroy`\" pulumi-lang-java=\"`createBeforeDestroy`\"\u003e`create_before_destroy`\u003c/span\u003e\nlifecycle property in order to ensure the certificate is correctly updated when changed. The order of\noperations will then be: `Create new certificate` \u003e `Update loadbalancer with new certificate` -\u003e\n`Delete old certificate`. When doing so, you must also change the name of the certificate,\nas there cannot be multiple certificates with the same name in an account.\n\n## Import\n\nLoad Balancers can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/loadBalancer:LoadBalancer myloadbalancer 4de7ac8b-495b-4884-9a69-1050c6793cd6\n```\n\n",
            "properties": {
                "algorithm": {
                    "type": "string",
                    "description": "**Deprecated** This field has been deprecated. You can no longer specify an algorithm for load balancers.\nor \u003cspan pulumi-lang-nodejs=\"`leastConnections`\" pulumi-lang-dotnet=\"`LeastConnections`\" pulumi-lang-go=\"`leastConnections`\" pulumi-lang-python=\"`least_connections`\" pulumi-lang-yaml=\"`leastConnections`\" pulumi-lang-java=\"`leastConnections`\"\u003e`least_connections`\u003c/span\u003e. The default value is \u003cspan pulumi-lang-nodejs=\"`roundRobin`\" pulumi-lang-dotnet=\"`RoundRobin`\" pulumi-lang-go=\"`roundRobin`\" pulumi-lang-python=\"`round_robin`\" pulumi-lang-yaml=\"`roundRobin`\" pulumi-lang-java=\"`roundRobin`\"\u003e`round_robin`\u003c/span\u003e.\n",
                    "deprecationMessage": "This field has been deprecated. You can no longer specify an algorithm for load balancers."
                },
                "disableLetsEncryptDnsRecords": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether to disable automatic DNS record creation for Let's Encrypt certificates that are added to the load balancer. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/LoadBalancerDomain:LoadBalancerDomain"
                    },
                    "description": "A list of \u003cspan pulumi-lang-nodejs=\"`domains`\" pulumi-lang-dotnet=\"`Domains`\" pulumi-lang-go=\"`domains`\" pulumi-lang-python=\"`domains`\" pulumi-lang-yaml=\"`domains`\" pulumi-lang-java=\"`domains`\"\u003e`domains`\u003c/span\u003e required to ingress traffic to a Global Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`domains`\" pulumi-lang-dotnet=\"`Domains`\" pulumi-lang-go=\"`domains`\" pulumi-lang-python=\"`domains`\" pulumi-lang-yaml=\"`domains`\" pulumi-lang-java=\"`domains`\"\u003e`domains`\u003c/span\u003e block is documented below.\n"
                },
                "dropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "A list of the IDs of each droplet to be attached to the Load Balancer.\n"
                },
                "dropletTag": {
                    "type": "string",
                    "description": "The name of a Droplet tag corresponding to Droplets to be assigned to the Load Balancer.\n"
                },
                "enableBackendKeepalive": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether HTTP keepalive connections are maintained to target Droplets. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableProxyProtocol": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether PROXY\nProtocol should be used to pass information from connecting client requests to\nthe backend service. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "firewall": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerFirewall:LoadBalancerFirewall",
                    "description": "A block containing rules for allowing/denying traffic to the Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e block is documented below. Only 1 firewall is allowed.\n"
                },
                "forwardingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/LoadBalancerForwardingRule:LoadBalancerForwardingRule"
                    },
                    "description": "A list of \u003cspan pulumi-lang-nodejs=\"`forwardingRule`\" pulumi-lang-dotnet=\"`ForwardingRule`\" pulumi-lang-go=\"`forwardingRule`\" pulumi-lang-python=\"`forwarding_rule`\" pulumi-lang-yaml=\"`forwardingRule`\" pulumi-lang-java=\"`forwardingRule`\"\u003e`forwarding_rule`\u003c/span\u003e to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`forwardingRule`\" pulumi-lang-dotnet=\"`ForwardingRule`\" pulumi-lang-go=\"`forwardingRule`\" pulumi-lang-python=\"`forwarding_rule`\" pulumi-lang-yaml=\"`forwardingRule`\" pulumi-lang-java=\"`forwardingRule`\"\u003e`forwarding_rule`\u003c/span\u003e block is documented below.\n"
                },
                "glbSettings": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerGlbSettings:LoadBalancerGlbSettings",
                    "description": "A block containing \u003cspan pulumi-lang-nodejs=\"`glbSettings`\" pulumi-lang-dotnet=\"`GlbSettings`\" pulumi-lang-go=\"`glbSettings`\" pulumi-lang-python=\"`glb_settings`\" pulumi-lang-yaml=\"`glbSettings`\" pulumi-lang-java=\"`glbSettings`\"\u003e`glb_settings`\u003c/span\u003e required to define target rules for a Global Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`glbSettings`\" pulumi-lang-dotnet=\"`GlbSettings`\" pulumi-lang-go=\"`glbSettings`\" pulumi-lang-python=\"`glb_settings`\" pulumi-lang-yaml=\"`glbSettings`\" pulumi-lang-java=\"`glbSettings`\"\u003e`glb_settings`\u003c/span\u003e block is documented below.\n"
                },
                "healthcheck": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerHealthcheck:LoadBalancerHealthcheck",
                    "description": "A \u003cspan pulumi-lang-nodejs=\"`healthcheck`\" pulumi-lang-dotnet=\"`Healthcheck`\" pulumi-lang-go=\"`healthcheck`\" pulumi-lang-python=\"`healthcheck`\" pulumi-lang-yaml=\"`healthcheck`\" pulumi-lang-java=\"`healthcheck`\"\u003e`healthcheck`\u003c/span\u003e block to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`healthcheck`\" pulumi-lang-dotnet=\"`Healthcheck`\" pulumi-lang-go=\"`healthcheck`\" pulumi-lang-python=\"`healthcheck`\" pulumi-lang-yaml=\"`healthcheck`\" pulumi-lang-java=\"`healthcheck`\"\u003e`healthcheck`\u003c/span\u003e block is documented below. Only 1 healthcheck is allowed.\n"
                },
                "httpIdleTimeoutSeconds": {
                    "type": "integer",
                    "description": "Specifies the idle timeout for HTTPS connections on the load balancer in seconds.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The ip of the Load Balancer\n"
                },
                "ipv6": {
                    "type": "string"
                },
                "loadBalancerUrn": {
                    "type": "string",
                    "description": "The uniform resource name for the Load Balancer\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Load Balancer name\n"
                },
                "network": {
                    "type": "string",
                    "description": "The type of network the Load Balancer is accessible from. It must be either of `INTERNAL` or `EXTERNAL`. Defaults to `EXTERNAL`.\n"
                },
                "networkStack": {
                    "type": "string",
                    "description": "The network stack determines the allocation of ipv4/ipv6 addresses to the load balancer. It must be either of `IPV4` or `DUALSTACK`. Defaults to `IPV4`.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project that the load balancer is associated with. If no ID is provided at creation, the load balancer associates with the user's default project.\n"
                },
                "redirectHttpToHttps": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether\nHTTP requests to the Load Balancer on port 80 will be redirected to HTTPS on port 443.\nDefault value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region to start in\n"
                },
                "size": {
                    "type": "string",
                    "description": "The size of the Load Balancer. It must be either `lb-small`, `lb-medium`, or `lb-large`. Defaults to `lb-small`. Only one of \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sizeUnit`\" pulumi-lang-dotnet=\"`SizeUnit`\" pulumi-lang-go=\"`sizeUnit`\" pulumi-lang-python=\"`size_unit`\" pulumi-lang-yaml=\"`sizeUnit`\" pulumi-lang-java=\"`sizeUnit`\"\u003e`size_unit`\u003c/span\u003e may be provided.\n"
                },
                "sizeUnit": {
                    "type": "integer",
                    "description": "The size of the Load Balancer. It must be in the range (1, 200). Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e. Only one of \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sizeUnit`\" pulumi-lang-dotnet=\"`SizeUnit`\" pulumi-lang-go=\"`sizeUnit`\" pulumi-lang-python=\"`size_unit`\" pulumi-lang-yaml=\"`sizeUnit`\" pulumi-lang-java=\"`sizeUnit`\"\u003e`size_unit`\u003c/span\u003e may be provided.\n"
                },
                "status": {
                    "type": "string"
                },
                "stickySessions": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerStickySessions:LoadBalancerStickySessions",
                    "description": "A \u003cspan pulumi-lang-nodejs=\"`stickySessions`\" pulumi-lang-dotnet=\"`StickySessions`\" pulumi-lang-go=\"`stickySessions`\" pulumi-lang-python=\"`sticky_sessions`\" pulumi-lang-yaml=\"`stickySessions`\" pulumi-lang-java=\"`stickySessions`\"\u003e`sticky_sessions`\u003c/span\u003e block to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`stickySessions`\" pulumi-lang-dotnet=\"`StickySessions`\" pulumi-lang-go=\"`stickySessions`\" pulumi-lang-python=\"`sticky_sessions`\" pulumi-lang-yaml=\"`stickySessions`\" pulumi-lang-java=\"`stickySessions`\"\u003e`sticky_sessions`\u003c/span\u003e block is documented below. Only 1\u003cspan pulumi-lang-nodejs=\" stickySessions \" pulumi-lang-dotnet=\" StickySessions \" pulumi-lang-go=\" stickySessions \" pulumi-lang-python=\" sticky_sessions \" pulumi-lang-yaml=\" stickySessions \" pulumi-lang-java=\" stickySessions \"\u003e sticky_sessions \u003c/span\u003eblock is allowed.\n"
                },
                "targetLoadBalancerIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of Load Balancer IDs to be attached behind a Global Load Balancer.\n"
                },
                "tlsCipherPolicy": {
                    "type": "string",
                    "description": "The tls cipher policy controls the cipher suites to be used by the load balancer. It must be either of `DEFAULT` or `STRONG`. Defaults to `DEFAULT`.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the Load Balancer. It must be either of `REGIONAL`, `REGIONAL_NETWORK`, or `GLOBAL`. Defaults to `REGIONAL`.\n"
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the load balancer will be located.\n"
                }
            },
            "required": [
                "domains",
                "dropletIds",
                "firewall",
                "glbSettings",
                "healthcheck",
                "httpIdleTimeoutSeconds",
                "ip",
                "ipv6",
                "name",
                "projectId",
                "sizeUnit",
                "status",
                "stickySessions",
                "targetLoadBalancerIds",
                "type",
                "loadBalancerUrn",
                "vpcUuid"
            ],
            "inputProperties": {
                "algorithm": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:Algorithm"
                        }
                    ],
                    "description": "**Deprecated** This field has been deprecated. You can no longer specify an algorithm for load balancers.\nor \u003cspan pulumi-lang-nodejs=\"`leastConnections`\" pulumi-lang-dotnet=\"`LeastConnections`\" pulumi-lang-go=\"`leastConnections`\" pulumi-lang-python=\"`least_connections`\" pulumi-lang-yaml=\"`leastConnections`\" pulumi-lang-java=\"`leastConnections`\"\u003e`least_connections`\u003c/span\u003e. The default value is \u003cspan pulumi-lang-nodejs=\"`roundRobin`\" pulumi-lang-dotnet=\"`RoundRobin`\" pulumi-lang-go=\"`roundRobin`\" pulumi-lang-python=\"`round_robin`\" pulumi-lang-yaml=\"`roundRobin`\" pulumi-lang-java=\"`roundRobin`\"\u003e`round_robin`\u003c/span\u003e.\n",
                    "deprecationMessage": "This field has been deprecated. You can no longer specify an algorithm for load balancers."
                },
                "disableLetsEncryptDnsRecords": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether to disable automatic DNS record creation for Let's Encrypt certificates that are added to the load balancer. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "domains": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/LoadBalancerDomain:LoadBalancerDomain"
                    },
                    "description": "A list of \u003cspan pulumi-lang-nodejs=\"`domains`\" pulumi-lang-dotnet=\"`Domains`\" pulumi-lang-go=\"`domains`\" pulumi-lang-python=\"`domains`\" pulumi-lang-yaml=\"`domains`\" pulumi-lang-java=\"`domains`\"\u003e`domains`\u003c/span\u003e required to ingress traffic to a Global Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`domains`\" pulumi-lang-dotnet=\"`Domains`\" pulumi-lang-go=\"`domains`\" pulumi-lang-python=\"`domains`\" pulumi-lang-yaml=\"`domains`\" pulumi-lang-java=\"`domains`\"\u003e`domains`\u003c/span\u003e block is documented below.\n"
                },
                "dropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "A list of the IDs of each droplet to be attached to the Load Balancer.\n"
                },
                "dropletTag": {
                    "type": "string",
                    "description": "The name of a Droplet tag corresponding to Droplets to be assigned to the Load Balancer.\n"
                },
                "enableBackendKeepalive": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether HTTP keepalive connections are maintained to target Droplets. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "enableProxyProtocol": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether PROXY\nProtocol should be used to pass information from connecting client requests to\nthe backend service. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "firewall": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerFirewall:LoadBalancerFirewall",
                    "description": "A block containing rules for allowing/denying traffic to the Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e block is documented below. Only 1 firewall is allowed.\n"
                },
                "forwardingRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/LoadBalancerForwardingRule:LoadBalancerForwardingRule"
                    },
                    "description": "A list of \u003cspan pulumi-lang-nodejs=\"`forwardingRule`\" pulumi-lang-dotnet=\"`ForwardingRule`\" pulumi-lang-go=\"`forwardingRule`\" pulumi-lang-python=\"`forwarding_rule`\" pulumi-lang-yaml=\"`forwardingRule`\" pulumi-lang-java=\"`forwardingRule`\"\u003e`forwarding_rule`\u003c/span\u003e to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`forwardingRule`\" pulumi-lang-dotnet=\"`ForwardingRule`\" pulumi-lang-go=\"`forwardingRule`\" pulumi-lang-python=\"`forwarding_rule`\" pulumi-lang-yaml=\"`forwardingRule`\" pulumi-lang-java=\"`forwardingRule`\"\u003e`forwarding_rule`\u003c/span\u003e block is documented below.\n"
                },
                "glbSettings": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerGlbSettings:LoadBalancerGlbSettings",
                    "description": "A block containing \u003cspan pulumi-lang-nodejs=\"`glbSettings`\" pulumi-lang-dotnet=\"`GlbSettings`\" pulumi-lang-go=\"`glbSettings`\" pulumi-lang-python=\"`glb_settings`\" pulumi-lang-yaml=\"`glbSettings`\" pulumi-lang-java=\"`glbSettings`\"\u003e`glb_settings`\u003c/span\u003e required to define target rules for a Global Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`glbSettings`\" pulumi-lang-dotnet=\"`GlbSettings`\" pulumi-lang-go=\"`glbSettings`\" pulumi-lang-python=\"`glb_settings`\" pulumi-lang-yaml=\"`glbSettings`\" pulumi-lang-java=\"`glbSettings`\"\u003e`glb_settings`\u003c/span\u003e block is documented below.\n"
                },
                "healthcheck": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerHealthcheck:LoadBalancerHealthcheck",
                    "description": "A \u003cspan pulumi-lang-nodejs=\"`healthcheck`\" pulumi-lang-dotnet=\"`Healthcheck`\" pulumi-lang-go=\"`healthcheck`\" pulumi-lang-python=\"`healthcheck`\" pulumi-lang-yaml=\"`healthcheck`\" pulumi-lang-java=\"`healthcheck`\"\u003e`healthcheck`\u003c/span\u003e block to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`healthcheck`\" pulumi-lang-dotnet=\"`Healthcheck`\" pulumi-lang-go=\"`healthcheck`\" pulumi-lang-python=\"`healthcheck`\" pulumi-lang-yaml=\"`healthcheck`\" pulumi-lang-java=\"`healthcheck`\"\u003e`healthcheck`\u003c/span\u003e block is documented below. Only 1 healthcheck is allowed.\n"
                },
                "httpIdleTimeoutSeconds": {
                    "type": "integer",
                    "description": "Specifies the idle timeout for HTTPS connections on the load balancer in seconds.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The Load Balancer name\n"
                },
                "network": {
                    "type": "string",
                    "description": "The type of network the Load Balancer is accessible from. It must be either of `INTERNAL` or `EXTERNAL`. Defaults to `EXTERNAL`.\n",
                    "willReplaceOnChanges": true
                },
                "networkStack": {
                    "type": "string",
                    "description": "The network stack determines the allocation of ipv4/ipv6 addresses to the load balancer. It must be either of `IPV4` or `DUALSTACK`. Defaults to `IPV4`.\n",
                    "willReplaceOnChanges": true
                },
                "projectId": {
                    "type": "string",
                    "description": "The ID of the project that the load balancer is associated with. If no ID is provided at creation, the load balancer associates with the user's default project.\n"
                },
                "redirectHttpToHttps": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether\nHTTP requests to the Load Balancer on port 80 will be redirected to HTTPS on port 443.\nDefault value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                },
                "region": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:Region"
                        }
                    ],
                    "description": "The region to start in\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "string",
                    "description": "The size of the Load Balancer. It must be either `lb-small`, `lb-medium`, or `lb-large`. Defaults to `lb-small`. Only one of \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sizeUnit`\" pulumi-lang-dotnet=\"`SizeUnit`\" pulumi-lang-go=\"`sizeUnit`\" pulumi-lang-python=\"`size_unit`\" pulumi-lang-yaml=\"`sizeUnit`\" pulumi-lang-java=\"`sizeUnit`\"\u003e`size_unit`\u003c/span\u003e may be provided.\n"
                },
                "sizeUnit": {
                    "type": "integer",
                    "description": "The size of the Load Balancer. It must be in the range (1, 200). Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e. Only one of \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sizeUnit`\" pulumi-lang-dotnet=\"`SizeUnit`\" pulumi-lang-go=\"`sizeUnit`\" pulumi-lang-python=\"`size_unit`\" pulumi-lang-yaml=\"`sizeUnit`\" pulumi-lang-java=\"`sizeUnit`\"\u003e`size_unit`\u003c/span\u003e may be provided.\n"
                },
                "stickySessions": {
                    "$ref": "#/types/digitalocean:index/LoadBalancerStickySessions:LoadBalancerStickySessions",
                    "description": "A \u003cspan pulumi-lang-nodejs=\"`stickySessions`\" pulumi-lang-dotnet=\"`StickySessions`\" pulumi-lang-go=\"`stickySessions`\" pulumi-lang-python=\"`sticky_sessions`\" pulumi-lang-yaml=\"`stickySessions`\" pulumi-lang-java=\"`stickySessions`\"\u003e`sticky_sessions`\u003c/span\u003e block to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`stickySessions`\" pulumi-lang-dotnet=\"`StickySessions`\" pulumi-lang-go=\"`stickySessions`\" pulumi-lang-python=\"`sticky_sessions`\" pulumi-lang-yaml=\"`stickySessions`\" pulumi-lang-java=\"`stickySessions`\"\u003e`sticky_sessions`\u003c/span\u003e block is documented below. Only 1\u003cspan pulumi-lang-nodejs=\" stickySessions \" pulumi-lang-dotnet=\" StickySessions \" pulumi-lang-go=\" stickySessions \" pulumi-lang-python=\" sticky_sessions \" pulumi-lang-yaml=\" stickySessions \" pulumi-lang-java=\" stickySessions \"\u003e sticky_sessions \u003c/span\u003eblock is allowed.\n"
                },
                "targetLoadBalancerIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of Load Balancer IDs to be attached behind a Global Load Balancer.\n"
                },
                "tlsCipherPolicy": {
                    "type": "string",
                    "description": "The tls cipher policy controls the cipher suites to be used by the load balancer. It must be either of `DEFAULT` or `STRONG`. Defaults to `DEFAULT`.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the Load Balancer. It must be either of `REGIONAL`, `REGIONAL_NETWORK`, or `GLOBAL`. Defaults to `REGIONAL`.\n",
                    "willReplaceOnChanges": true
                },
                "vpcUuid": {
                    "type": "string",
                    "description": "The ID of the VPC where the load balancer will be located.\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering LoadBalancer resources.\n",
                "properties": {
                    "algorithm": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:Algorithm"
                            }
                        ],
                        "description": "**Deprecated** This field has been deprecated. You can no longer specify an algorithm for load balancers.\nor \u003cspan pulumi-lang-nodejs=\"`leastConnections`\" pulumi-lang-dotnet=\"`LeastConnections`\" pulumi-lang-go=\"`leastConnections`\" pulumi-lang-python=\"`least_connections`\" pulumi-lang-yaml=\"`leastConnections`\" pulumi-lang-java=\"`leastConnections`\"\u003e`least_connections`\u003c/span\u003e. The default value is \u003cspan pulumi-lang-nodejs=\"`roundRobin`\" pulumi-lang-dotnet=\"`RoundRobin`\" pulumi-lang-go=\"`roundRobin`\" pulumi-lang-python=\"`round_robin`\" pulumi-lang-yaml=\"`roundRobin`\" pulumi-lang-java=\"`roundRobin`\"\u003e`round_robin`\u003c/span\u003e.\n",
                        "deprecationMessage": "This field has been deprecated. You can no longer specify an algorithm for load balancers."
                    },
                    "disableLetsEncryptDnsRecords": {
                        "type": "boolean",
                        "description": "A boolean value indicating whether to disable automatic DNS record creation for Let's Encrypt certificates that are added to the load balancer. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "domains": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/LoadBalancerDomain:LoadBalancerDomain"
                        },
                        "description": "A list of \u003cspan pulumi-lang-nodejs=\"`domains`\" pulumi-lang-dotnet=\"`Domains`\" pulumi-lang-go=\"`domains`\" pulumi-lang-python=\"`domains`\" pulumi-lang-yaml=\"`domains`\" pulumi-lang-java=\"`domains`\"\u003e`domains`\u003c/span\u003e required to ingress traffic to a Global Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`domains`\" pulumi-lang-dotnet=\"`Domains`\" pulumi-lang-go=\"`domains`\" pulumi-lang-python=\"`domains`\" pulumi-lang-yaml=\"`domains`\" pulumi-lang-java=\"`domains`\"\u003e`domains`\u003c/span\u003e block is documented below.\n"
                    },
                    "dropletIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "description": "A list of the IDs of each droplet to be attached to the Load Balancer.\n"
                    },
                    "dropletTag": {
                        "type": "string",
                        "description": "The name of a Droplet tag corresponding to Droplets to be assigned to the Load Balancer.\n"
                    },
                    "enableBackendKeepalive": {
                        "type": "boolean",
                        "description": "A boolean value indicating whether HTTP keepalive connections are maintained to target Droplets. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "enableProxyProtocol": {
                        "type": "boolean",
                        "description": "A boolean value indicating whether PROXY\nProtocol should be used to pass information from connecting client requests to\nthe backend service. Default value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "firewall": {
                        "$ref": "#/types/digitalocean:index/LoadBalancerFirewall:LoadBalancerFirewall",
                        "description": "A block containing rules for allowing/denying traffic to the Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`firewall`\" pulumi-lang-dotnet=\"`Firewall`\" pulumi-lang-go=\"`firewall`\" pulumi-lang-python=\"`firewall`\" pulumi-lang-yaml=\"`firewall`\" pulumi-lang-java=\"`firewall`\"\u003e`firewall`\u003c/span\u003e block is documented below. Only 1 firewall is allowed.\n"
                    },
                    "forwardingRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/LoadBalancerForwardingRule:LoadBalancerForwardingRule"
                        },
                        "description": "A list of \u003cspan pulumi-lang-nodejs=\"`forwardingRule`\" pulumi-lang-dotnet=\"`ForwardingRule`\" pulumi-lang-go=\"`forwardingRule`\" pulumi-lang-python=\"`forwarding_rule`\" pulumi-lang-yaml=\"`forwardingRule`\" pulumi-lang-java=\"`forwardingRule`\"\u003e`forwarding_rule`\u003c/span\u003e to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`forwardingRule`\" pulumi-lang-dotnet=\"`ForwardingRule`\" pulumi-lang-go=\"`forwardingRule`\" pulumi-lang-python=\"`forwarding_rule`\" pulumi-lang-yaml=\"`forwardingRule`\" pulumi-lang-java=\"`forwardingRule`\"\u003e`forwarding_rule`\u003c/span\u003e block is documented below.\n"
                    },
                    "glbSettings": {
                        "$ref": "#/types/digitalocean:index/LoadBalancerGlbSettings:LoadBalancerGlbSettings",
                        "description": "A block containing \u003cspan pulumi-lang-nodejs=\"`glbSettings`\" pulumi-lang-dotnet=\"`GlbSettings`\" pulumi-lang-go=\"`glbSettings`\" pulumi-lang-python=\"`glb_settings`\" pulumi-lang-yaml=\"`glbSettings`\" pulumi-lang-java=\"`glbSettings`\"\u003e`glb_settings`\u003c/span\u003e required to define target rules for a Global Load Balancer. The \u003cspan pulumi-lang-nodejs=\"`glbSettings`\" pulumi-lang-dotnet=\"`GlbSettings`\" pulumi-lang-go=\"`glbSettings`\" pulumi-lang-python=\"`glb_settings`\" pulumi-lang-yaml=\"`glbSettings`\" pulumi-lang-java=\"`glbSettings`\"\u003e`glb_settings`\u003c/span\u003e block is documented below.\n"
                    },
                    "healthcheck": {
                        "$ref": "#/types/digitalocean:index/LoadBalancerHealthcheck:LoadBalancerHealthcheck",
                        "description": "A \u003cspan pulumi-lang-nodejs=\"`healthcheck`\" pulumi-lang-dotnet=\"`Healthcheck`\" pulumi-lang-go=\"`healthcheck`\" pulumi-lang-python=\"`healthcheck`\" pulumi-lang-yaml=\"`healthcheck`\" pulumi-lang-java=\"`healthcheck`\"\u003e`healthcheck`\u003c/span\u003e block to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`healthcheck`\" pulumi-lang-dotnet=\"`Healthcheck`\" pulumi-lang-go=\"`healthcheck`\" pulumi-lang-python=\"`healthcheck`\" pulumi-lang-yaml=\"`healthcheck`\" pulumi-lang-java=\"`healthcheck`\"\u003e`healthcheck`\u003c/span\u003e block is documented below. Only 1 healthcheck is allowed.\n"
                    },
                    "httpIdleTimeoutSeconds": {
                        "type": "integer",
                        "description": "Specifies the idle timeout for HTTPS connections on the load balancer in seconds.\n"
                    },
                    "ip": {
                        "type": "string",
                        "description": "The ip of the Load Balancer\n"
                    },
                    "ipv6": {
                        "type": "string"
                    },
                    "loadBalancerUrn": {
                        "type": "string",
                        "description": "The uniform resource name for the Load Balancer\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The Load Balancer name\n"
                    },
                    "network": {
                        "type": "string",
                        "description": "The type of network the Load Balancer is accessible from. It must be either of `INTERNAL` or `EXTERNAL`. Defaults to `EXTERNAL`.\n",
                        "willReplaceOnChanges": true
                    },
                    "networkStack": {
                        "type": "string",
                        "description": "The network stack determines the allocation of ipv4/ipv6 addresses to the load balancer. It must be either of `IPV4` or `DUALSTACK`. Defaults to `IPV4`.\n",
                        "willReplaceOnChanges": true
                    },
                    "projectId": {
                        "type": "string",
                        "description": "The ID of the project that the load balancer is associated with. If no ID is provided at creation, the load balancer associates with the user's default project.\n"
                    },
                    "redirectHttpToHttps": {
                        "type": "boolean",
                        "description": "A boolean value indicating whether\nHTTP requests to the Load Balancer on port 80 will be redirected to HTTPS on port 443.\nDefault value is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"
                    },
                    "region": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:Region"
                            }
                        ],
                        "description": "The region to start in\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "string",
                        "description": "The size of the Load Balancer. It must be either `lb-small`, `lb-medium`, or `lb-large`. Defaults to `lb-small`. Only one of \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sizeUnit`\" pulumi-lang-dotnet=\"`SizeUnit`\" pulumi-lang-go=\"`sizeUnit`\" pulumi-lang-python=\"`size_unit`\" pulumi-lang-yaml=\"`sizeUnit`\" pulumi-lang-java=\"`sizeUnit`\"\u003e`size_unit`\u003c/span\u003e may be provided.\n"
                    },
                    "sizeUnit": {
                        "type": "integer",
                        "description": "The size of the Load Balancer. It must be in the range (1, 200). Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e. Only one of \u003cspan pulumi-lang-nodejs=\"`size`\" pulumi-lang-dotnet=\"`Size`\" pulumi-lang-go=\"`size`\" pulumi-lang-python=\"`size`\" pulumi-lang-yaml=\"`size`\" pulumi-lang-java=\"`size`\"\u003e`size`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sizeUnit`\" pulumi-lang-dotnet=\"`SizeUnit`\" pulumi-lang-go=\"`sizeUnit`\" pulumi-lang-python=\"`size_unit`\" pulumi-lang-yaml=\"`sizeUnit`\" pulumi-lang-java=\"`sizeUnit`\"\u003e`size_unit`\u003c/span\u003e may be provided.\n"
                    },
                    "status": {
                        "type": "string"
                    },
                    "stickySessions": {
                        "$ref": "#/types/digitalocean:index/LoadBalancerStickySessions:LoadBalancerStickySessions",
                        "description": "A \u003cspan pulumi-lang-nodejs=\"`stickySessions`\" pulumi-lang-dotnet=\"`StickySessions`\" pulumi-lang-go=\"`stickySessions`\" pulumi-lang-python=\"`sticky_sessions`\" pulumi-lang-yaml=\"`stickySessions`\" pulumi-lang-java=\"`stickySessions`\"\u003e`sticky_sessions`\u003c/span\u003e block to be assigned to the\nLoad Balancer. The \u003cspan pulumi-lang-nodejs=\"`stickySessions`\" pulumi-lang-dotnet=\"`StickySessions`\" pulumi-lang-go=\"`stickySessions`\" pulumi-lang-python=\"`sticky_sessions`\" pulumi-lang-yaml=\"`stickySessions`\" pulumi-lang-java=\"`stickySessions`\"\u003e`sticky_sessions`\u003c/span\u003e block is documented below. Only 1\u003cspan pulumi-lang-nodejs=\" stickySessions \" pulumi-lang-dotnet=\" StickySessions \" pulumi-lang-go=\" stickySessions \" pulumi-lang-python=\" sticky_sessions \" pulumi-lang-yaml=\" stickySessions \" pulumi-lang-java=\" stickySessions \"\u003e sticky_sessions \u003c/span\u003eblock is allowed.\n"
                    },
                    "targetLoadBalancerIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of Load Balancer IDs to be attached behind a Global Load Balancer.\n"
                    },
                    "tlsCipherPolicy": {
                        "type": "string",
                        "description": "The tls cipher policy controls the cipher suites to be used by the load balancer. It must be either of `DEFAULT` or `STRONG`. Defaults to `DEFAULT`.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the Load Balancer. It must be either of `REGIONAL`, `REGIONAL_NETWORK`, or `GLOBAL`. Defaults to `REGIONAL`.\n",
                        "willReplaceOnChanges": true
                    },
                    "vpcUuid": {
                        "type": "string",
                        "description": "The ID of the VPC where the load balancer will be located.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/monitorAlert:MonitorAlert": {
            "description": "Provides a [DigitalOcean Monitoring](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Monitoring)\nresource. Monitor alerts can be configured to alert about, e.g., disk or memory\nusage exceeding a certain threshold or traffic at a certain limit. Notifications\ncan be sent to either an email address or a Slack channel.\n\n## Import\n\nMonitor alerts can be imported using the monitor alert \u003cspan pulumi-lang-nodejs=\"`uuid`\" pulumi-lang-dotnet=\"`Uuid`\" pulumi-lang-go=\"`uuid`\" pulumi-lang-python=\"`uuid`\" pulumi-lang-yaml=\"`uuid`\" pulumi-lang-java=\"`uuid`\"\u003e`uuid`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/monitorAlert:MonitorAlert cpu_alert b8ecd2ab-2267-4a5e-8692-cbf1d32583e3\n```\n\n",
            "properties": {
                "alerts": {
                    "$ref": "#/types/digitalocean:index/MonitorAlertAlerts:MonitorAlertAlerts",
                    "description": "How to send notifications about the alerts. This is a list with one element, .\nNote that for Slack, the DigitalOcean app needs to have permissions for your workspace. You can\nread more in [Slack's documentation](https://slack.com/intl/en-dk/help/articles/222386767-Manage-app-installation-settings-for-your-workspace)\n"
                },
                "compare": {
                    "type": "string",
                    "description": "The comparison for \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e.\nThis may be either `GreaterThan` or `LessThan`.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the alert.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "The status of the alert.\n"
                },
                "entities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IDs for the resources to which the alert policy applies.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags. When an included tag is added to a resource, the alert policy will apply to it.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the alert.\nThis may be one of `v1/insights/droplet/load_1`, `v1/insights/droplet/load_5`, `v1/insights/droplet/load_15`,\n`v1/insights/droplet/memory_utilization_percent`, `v1/insights/droplet/disk_utilization_percent`,\n`v1/insights/droplet/cpu`, `v1/insights/droplet/disk_read`, `v1/insights/droplet/disk_write`,\n`v1/insights/droplet/public_outbound_bandwidth`, `v1/insights/droplet/public_inbound_bandwidth`,\n`v1/insights/droplet/private_outbound_bandwidth`, `v1/insights/droplet/private_inbound_bandwidth`,\n`v1/insights/lbaas/avg_cpu_utilization_percent`, `v1/insights/lbaas/connection_utilization_percent`,\n`v1/insights/lbaas/droplet_health`, `v1/insights/lbaas/tls_connections_per_second_utilization_percent`,\n`v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx`, `v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx`,\n`v1/insights/lbaas/increase_in_http_error_rate_count_5xx`, `v1/insights/lbaas/increase_in_http_error_rate_count_4xx`,\n`v1/insights/lbaas/high_http_request_response_time`, `v1/insights/lbaas/high_http_request_response_time_50p`,\n`v1/insights/lbaas/high_http_request_response_time_95p`, `v1/insights/lbaas/high_http_request_response_time_99p`,\n`v1/dbaas/alerts/load_15_alerts`, `v1/dbaas/alerts/cpu_alerts`, `v1/dbaas/alerts/memory_utilization_alerts`, or\n`v1/dbaas/alerts/disk_utilization_alerts`.\n"
                },
                "uuid": {
                    "type": "string",
                    "description": "The uuid of the alert.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The value to start alerting at, e.g., 90% or 85Mbps. This is a floating-point number.\nDigitalOcean will show the correct unit in the web panel.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time frame of the alert. Either \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\"\u003e`30m`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "alerts",
                "compare",
                "description",
                "type",
                "uuid",
                "value",
                "window"
            ],
            "inputProperties": {
                "alerts": {
                    "$ref": "#/types/digitalocean:index/MonitorAlertAlerts:MonitorAlertAlerts",
                    "description": "How to send notifications about the alerts. This is a list with one element, .\nNote that for Slack, the DigitalOcean app needs to have permissions for your workspace. You can\nread more in [Slack's documentation](https://slack.com/intl/en-dk/help/articles/222386767-Manage-app-installation-settings-for-your-workspace)\n"
                },
                "compare": {
                    "type": "string",
                    "description": "The comparison for \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e.\nThis may be either `GreaterThan` or `LessThan`.\n"
                },
                "description": {
                    "type": "string",
                    "description": "The description of the alert.\n"
                },
                "enabled": {
                    "type": "boolean",
                    "description": "The status of the alert.\n"
                },
                "entities": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of IDs for the resources to which the alert policy applies.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of tags. When an included tag is added to a resource, the alert policy will apply to it.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the alert.\nThis may be one of `v1/insights/droplet/load_1`, `v1/insights/droplet/load_5`, `v1/insights/droplet/load_15`,\n`v1/insights/droplet/memory_utilization_percent`, `v1/insights/droplet/disk_utilization_percent`,\n`v1/insights/droplet/cpu`, `v1/insights/droplet/disk_read`, `v1/insights/droplet/disk_write`,\n`v1/insights/droplet/public_outbound_bandwidth`, `v1/insights/droplet/public_inbound_bandwidth`,\n`v1/insights/droplet/private_outbound_bandwidth`, `v1/insights/droplet/private_inbound_bandwidth`,\n`v1/insights/lbaas/avg_cpu_utilization_percent`, `v1/insights/lbaas/connection_utilization_percent`,\n`v1/insights/lbaas/droplet_health`, `v1/insights/lbaas/tls_connections_per_second_utilization_percent`,\n`v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx`, `v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx`,\n`v1/insights/lbaas/increase_in_http_error_rate_count_5xx`, `v1/insights/lbaas/increase_in_http_error_rate_count_4xx`,\n`v1/insights/lbaas/high_http_request_response_time`, `v1/insights/lbaas/high_http_request_response_time_50p`,\n`v1/insights/lbaas/high_http_request_response_time_95p`, `v1/insights/lbaas/high_http_request_response_time_99p`,\n`v1/dbaas/alerts/load_15_alerts`, `v1/dbaas/alerts/cpu_alerts`, `v1/dbaas/alerts/memory_utilization_alerts`, or\n`v1/dbaas/alerts/disk_utilization_alerts`.\n"
                },
                "value": {
                    "type": "number",
                    "description": "The value to start alerting at, e.g., 90% or 85Mbps. This is a floating-point number.\nDigitalOcean will show the correct unit in the web panel.\n"
                },
                "window": {
                    "type": "string",
                    "description": "The time frame of the alert. Either \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\"\u003e`30m`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "alerts",
                "compare",
                "description",
                "type",
                "value",
                "window"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering MonitorAlert resources.\n",
                "properties": {
                    "alerts": {
                        "$ref": "#/types/digitalocean:index/MonitorAlertAlerts:MonitorAlertAlerts",
                        "description": "How to send notifications about the alerts. This is a list with one element, .\nNote that for Slack, the DigitalOcean app needs to have permissions for your workspace. You can\nread more in [Slack's documentation](https://slack.com/intl/en-dk/help/articles/222386767-Manage-app-installation-settings-for-your-workspace)\n"
                    },
                    "compare": {
                        "type": "string",
                        "description": "The comparison for \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e.\nThis may be either `GreaterThan` or `LessThan`.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "The description of the alert.\n"
                    },
                    "enabled": {
                        "type": "boolean",
                        "description": "The status of the alert.\n"
                    },
                    "entities": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of IDs for the resources to which the alert policy applies.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tags. When an included tag is added to a resource, the alert policy will apply to it.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the alert.\nThis may be one of `v1/insights/droplet/load_1`, `v1/insights/droplet/load_5`, `v1/insights/droplet/load_15`,\n`v1/insights/droplet/memory_utilization_percent`, `v1/insights/droplet/disk_utilization_percent`,\n`v1/insights/droplet/cpu`, `v1/insights/droplet/disk_read`, `v1/insights/droplet/disk_write`,\n`v1/insights/droplet/public_outbound_bandwidth`, `v1/insights/droplet/public_inbound_bandwidth`,\n`v1/insights/droplet/private_outbound_bandwidth`, `v1/insights/droplet/private_inbound_bandwidth`,\n`v1/insights/lbaas/avg_cpu_utilization_percent`, `v1/insights/lbaas/connection_utilization_percent`,\n`v1/insights/lbaas/droplet_health`, `v1/insights/lbaas/tls_connections_per_second_utilization_percent`,\n`v1/insights/lbaas/increase_in_http_error_rate_percentage_5xx`, `v1/insights/lbaas/increase_in_http_error_rate_percentage_4xx`,\n`v1/insights/lbaas/increase_in_http_error_rate_count_5xx`, `v1/insights/lbaas/increase_in_http_error_rate_count_4xx`,\n`v1/insights/lbaas/high_http_request_response_time`, `v1/insights/lbaas/high_http_request_response_time_50p`,\n`v1/insights/lbaas/high_http_request_response_time_95p`, `v1/insights/lbaas/high_http_request_response_time_99p`,\n`v1/dbaas/alerts/load_15_alerts`, `v1/dbaas/alerts/cpu_alerts`, `v1/dbaas/alerts/memory_utilization_alerts`, or\n`v1/dbaas/alerts/disk_utilization_alerts`.\n"
                    },
                    "uuid": {
                        "type": "string",
                        "description": "The uuid of the alert.\n"
                    },
                    "value": {
                        "type": "number",
                        "description": "The value to start alerting at, e.g., 90% or 85Mbps. This is a floating-point number.\nDigitalOcean will show the correct unit in the web panel.\n"
                    },
                    "window": {
                        "type": "string",
                        "description": "The time frame of the alert. Either \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\"\u003e`30m`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/nfs:Nfs": {
            "description": "Provides a DigitalOcean NFS share which can be mounted to Droplets to provide shared storage.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.Vpc(\"example\", {\n    name: \"example-vpc\",\n    region: \"nyc1\",\n});\nconst exampleNfs = new digitalocean.Nfs(\"example\", {\n    region: \"nyc1\",\n    name: \"example-nfs\",\n    size: 50,\n    vpcId: example.id,\n    performanceTier: \"high\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.Vpc(\"example\",\n    name=\"example-vpc\",\n    region=\"nyc1\")\nexample_nfs = digitalocean.Nfs(\"example\",\n    region=\"nyc1\",\n    name=\"example-nfs\",\n    size=50,\n    vpc_id=example.id,\n    performance_tier=\"high\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.Vpc(\"example\", new()\n    {\n        Name = \"example-vpc\",\n        Region = \"nyc1\",\n    });\n\n    var exampleNfs = new DigitalOcean.Nfs(\"example\", new()\n    {\n        Region = \"nyc1\",\n        Name = \"example-nfs\",\n        Size = 50,\n        VpcId = example.Id,\n        PerformanceTier = \"high\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.NewVpc(ctx, \"example\", \u0026digitalocean.VpcArgs{\n\t\t\tName:   pulumi.String(\"example-vpc\"),\n\t\t\tRegion: pulumi.String(\"nyc1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewNfs(ctx, \"example\", \u0026digitalocean.NfsArgs{\n\t\t\tRegion:          pulumi.String(\"nyc1\"),\n\t\t\tName:            pulumi.String(\"example-nfs\"),\n\t\t\tSize:            pulumi.Int(50),\n\t\t\tVpcId:           example.ID(),\n\t\t\tPerformanceTier: pulumi.String(\"high\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Vpc;\nimport com.pulumi.digitalocean.VpcArgs;\nimport com.pulumi.digitalocean.Nfs;\nimport com.pulumi.digitalocean.NfsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Vpc(\"example\", VpcArgs.builder()\n            .name(\"example-vpc\")\n            .region(\"nyc1\")\n            .build());\n\n        var exampleNfs = new Nfs(\"exampleNfs\", NfsArgs.builder()\n            .region(\"nyc1\")\n            .name(\"example-nfs\")\n            .size(50)\n            .vpcId(example.id())\n            .performanceTier(\"high\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:Vpc\n    properties:\n      name: example-vpc\n      region: nyc1\n  exampleNfs:\n    type: digitalocean:Nfs\n    name: example\n    properties:\n      region: nyc1\n      name: example-nfs\n      size: 50\n      vpcId: ${example.id}\n      performanceTier: high\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNFS shares can be imported using the `share id` and the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e , e.g.\n\n```sh\n$ pulumi import digitalocean:index/nfs:Nfs foobar 506f78a4-e098-11e5-ad9f-000f53306ae1,atl1\n```\n\n",
            "properties": {
                "host": {
                    "type": "string",
                    "description": "The host IP of the NFS server accessible from the associated VPC.\n"
                },
                "mountPath": {
                    "type": "string",
                    "description": "The mount path for accessing the NFS share.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the NFS share. Must be lowercase and composed only of numbers, letters, and \"-\", up to a limit of 64 characters. The name must begin with a letter.\n"
                },
                "performanceTier": {
                    "type": "string",
                    "description": "The performance tier for the NFS share. Can be \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Changing this will cause the performance tier to be switched.\n\u003e **Note:** You cannot downgrade the performance tier from \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e after creation. Upgrades from \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e are allowed.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the NFS share will be created.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the NFS share in GiB. Minimum size is 50 GiB.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The current status of the NFS share.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "vpcId": {
                    "type": "string",
                    "description": "The ID of the VPC where the NFS share will be created.\n"
                },
                "vpcIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "required": [
                "host",
                "mountPath",
                "name",
                "region",
                "size",
                "status",
                "vpcId",
                "vpcIds"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "A name for the NFS share. Must be lowercase and composed only of numbers, letters, and \"-\", up to a limit of 64 characters. The name must begin with a letter.\n",
                    "willReplaceOnChanges": true
                },
                "performanceTier": {
                    "type": "string",
                    "description": "The performance tier for the NFS share. Can be \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Changing this will cause the performance tier to be switched.\n\u003e **Note:** You cannot downgrade the performance tier from \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e after creation. Upgrades from \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e are allowed.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the NFS share will be created.\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the NFS share in GiB. Minimum size is 50 GiB.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "vpcId": {
                    "type": "string",
                    "description": "The ID of the VPC where the NFS share will be created.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "region",
                "size",
                "vpcId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Nfs resources.\n",
                "properties": {
                    "host": {
                        "type": "string",
                        "description": "The host IP of the NFS server accessible from the associated VPC.\n"
                    },
                    "mountPath": {
                        "type": "string",
                        "description": "The mount path for accessing the NFS share.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the NFS share. Must be lowercase and composed only of numbers, letters, and \"-\", up to a limit of 64 characters. The name must begin with a letter.\n",
                        "willReplaceOnChanges": true
                    },
                    "performanceTier": {
                        "type": "string",
                        "description": "The performance tier for the NFS share. Can be \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e. Changing this will cause the performance tier to be switched.\n\u003e **Note:** You cannot downgrade the performance tier from \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e after creation. Upgrades from \u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e are allowed.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the NFS share will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the NFS share in GiB. Minimum size is 50 GiB.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The current status of the NFS share.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "vpcId": {
                        "type": "string",
                        "description": "The ID of the VPC where the NFS share will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "vpcIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/nfsAttachment:NfsAttachment": {
            "description": "Manages attaching a NFS share to a vpc.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Vpc(\"foobar\", {\n    name: \"example-vpc\",\n    region: \"atl1\",\n});\nconst foobarNfs = new digitalocean.Nfs(\"foobar\", {\n    region: \"atl1\",\n    name: \"example-nfs\",\n    size: 50,\n    vpcId: foobar.id,\n    performanceTier: \"high\",\n});\nconst foobarNfsAttachment = new digitalocean.NfsAttachment(\"foobar\", {\n    shareId: foobarNfs.id,\n    vpcId: foobar.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Vpc(\"foobar\",\n    name=\"example-vpc\",\n    region=\"atl1\")\nfoobar_nfs = digitalocean.Nfs(\"foobar\",\n    region=\"atl1\",\n    name=\"example-nfs\",\n    size=50,\n    vpc_id=foobar.id,\n    performance_tier=\"high\")\nfoobar_nfs_attachment = digitalocean.NfsAttachment(\"foobar\",\n    share_id=foobar_nfs.id,\n    vpc_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Vpc(\"foobar\", new()\n    {\n        Name = \"example-vpc\",\n        Region = \"atl1\",\n    });\n\n    var foobarNfs = new DigitalOcean.Nfs(\"foobar\", new()\n    {\n        Region = \"atl1\",\n        Name = \"example-nfs\",\n        Size = 50,\n        VpcId = foobar.Id,\n        PerformanceTier = \"high\",\n    });\n\n    var foobarNfsAttachment = new DigitalOcean.NfsAttachment(\"foobar\", new()\n    {\n        ShareId = foobarNfs.Id,\n        VpcId = foobar.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewVpc(ctx, \"foobar\", \u0026digitalocean.VpcArgs{\n\t\t\tName:   pulumi.String(\"example-vpc\"),\n\t\t\tRegion: pulumi.String(\"atl1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarNfs, err := digitalocean.NewNfs(ctx, \"foobar\", \u0026digitalocean.NfsArgs{\n\t\t\tRegion:          pulumi.String(\"atl1\"),\n\t\t\tName:            pulumi.String(\"example-nfs\"),\n\t\t\tSize:            pulumi.Int(50),\n\t\t\tVpcId:           foobar.ID(),\n\t\t\tPerformanceTier: pulumi.String(\"high\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewNfsAttachment(ctx, \"foobar\", \u0026digitalocean.NfsAttachmentArgs{\n\t\t\tShareId: foobarNfs.ID(),\n\t\t\tVpcId:   foobar.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Vpc;\nimport com.pulumi.digitalocean.VpcArgs;\nimport com.pulumi.digitalocean.Nfs;\nimport com.pulumi.digitalocean.NfsArgs;\nimport com.pulumi.digitalocean.NfsAttachment;\nimport com.pulumi.digitalocean.NfsAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Vpc(\"foobar\", VpcArgs.builder()\n            .name(\"example-vpc\")\n            .region(\"atl1\")\n            .build());\n\n        var foobarNfs = new Nfs(\"foobarNfs\", NfsArgs.builder()\n            .region(\"atl1\")\n            .name(\"example-nfs\")\n            .size(50)\n            .vpcId(foobar.id())\n            .performanceTier(\"high\")\n            .build());\n\n        var foobarNfsAttachment = new NfsAttachment(\"foobarNfsAttachment\", NfsAttachmentArgs.builder()\n            .shareId(foobarNfs.id())\n            .vpcId(foobar.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Vpc\n    properties:\n      name: example-vpc\n      region: atl1\n  foobarNfs:\n    type: digitalocean:Nfs\n    name: foobar\n    properties:\n      region: atl1\n      name: example-nfs\n      size: 50\n      vpcId: ${foobar.id}\n      performanceTier: high\n  foobarNfsAttachment:\n    type: digitalocean:NfsAttachment\n    name: foobar\n    properties:\n      shareId: ${foobarNfs.id}\n      vpcId: ${foobar.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNFS attachments can be imported using the \u003cspan pulumi-lang-nodejs=\"`shareId`\" pulumi-lang-dotnet=\"`ShareId`\" pulumi-lang-go=\"`shareId`\" pulumi-lang-python=\"`share_id`\" pulumi-lang-yaml=\"`shareId`\" pulumi-lang-java=\"`shareId`\"\u003e`share_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`vpcId`\" pulumi-lang-dotnet=\"`VpcId`\" pulumi-lang-go=\"`vpcId`\" pulumi-lang-python=\"`vpc_id`\" pulumi-lang-yaml=\"`vpcId`\" pulumi-lang-java=\"`vpcId`\"\u003e`vpc_id`\u003c/span\u003e separated by a comma, e.g.  \n\n```sh\n$ pulumi import digitalocean:index/nfsAttachment:NfsAttachment foobar 506f78a4-e098-11e5-ad9f-000f53306ae1,d1ebc5a4-e098-11e5-ad9f-000f53306ae1\n```\n\n",
            "properties": {
                "region": {
                    "type": "string"
                },
                "shareId": {
                    "type": "string",
                    "description": "The ID of the NFS share to attach.\n"
                },
                "vpcId": {
                    "type": "string",
                    "description": "The ID of the vpc to attach the NFS share to.\n"
                }
            },
            "required": [
                "region",
                "shareId",
                "vpcId"
            ],
            "inputProperties": {
                "region": {
                    "type": "string",
                    "willReplaceOnChanges": true
                },
                "shareId": {
                    "type": "string",
                    "description": "The ID of the NFS share to attach.\n",
                    "willReplaceOnChanges": true
                },
                "vpcId": {
                    "type": "string",
                    "description": "The ID of the vpc to attach the NFS share to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "region",
                "shareId",
                "vpcId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering NfsAttachment resources.\n",
                "properties": {
                    "region": {
                        "type": "string",
                        "willReplaceOnChanges": true
                    },
                    "shareId": {
                        "type": "string",
                        "description": "The ID of the NFS share to attach.\n",
                        "willReplaceOnChanges": true
                    },
                    "vpcId": {
                        "type": "string",
                        "description": "The ID of the vpc to attach the NFS share to.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/nfsSnapshot:NfsSnapshot": {
            "description": "Provides a DigitalOcean NFS snapshot which can be used to create new NFS shares.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Vpc(\"foobar\", {\n    name: \"example-vpc\",\n    region: \"nyc1\",\n});\nconst foobarNfs = new digitalocean.Nfs(\"foobar\", {\n    region: \"nyc1\",\n    name: \"example-nfs\",\n    size: 50,\n    vpcId: foobar.id,\n    performanceTier: \"high\",\n});\nconst foobarNfsSnapshot = new digitalocean.NfsSnapshot(\"foobar\", {\n    name: \"example-snapshot\",\n    shareId: foobarNfs.id,\n    region: \"nyc1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Vpc(\"foobar\",\n    name=\"example-vpc\",\n    region=\"nyc1\")\nfoobar_nfs = digitalocean.Nfs(\"foobar\",\n    region=\"nyc1\",\n    name=\"example-nfs\",\n    size=50,\n    vpc_id=foobar.id,\n    performance_tier=\"high\")\nfoobar_nfs_snapshot = digitalocean.NfsSnapshot(\"foobar\",\n    name=\"example-snapshot\",\n    share_id=foobar_nfs.id,\n    region=\"nyc1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Vpc(\"foobar\", new()\n    {\n        Name = \"example-vpc\",\n        Region = \"nyc1\",\n    });\n\n    var foobarNfs = new DigitalOcean.Nfs(\"foobar\", new()\n    {\n        Region = \"nyc1\",\n        Name = \"example-nfs\",\n        Size = 50,\n        VpcId = foobar.Id,\n        PerformanceTier = \"high\",\n    });\n\n    var foobarNfsSnapshot = new DigitalOcean.NfsSnapshot(\"foobar\", new()\n    {\n        Name = \"example-snapshot\",\n        ShareId = foobarNfs.Id,\n        Region = \"nyc1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewVpc(ctx, \"foobar\", \u0026digitalocean.VpcArgs{\n\t\t\tName:   pulumi.String(\"example-vpc\"),\n\t\t\tRegion: pulumi.String(\"nyc1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarNfs, err := digitalocean.NewNfs(ctx, \"foobar\", \u0026digitalocean.NfsArgs{\n\t\t\tRegion:          pulumi.String(\"nyc1\"),\n\t\t\tName:            pulumi.String(\"example-nfs\"),\n\t\t\tSize:            pulumi.Int(50),\n\t\t\tVpcId:           foobar.ID(),\n\t\t\tPerformanceTier: pulumi.String(\"high\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewNfsSnapshot(ctx, \"foobar\", \u0026digitalocean.NfsSnapshotArgs{\n\t\t\tName:    pulumi.String(\"example-snapshot\"),\n\t\t\tShareId: foobarNfs.ID(),\n\t\t\tRegion:  pulumi.String(\"nyc1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Vpc;\nimport com.pulumi.digitalocean.VpcArgs;\nimport com.pulumi.digitalocean.Nfs;\nimport com.pulumi.digitalocean.NfsArgs;\nimport com.pulumi.digitalocean.NfsSnapshot;\nimport com.pulumi.digitalocean.NfsSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Vpc(\"foobar\", VpcArgs.builder()\n            .name(\"example-vpc\")\n            .region(\"nyc1\")\n            .build());\n\n        var foobarNfs = new Nfs(\"foobarNfs\", NfsArgs.builder()\n            .region(\"nyc1\")\n            .name(\"example-nfs\")\n            .size(50)\n            .vpcId(foobar.id())\n            .performanceTier(\"high\")\n            .build());\n\n        var foobarNfsSnapshot = new NfsSnapshot(\"foobarNfsSnapshot\", NfsSnapshotArgs.builder()\n            .name(\"example-snapshot\")\n            .shareId(foobarNfs.id())\n            .region(\"nyc1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Vpc\n    properties:\n      name: example-vpc\n      region: nyc1\n  foobarNfs:\n    type: digitalocean:Nfs\n    name: foobar\n    properties:\n      region: nyc1\n      name: example-nfs\n      size: 50\n      vpcId: ${foobar.id}\n      performanceTier: high\n  foobarNfsSnapshot:\n    type: digitalocean:NfsSnapshot\n    name: foobar\n    properties:\n      name: example-snapshot\n      shareId: ${foobarNfs.id}\n      region: nyc1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNFS snapshots can be imported using the snapshot ID, e.g.  \n\n```sh\n$ pulumi import digitalocean:index/nfsSnapshot:NfsSnapshot foobar 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the snapshot was created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the NFS snapshot. Must be lowercase and composed only of numbers, letters, and \"-\", up to a limit of 64 characters.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the NFS snapshot will be created.\n"
                },
                "shareId": {
                    "type": "string",
                    "description": "The ID of the NFS share to snapshot.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the snapshot in GiB.\n"
                },
                "status": {
                    "type": "string"
                }
            },
            "required": [
                "createdAt",
                "name",
                "region",
                "shareId",
                "size",
                "status"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "A name for the NFS snapshot. Must be lowercase and composed only of numbers, letters, and \"-\", up to a limit of 64 characters.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The region where the NFS snapshot will be created.\n",
                    "willReplaceOnChanges": true
                },
                "shareId": {
                    "type": "string",
                    "description": "The ID of the NFS share to snapshot.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "region",
                "shareId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering NfsSnapshot resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the snapshot was created.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the NFS snapshot. Must be lowercase and composed only of numbers, letters, and \"-\", up to a limit of 64 characters.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the NFS snapshot will be created.\n",
                        "willReplaceOnChanges": true
                    },
                    "shareId": {
                        "type": "string",
                        "description": "The ID of the NFS share to snapshot.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the snapshot in GiB.\n"
                    },
                    "status": {
                        "type": "string"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/partnerAttachment:PartnerAttachment": {
            "properties": {
                "bgp": {
                    "$ref": "#/types/digitalocean:index/PartnerAttachmentBgp:PartnerAttachmentBgp"
                },
                "childrens": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The children uuids of Partner Attachment"
                },
                "connectionBandwidthInMbps": {
                    "type": "integer",
                    "description": "The connection bandwidth in Mbps"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The date and time when the Partner Attachment was created"
                },
                "naasProvider": {
                    "type": "string",
                    "description": "The NaaS provider"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Partner Attachment"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "The UUID of the Parent Partner Attachment"
                },
                "redundancyZone": {
                    "type": "string",
                    "description": "The redundancy zone for the NaaS"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the Partner Attachment will be created"
                },
                "state": {
                    "type": "string",
                    "description": "The state of the Partner Attachment"
                },
                "vpcIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of VPC IDs to attach the Partner Attachment to"
                }
            },
            "required": [
                "bgp",
                "childrens",
                "connectionBandwidthInMbps",
                "createdAt",
                "naasProvider",
                "name",
                "redundancyZone",
                "region",
                "state",
                "vpcIds"
            ],
            "inputProperties": {
                "bgp": {
                    "$ref": "#/types/digitalocean:index/PartnerAttachmentBgp:PartnerAttachmentBgp"
                },
                "connectionBandwidthInMbps": {
                    "type": "integer",
                    "description": "The connection bandwidth in Mbps",
                    "willReplaceOnChanges": true
                },
                "naasProvider": {
                    "type": "string",
                    "description": "The NaaS provider",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Partner Attachment"
                },
                "parentUuid": {
                    "type": "string",
                    "description": "The UUID of the Parent Partner Attachment"
                },
                "redundancyZone": {
                    "type": "string",
                    "description": "The redundancy zone for the NaaS"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the Partner Attachment will be created",
                    "willReplaceOnChanges": true
                },
                "vpcIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The list of VPC IDs to attach the Partner Attachment to"
                }
            },
            "requiredInputs": [
                "connectionBandwidthInMbps",
                "naasProvider",
                "region",
                "vpcIds"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering PartnerAttachment resources.\n",
                "properties": {
                    "bgp": {
                        "$ref": "#/types/digitalocean:index/PartnerAttachmentBgp:PartnerAttachmentBgp"
                    },
                    "childrens": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The children uuids of Partner Attachment"
                    },
                    "connectionBandwidthInMbps": {
                        "type": "integer",
                        "description": "The connection bandwidth in Mbps",
                        "willReplaceOnChanges": true
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time when the Partner Attachment was created"
                    },
                    "naasProvider": {
                        "type": "string",
                        "description": "The NaaS provider",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Partner Attachment"
                    },
                    "parentUuid": {
                        "type": "string",
                        "description": "The UUID of the Parent Partner Attachment"
                    },
                    "redundancyZone": {
                        "type": "string",
                        "description": "The redundancy zone for the NaaS"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the Partner Attachment will be created",
                        "willReplaceOnChanges": true
                    },
                    "state": {
                        "type": "string",
                        "description": "The state of the Partner Attachment"
                    },
                    "vpcIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of VPC IDs to attach the Partner Attachment to"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/project:Project": {
            "description": "Provides a DigitalOcean Project resource.\n\nProjects allow you to organize your resources into groups that fit the way you work.\nYou can group resources (like Droplets, Spaces, Load Balancers, domains, and Floating IPs)\nin ways that align with the applications you host on DigitalOcean.\n\nThe following resource types can be associated with a project:\n\n* App Platform Apps\n* Database Clusters\n* Domains\n* Droplets\n* Floating IPs\n* Kubernetes Clusters\n* Load Balancers\n* Spaces Buckets\n* Volumes\n\n**Note:** A Terraform managed project cannot be set as a default project.\n\n## Example Usage\n\nThe following example demonstrates the creation of an empty project:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst playground = new digitalocean.Project(\"playground\", {\n    name: \"playground\",\n    description: \"A project to represent development resources.\",\n    purpose: \"Web Application\",\n    environment: \"Development\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nplayground = digitalocean.Project(\"playground\",\n    name=\"playground\",\n    description=\"A project to represent development resources.\",\n    purpose=\"Web Application\",\n    environment=\"Development\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var playground = new DigitalOcean.Project(\"playground\", new()\n    {\n        Name = \"playground\",\n        Description = \"A project to represent development resources.\",\n        Purpose = \"Web Application\",\n        Environment = \"Development\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewProject(ctx, \"playground\", \u0026digitalocean.ProjectArgs{\n\t\t\tName:        pulumi.String(\"playground\"),\n\t\t\tDescription: pulumi.String(\"A project to represent development resources.\"),\n\t\t\tPurpose:     pulumi.String(\"Web Application\"),\n\t\t\tEnvironment: pulumi.String(\"Development\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Project;\nimport com.pulumi.digitalocean.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var playground = new Project(\"playground\", ProjectArgs.builder()\n            .name(\"playground\")\n            .description(\"A project to represent development resources.\")\n            .purpose(\"Web Application\")\n            .environment(\"Development\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  playground:\n    type: digitalocean:Project\n    properties:\n      name: playground\n      description: A project to represent development resources.\n      purpose: Web Application\n      environment: Development\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe following example demonstrates the creation of a project with a Droplet resource:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Droplet(\"foobar\", {\n    name: \"example\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-22-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst playground = new digitalocean.Project(\"playground\", {\n    name: \"playground\",\n    description: \"A project to represent development resources.\",\n    purpose: \"Web Application\",\n    environment: \"Development\",\n    resources: [foobar.dropletUrn],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Droplet(\"foobar\",\n    name=\"example\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-22-04-x64\",\n    region=digitalocean.Region.NYC3)\nplayground = digitalocean.Project(\"playground\",\n    name=\"playground\",\n    description=\"A project to represent development resources.\",\n    purpose=\"Web Application\",\n    environment=\"Development\",\n    resources=[foobar.droplet_urn])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"example\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-22-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var playground = new DigitalOcean.Project(\"playground\", new()\n    {\n        Name = \"playground\",\n        Description = \"A project to represent development resources.\",\n        Purpose = \"Web Application\",\n        Environment = \"Development\",\n        Resources = new[]\n        {\n            foobar.DropletUrn,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"example\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-22-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewProject(ctx, \"playground\", \u0026digitalocean.ProjectArgs{\n\t\t\tName:        pulumi.String(\"playground\"),\n\t\t\tDescription: pulumi.String(\"A project to represent development resources.\"),\n\t\t\tPurpose:     pulumi.String(\"Web Application\"),\n\t\t\tEnvironment: pulumi.String(\"Development\"),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tfoobar.DropletUrn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.Project;\nimport com.pulumi.digitalocean.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Droplet(\"foobar\", DropletArgs.builder()\n            .name(\"example\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-22-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var playground = new Project(\"playground\", ProjectArgs.builder()\n            .name(\"playground\")\n            .description(\"A project to represent development resources.\")\n            .purpose(\"Web Application\")\n            .environment(\"Development\")\n            .resources(foobar.dropletUrn())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Droplet\n    properties:\n      name: example\n      size: s-1vcpu-1gb\n      image: ubuntu-22-04-x64\n      region: nyc3\n  playground:\n    type: digitalocean:Project\n    properties:\n      name: playground\n      description: A project to represent development resources.\n      purpose: Web Application\n      environment: Development\n      resources:\n        - ${foobar.dropletUrn}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProjects can be imported using the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e returned from DigitalOcean, e.g.\n\n```sh\n$ pulumi import digitalocean:index/project:Project myproject 245bcfd0-7f31-4ce6-a2bc-475a116cca97\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "the date and time when the project was created, (ISO8601)\n"
                },
                "description": {
                    "type": "string",
                    "description": "the description of the project\n"
                },
                "environment": {
                    "type": "string",
                    "description": "the environment of the project's resources. The possible values are: `Development`, `Staging`, `Production`)\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "a boolean indicating whether or not the project is the default project. (Default: \"false\")\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Project\n"
                },
                "ownerId": {
                    "type": "integer",
                    "description": "the id of the project owner.\n"
                },
                "ownerUuid": {
                    "type": "string",
                    "description": "the unique universal identifier of the project owner.\n"
                },
                "purpose": {
                    "type": "string",
                    "description": "the purpose of the project, (Default: \"Web Application\")\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "a list of uniform resource names (URNs) for the resources associated with the project\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "the date and time when the project was last updated, (ISO8601)\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "ownerId",
                "ownerUuid",
                "resources",
                "updatedAt"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "the description of the project\n"
                },
                "environment": {
                    "type": "string",
                    "description": "the environment of the project's resources. The possible values are: `Development`, `Staging`, `Production`)\n"
                },
                "isDefault": {
                    "type": "boolean",
                    "description": "a boolean indicating whether or not the project is the default project. (Default: \"false\")\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the Project\n"
                },
                "purpose": {
                    "type": "string",
                    "description": "the purpose of the project, (Default: \"Web Application\")\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "a list of uniform resource names (URNs) for the resources associated with the project\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Project resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "the date and time when the project was created, (ISO8601)\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "the description of the project\n"
                    },
                    "environment": {
                        "type": "string",
                        "description": "the environment of the project's resources. The possible values are: `Development`, `Staging`, `Production`)\n"
                    },
                    "isDefault": {
                        "type": "boolean",
                        "description": "a boolean indicating whether or not the project is the default project. (Default: \"false\")\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Project\n"
                    },
                    "ownerId": {
                        "type": "integer",
                        "description": "the id of the project owner.\n"
                    },
                    "ownerUuid": {
                        "type": "string",
                        "description": "the unique universal identifier of the project owner.\n"
                    },
                    "purpose": {
                        "type": "string",
                        "description": "the purpose of the project, (Default: \"Web Application\")\n"
                    },
                    "resources": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "a list of uniform resource names (URNs) for the resources associated with the project\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "the date and time when the project was last updated, (ISO8601)\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/projectResources:ProjectResources": {
            "description": "Assign resources to a DigitalOcean Project. This is useful if you need to assign resources\nmanaged in Terraform to a DigitalOcean Project managed outside of Terraform.\n\nThe following resource types can be associated with a project:\n\n* App Platform Apps\n* Database Clusters\n* Domains\n* Droplets\n* Floating IPs\n* Kubernetes Clusters\n* Load Balancers\n* Spaces Buckets\n* Volumes\n\n## Example Usage\n\nThe following example assigns a droplet to a Project managed outside of Terraform:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst playground = digitalocean.getProject({\n    name: \"playground\",\n});\nconst foobar = new digitalocean.Droplet(\"foobar\", {\n    name: \"example\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-22-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst barfoo = new digitalocean.ProjectResources(\"barfoo\", {\n    project: playground.then(playground =\u003e playground.id),\n    resources: [foobar.dropletUrn],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nplayground = digitalocean.get_project(name=\"playground\")\nfoobar = digitalocean.Droplet(\"foobar\",\n    name=\"example\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-22-04-x64\",\n    region=digitalocean.Region.NYC3)\nbarfoo = digitalocean.ProjectResources(\"barfoo\",\n    project=playground.id,\n    resources=[foobar.droplet_urn])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var playground = DigitalOcean.GetProject.Invoke(new()\n    {\n        Name = \"playground\",\n    });\n\n    var foobar = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"example\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-22-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var barfoo = new DigitalOcean.ProjectResources(\"barfoo\", new()\n    {\n        Project = playground.Apply(getProjectResult =\u003e getProjectResult.Id),\n        Resources = new[]\n        {\n            foobar.DropletUrn,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tplayground, err := digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"playground\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"example\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-22-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewProjectResources(ctx, \"barfoo\", \u0026digitalocean.ProjectResourcesArgs{\n\t\t\tProject: pulumi.String(playground.Id),\n\t\t\tResources: pulumi.StringArray{\n\t\t\t\tfoobar.DropletUrn,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.ProjectResources;\nimport com.pulumi.digitalocean.ProjectResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 playground = DigitaloceanFunctions.getProject(GetProjectArgs.builder()\n            .name(\"playground\")\n            .build());\n\n        var foobar = new Droplet(\"foobar\", DropletArgs.builder()\n            .name(\"example\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-22-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var barfoo = new ProjectResources(\"barfoo\", ProjectResourcesArgs.builder()\n            .project(playground.id())\n            .resources(foobar.dropletUrn())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Droplet\n    properties:\n      name: example\n      size: s-1vcpu-1gb\n      image: ubuntu-22-04-x64\n      region: nyc3\n  barfoo:\n    type: digitalocean:ProjectResources\n    properties:\n      project: ${playground.id}\n      resources:\n        - ${foobar.dropletUrn}\nvariables:\n  playground:\n    fn::invoke:\n      function: digitalocean:getProject\n      arguments:\n        name: playground\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nImporting this resource is not supported.\n\n",
            "properties": {
                "project": {
                    "type": "string",
                    "description": "the ID of the project\n"
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "a list of uniform resource names (URNs) for the resources associated with the project\n"
                }
            },
            "required": [
                "project",
                "resources"
            ],
            "inputProperties": {
                "project": {
                    "type": "string",
                    "description": "the ID of the project\n",
                    "willReplaceOnChanges": true
                },
                "resources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "a list of uniform resource names (URNs) for the resources associated with the project\n"
                }
            },
            "requiredInputs": [
                "project",
                "resources"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ProjectResources resources.\n",
                "properties": {
                    "project": {
                        "type": "string",
                        "description": "the ID of the project\n",
                        "willReplaceOnChanges": true
                    },
                    "resources": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "a list of uniform resource names (URNs) for the resources associated with the project\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/reservedIp:ReservedIp": {
            "description": "Provides a DigitalOcean reserved IP to represent a publicly-accessible static IP addresses that can be mapped to one of your Droplets.\n\n\u003e **NOTE:** Reserved IPs can be assigned to a Droplet either directly on the \u003cspan pulumi-lang-nodejs=\"`digitalocean.ReservedIp`\" pulumi-lang-dotnet=\"`digitalocean.ReservedIp`\" pulumi-lang-go=\"`ReservedIp`\" pulumi-lang-python=\"`ReservedIp`\" pulumi-lang-yaml=\"`digitalocean.ReservedIp`\" pulumi-lang-java=\"`digitalocean.ReservedIp`\"\u003e`digitalocean.ReservedIp`\u003c/span\u003e resource by setting a \u003cspan pulumi-lang-nodejs=\"`dropletId`\" pulumi-lang-dotnet=\"`DropletId`\" pulumi-lang-go=\"`dropletId`\" pulumi-lang-python=\"`droplet_id`\" pulumi-lang-yaml=\"`dropletId`\" pulumi-lang-java=\"`dropletId`\"\u003e`droplet_id`\u003c/span\u003e or using the \u003cspan pulumi-lang-nodejs=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-dotnet=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-go=\"`ReservedIpAssignment`\" pulumi-lang-python=\"`ReservedIpAssignment`\" pulumi-lang-yaml=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-java=\"`digitalocean.ReservedIpAssignment`\"\u003e`digitalocean.ReservedIpAssignment`\u003c/span\u003e resource, but the two cannot be used together.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.Droplet(\"example\", {\n    name: \"example\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-22-04-x64\",\n    region: digitalocean.Region.NYC3,\n    ipv6: true,\n    privateNetworking: true,\n});\nconst exampleReservedIp = new digitalocean.ReservedIp(\"example\", {\n    dropletId: example.id,\n    region: example.region,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.Droplet(\"example\",\n    name=\"example\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-22-04-x64\",\n    region=digitalocean.Region.NYC3,\n    ipv6=True,\n    private_networking=True)\nexample_reserved_ip = digitalocean.ReservedIp(\"example\",\n    droplet_id=example.id,\n    region=example.region)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-22-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        Ipv6 = true,\n        PrivateNetworking = true,\n    });\n\n    var exampleReservedIp = new DigitalOcean.ReservedIp(\"example\", new()\n    {\n        DropletId = example.Id,\n        Region = example.Region,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:              pulumi.String(\"example\"),\n\t\t\tSize:              pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:             pulumi.String(\"ubuntu-22-04-x64\"),\n\t\t\tRegion:            pulumi.String(digitalocean.RegionNYC3),\n\t\t\tIpv6:              pulumi.Bool(true),\n\t\t\tPrivateNetworking: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewReservedIp(ctx, \"example\", \u0026digitalocean.ReservedIpArgs{\n\t\t\tDropletId: example.ID(),\n\t\t\tRegion:    example.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.ReservedIp;\nimport com.pulumi.digitalocean.ReservedIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Droplet(\"example\", DropletArgs.builder()\n            .name(\"example\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-22-04-x64\")\n            .region(\"nyc3\")\n            .ipv6(true)\n            .privateNetworking(true)\n            .build());\n\n        var exampleReservedIp = new ReservedIp(\"exampleReservedIp\", ReservedIpArgs.builder()\n            .dropletId(example.id())\n            .region(example.region())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:Droplet\n    properties:\n      name: example\n      size: s-1vcpu-1gb\n      image: ubuntu-22-04-x64\n      region: nyc3\n      ipv6: true\n      privateNetworking: true\n  exampleReservedIp:\n    type: digitalocean:ReservedIp\n    name: example\n    properties:\n      dropletId: ${example.id}\n      region: ${example.region}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReserved IPs can be imported using the \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/reservedIp:ReservedIp myip 192.168.0.1\n```\n\n",
            "properties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the reserved IP will be assigned to.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP Address of the resource\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region that the reserved IP is reserved to.\n"
                },
                "reservedIpUrn": {
                    "type": "string",
                    "description": "The uniform resource name of the reserved ip\n"
                }
            },
            "required": [
                "ipAddress",
                "region",
                "reservedIpUrn"
            ],
            "inputProperties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the reserved IP will be assigned to.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The IP Address of the resource\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region that the reserved IP is reserved to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ReservedIp resources.\n",
                "properties": {
                    "dropletId": {
                        "type": "integer",
                        "description": "The ID of Droplet that the reserved IP will be assigned to.\n"
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The IP Address of the resource\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region that the reserved IP is reserved to.\n",
                        "willReplaceOnChanges": true
                    },
                    "reservedIpUrn": {
                        "type": "string",
                        "description": "The uniform resource name of the reserved ip\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/reservedIpAssignment:ReservedIpAssignment": {
            "description": "Provides a resource for assigning an existing DigitalOcean reserved IP to a Droplet. This\nmakes it easy to provision reserved IP addresses that are not tied to the lifecycle of your\nDroplet.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.ReservedIp(\"example\", {region: \"nyc3\"});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"baz\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-22-04-x64\",\n    region: digitalocean.Region.NYC3,\n    ipv6: true,\n    privateNetworking: true,\n});\nconst exampleReservedIpAssignment = new digitalocean.ReservedIpAssignment(\"example\", {\n    ipAddress: example.ipAddress,\n    dropletId: exampleDroplet.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.ReservedIp(\"example\", region=\"nyc3\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"baz\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-22-04-x64\",\n    region=digitalocean.Region.NYC3,\n    ipv6=True,\n    private_networking=True)\nexample_reserved_ip_assignment = digitalocean.ReservedIpAssignment(\"example\",\n    ip_address=example.ip_address,\n    droplet_id=example_droplet.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.ReservedIp(\"example\", new()\n    {\n        Region = \"nyc3\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"baz\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-22-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        Ipv6 = true,\n        PrivateNetworking = true,\n    });\n\n    var exampleReservedIpAssignment = new DigitalOcean.ReservedIpAssignment(\"example\", new()\n    {\n        IpAddress = example.IpAddress,\n        DropletId = exampleDroplet.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.NewReservedIp(ctx, \"example\", \u0026digitalocean.ReservedIpArgs{\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDroplet, err := digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:              pulumi.String(\"baz\"),\n\t\t\tSize:              pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:             pulumi.String(\"ubuntu-22-04-x64\"),\n\t\t\tRegion:            pulumi.String(digitalocean.RegionNYC3),\n\t\t\tIpv6:              pulumi.Bool(true),\n\t\t\tPrivateNetworking: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewReservedIpAssignment(ctx, \"example\", \u0026digitalocean.ReservedIpAssignmentArgs{\n\t\t\tIpAddress: example.IpAddress,\n\t\t\tDropletId: exampleDroplet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ReservedIp;\nimport com.pulumi.digitalocean.ReservedIpArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.ReservedIpAssignment;\nimport com.pulumi.digitalocean.ReservedIpAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ReservedIp(\"example\", ReservedIpArgs.builder()\n            .region(\"nyc3\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"baz\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-22-04-x64\")\n            .region(\"nyc3\")\n            .ipv6(true)\n            .privateNetworking(true)\n            .build());\n\n        var exampleReservedIpAssignment = new ReservedIpAssignment(\"exampleReservedIpAssignment\", ReservedIpAssignmentArgs.builder()\n            .ipAddress(example.ipAddress())\n            .dropletId(exampleDroplet.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:ReservedIp\n    properties:\n      region: nyc3\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: baz\n      size: s-1vcpu-1gb\n      image: ubuntu-22-04-x64\n      region: nyc3\n      ipv6: true\n      privateNetworking: true\n  exampleReservedIpAssignment:\n    type: digitalocean:ReservedIpAssignment\n    name: example\n    properties:\n      ipAddress: ${example.ipAddress}\n      dropletId: ${exampleDroplet.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReserved IP assignments can be imported using the reserved IP itself and the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of\nthe Droplet joined with a comma. For example:\n\n```sh\n$ pulumi import digitalocean:index/reservedIpAssignment:ReservedIpAssignment foobar 192.0.2.1,123456\n```\n\n",
            "properties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the reserved IP will be assigned to.\n"
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The reserved IP to assign to the Droplet.\n"
                }
            },
            "required": [
                "dropletId",
                "ipAddress"
            ],
            "inputProperties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the reserved IP will be assigned to.\n",
                    "willReplaceOnChanges": true
                },
                "ipAddress": {
                    "type": "string",
                    "description": "The reserved IP to assign to the Droplet.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "dropletId",
                "ipAddress"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ReservedIpAssignment resources.\n",
                "properties": {
                    "dropletId": {
                        "type": "integer",
                        "description": "The ID of Droplet that the reserved IP will be assigned to.\n",
                        "willReplaceOnChanges": true
                    },
                    "ipAddress": {
                        "type": "string",
                        "description": "The reserved IP to assign to the Droplet.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/reservedIpv6:ReservedIpv6": {
            "description": "Provides a DigitalOcean reserved IPv6 to represent a publicly-accessible static IPv6 addresses that can be mapped to one of your Droplets.\n\n\u003e **NOTE:** Reserved IPv6s can be assigned to a Droplet using \n\u003cspan pulumi-lang-nodejs=\"`digitalocean.ReservedIpv6Assignment`\" pulumi-lang-dotnet=\"`digitalocean.ReservedIpv6Assignment`\" pulumi-lang-go=\"`ReservedIpv6Assignment`\" pulumi-lang-python=\"`ReservedIpv6Assignment`\" pulumi-lang-yaml=\"`digitalocean.ReservedIpv6Assignment`\" pulumi-lang-java=\"`digitalocean.ReservedIpv6Assignment`\"\u003e`digitalocean.ReservedIpv6Assignment`\u003c/span\u003e resource only.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.ReservedIpv6(\"foobar\", {regionSlug: \"nyc3\"});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.ReservedIpv6(\"foobar\", region_slug=\"nyc3\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.ReservedIpv6(\"foobar\", new()\n    {\n        RegionSlug = \"nyc3\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewReservedIpv6(ctx, \"foobar\", \u0026digitalocean.ReservedIpv6Args{\n\t\t\tRegionSlug: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ReservedIpv6;\nimport com.pulumi.digitalocean.ReservedIpv6Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new ReservedIpv6(\"foobar\", ReservedIpv6Args.builder()\n            .regionSlug(\"nyc3\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:ReservedIpv6\n    properties:\n      regionSlug: nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReserved IPv6s can be imported using the \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, e.g.\n\n```sh\nterraform import digitalocean_reserved_ipv6.myip \n2409:40d0:fa:27dd:9b24:7074:7b85:eee6\n```\n\n",
            "properties": {
                "dropletId": {
                    "type": "integer"
                },
                "ip": {
                    "type": "string"
                },
                "regionSlug": {
                    "type": "string",
                    "description": "The region that the reserved IPv6 needs to be reserved to.\n"
                },
                "reservedIpv6Urn": {
                    "type": "string",
                    "description": "the uniform resource name for the reserved ipv6"
                }
            },
            "required": [
                "dropletId",
                "ip",
                "regionSlug",
                "reservedIpv6Urn"
            ],
            "inputProperties": {
                "dropletId": {
                    "type": "integer"
                },
                "ip": {
                    "type": "string"
                },
                "regionSlug": {
                    "type": "string",
                    "description": "The region that the reserved IPv6 needs to be reserved to.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "regionSlug"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ReservedIpv6 resources.\n",
                "properties": {
                    "dropletId": {
                        "type": "integer"
                    },
                    "ip": {
                        "type": "string"
                    },
                    "regionSlug": {
                        "type": "string",
                        "description": "The region that the reserved IPv6 needs to be reserved to.\n",
                        "willReplaceOnChanges": true
                    },
                    "reservedIpv6Urn": {
                        "type": "string",
                        "description": "the uniform resource name for the reserved ipv6"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/reservedIpv6Assignment:ReservedIpv6Assignment": {
            "description": "Provides a resource for assigning an existing DigitalOcean reserved IPv6 to a Droplet. This\nmakes it easy to provision reserved IPv6 addresses that are not tied to the lifecycle of your Droplet.\n\n## Import\n\nReserved IPv6 assignments can be imported using the reserved IPv6 itself and the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e of\nthe Droplet joined with a comma. For example:\n\n```sh\n$ pulumi import digitalocean:index/reservedIpv6Assignment:ReservedIpv6Assignment foobar 2409:40d0:fa:27dd:9b24:7074:7b85:eee6,123456\n```\n\n",
            "properties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the reserved IPv6 will be assigned to.\n"
                },
                "ip": {
                    "type": "string",
                    "description": "The reserved IPv6 to assign to the Droplet.\n"
                }
            },
            "required": [
                "dropletId",
                "ip"
            ],
            "inputProperties": {
                "dropletId": {
                    "type": "integer",
                    "description": "The ID of Droplet that the reserved IPv6 will be assigned to.\n",
                    "willReplaceOnChanges": true
                },
                "ip": {
                    "type": "string",
                    "description": "The reserved IPv6 to assign to the Droplet.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "dropletId",
                "ip"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering ReservedIpv6Assignment resources.\n",
                "properties": {
                    "dropletId": {
                        "type": "integer",
                        "description": "The ID of Droplet that the reserved IPv6 will be assigned to.\n",
                        "willReplaceOnChanges": true
                    },
                    "ip": {
                        "type": "string",
                        "description": "The reserved IPv6 to assign to the Droplet.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/spacesBucket:SpacesBucket": {
            "description": "Provides a bucket resource for Spaces, DigitalOcean's object storage product.\n\nThe [Spaces API](https://docs.digitalocean.com/reference/api/spaces-api/) was\ndesigned to be interoperable with Amazon's AWS S3 API. This allows users to\ninteract with the service while using the tools they already know. Spaces\nmirrors S3's authentication framework and requests to Spaces require a key pair\nsimilar to Amazon's Access ID and Secret Key.\n\nThe authentication requirement can be met by either setting the\n`SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or\nthe provider's \u003cspan pulumi-lang-nodejs=\"`spacesAccessId`\" pulumi-lang-dotnet=\"`SpacesAccessId`\" pulumi-lang-go=\"`spacesAccessId`\" pulumi-lang-python=\"`spaces_access_id`\" pulumi-lang-yaml=\"`spacesAccessId`\" pulumi-lang-java=\"`spacesAccessId`\"\u003e`spaces_access_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`spacesSecretKey`\" pulumi-lang-dotnet=\"`SpacesSecretKey`\" pulumi-lang-go=\"`spacesSecretKey`\" pulumi-lang-python=\"`spaces_secret_key`\" pulumi-lang-yaml=\"`spacesSecretKey`\" pulumi-lang-java=\"`spacesSecretKey`\"\u003e`spaces_secret_key`\u003c/span\u003e arguments to the\naccess ID and secret you generate via the DigitalOcean control panel. For\nexample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst static_assets = new digitalocean.SpacesBucket(\"static-assets\", {});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstatic_assets = digitalocean.SpacesBucket(\"static-assets\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var static_assets = new DigitalOcean.SpacesBucket(\"static-assets\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesBucket(ctx, \"static-assets\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var static_assets = new SpacesBucket(\"static-assets\");\n\n    }\n}\n```\n```yaml\nresources:\n  static-assets:\n    type: digitalocean:SpacesBucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces)\n\n## Example Usage\n\n### Create a New Bucket\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesBucket(\"foobar\", {\n    name: \"foobar\",\n    region: digitalocean.Region.NYC3,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesBucket(\"foobar\",\n    name=\"foobar\",\n    region=digitalocean.Region.NYC3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.SpacesBucket(\"foobar\", new()\n    {\n        Name = \"foobar\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesBucket(ctx, \"foobar\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"foobar\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport com.pulumi.digitalocean.SpacesBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new SpacesBucket(\"foobar\", SpacesBucketArgs.builder()\n            .name(\"foobar\")\n            .region(\"nyc3\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: foobar\n      region: nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a New Bucket With CORS Rules\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesBucket(\"foobar\", {\n    name: \"foobar\",\n    region: digitalocean.Region.NYC3,\n    corsRules: [\n        {\n            allowedHeaders: [\"*\"],\n            allowedMethods: [\"GET\"],\n            allowedOrigins: [\"*\"],\n            maxAgeSeconds: 3000,\n        },\n        {\n            allowedHeaders: [\"*\"],\n            allowedMethods: [\n                \"PUT\",\n                \"POST\",\n                \"DELETE\",\n            ],\n            allowedOrigins: [\"https://www.example.com\"],\n            maxAgeSeconds: 3000,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesBucket(\"foobar\",\n    name=\"foobar\",\n    region=digitalocean.Region.NYC3,\n    cors_rules=[\n        {\n            \"allowed_headers\": [\"*\"],\n            \"allowed_methods\": [\"GET\"],\n            \"allowed_origins\": [\"*\"],\n            \"max_age_seconds\": 3000,\n        },\n        {\n            \"allowed_headers\": [\"*\"],\n            \"allowed_methods\": [\n                \"PUT\",\n                \"POST\",\n                \"DELETE\",\n            ],\n            \"allowed_origins\": [\"https://www.example.com\"],\n            \"max_age_seconds\": 3000,\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.SpacesBucket(\"foobar\", new()\n    {\n        Name = \"foobar\",\n        Region = DigitalOcean.Region.NYC3,\n        CorsRules = new[]\n        {\n            new DigitalOcean.Inputs.SpacesBucketCorsRuleArgs\n            {\n                AllowedHeaders = new[]\n                {\n                    \"*\",\n                },\n                AllowedMethods = new[]\n                {\n                    \"GET\",\n                },\n                AllowedOrigins = new[]\n                {\n                    \"*\",\n                },\n                MaxAgeSeconds = 3000,\n            },\n            new DigitalOcean.Inputs.SpacesBucketCorsRuleArgs\n            {\n                AllowedHeaders = new[]\n                {\n                    \"*\",\n                },\n                AllowedMethods = new[]\n                {\n                    \"PUT\",\n                    \"POST\",\n                    \"DELETE\",\n                },\n                AllowedOrigins = new[]\n                {\n                    \"https://www.example.com\",\n                },\n                MaxAgeSeconds = 3000,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesBucket(ctx, \"foobar\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"foobar\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tCorsRules: digitalocean.SpacesBucketCorsRuleArray{\n\t\t\t\t\u0026digitalocean.SpacesBucketCorsRuleArgs{\n\t\t\t\t\tAllowedHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAgeSeconds: pulumi.Int(3000),\n\t\t\t\t},\n\t\t\t\t\u0026digitalocean.SpacesBucketCorsRuleArgs{\n\t\t\t\t\tAllowedHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t\tpulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"https://www.example.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAgeSeconds: pulumi.Int(3000),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport com.pulumi.digitalocean.SpacesBucketArgs;\nimport com.pulumi.digitalocean.inputs.SpacesBucketCorsRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new SpacesBucket(\"foobar\", SpacesBucketArgs.builder()\n            .name(\"foobar\")\n            .region(\"nyc3\")\n            .corsRules(            \n                SpacesBucketCorsRuleArgs.builder()\n                    .allowedHeaders(\"*\")\n                    .allowedMethods(\"GET\")\n                    .allowedOrigins(\"*\")\n                    .maxAgeSeconds(3000)\n                    .build(),\n                SpacesBucketCorsRuleArgs.builder()\n                    .allowedHeaders(\"*\")\n                    .allowedMethods(                    \n                        \"PUT\",\n                        \"POST\",\n                        \"DELETE\")\n                    .allowedOrigins(\"https://www.example.com\")\n                    .maxAgeSeconds(3000)\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: foobar\n      region: nyc3\n      corsRules:\n        - allowedHeaders:\n            - '*'\n          allowedMethods:\n            - GET\n          allowedOrigins:\n            - '*'\n          maxAgeSeconds: 3000\n        - allowedHeaders:\n            - '*'\n          allowedMethods:\n            - PUT\n            - POST\n            - DELETE\n          allowedOrigins:\n            - https://www.example.com\n          maxAgeSeconds: 3000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBuckets can be imported using the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e and \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 attributes (delimited by a comma):\n\n```sh\n$ pulumi import digitalocean:index/spacesBucket:SpacesBucket foobar `region`,`name`\n```\n\n",
            "properties": {
                "acl": {
                    "type": "string",
                    "description": "Canned ACL applied on bucket creation: \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 or `public-read` (Defaults to \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e)\n"
                },
                "bucketDomainName": {
                    "type": "string",
                    "description": "The FQDN of the bucket (e.g. bucket-name.nyc3.digitaloceanspaces.com)\n"
                },
                "bucketUrn": {
                    "type": "string",
                    "description": "The uniform resource name for the bucket\n"
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/SpacesBucketCorsRule:SpacesBucketCorsRule"
                    },
                    "description": "A rule of Cross-Origin Resource Sharing (documented below).\n",
                    "deprecationMessage": "Terraform will only perform drift detection if a configuration value is provided. Use the resource \u003cspan pulumi-lang-nodejs=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-dotnet=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-go=\"`SpacesBucketCorsConfiguration`\" pulumi-lang-python=\"`SpacesBucketCorsConfiguration`\" pulumi-lang-yaml=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-java=\"`digitalocean.SpacesBucketCorsConfiguration`\"\u003e`digitalocean.SpacesBucketCorsConfiguration`\u003c/span\u003e instead."
                },
                "endpoint": {
                    "type": "string",
                    "description": "The FQDN of the bucket without the bucket name (e.g. nyc3.digitaloceanspaces.com)\n"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "Unless \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the bucket will only be destroyed if empty (Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"
                },
                "lifecycleRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/SpacesBucketLifecycleRule:SpacesBucketLifecycleRule"
                    },
                    "description": "A configuration of object lifecycle management (documented below).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the bucket\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides (Defaults to \u003cspan pulumi-lang-nodejs=\"`nyc3`\" pulumi-lang-dotnet=\"`Nyc3`\" pulumi-lang-go=\"`nyc3`\" pulumi-lang-python=\"`nyc3`\" pulumi-lang-yaml=\"`nyc3`\" pulumi-lang-java=\"`nyc3`\"\u003e`nyc3`\u003c/span\u003e)\n"
                },
                "versioning": {
                    "$ref": "#/types/digitalocean:index/SpacesBucketVersioning:SpacesBucketVersioning",
                    "description": "A state of versioning (documented below)\n"
                }
            },
            "required": [
                "bucketDomainName",
                "endpoint",
                "name",
                "bucketUrn"
            ],
            "inputProperties": {
                "acl": {
                    "type": "string",
                    "description": "Canned ACL applied on bucket creation: \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 or `public-read` (Defaults to \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e)\n"
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/SpacesBucketCorsRule:SpacesBucketCorsRule"
                    },
                    "description": "A rule of Cross-Origin Resource Sharing (documented below).\n",
                    "deprecationMessage": "Terraform will only perform drift detection if a configuration value is provided. Use the resource \u003cspan pulumi-lang-nodejs=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-dotnet=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-go=\"`SpacesBucketCorsConfiguration`\" pulumi-lang-python=\"`SpacesBucketCorsConfiguration`\" pulumi-lang-yaml=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-java=\"`digitalocean.SpacesBucketCorsConfiguration`\"\u003e`digitalocean.SpacesBucketCorsConfiguration`\u003c/span\u003e instead."
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "Unless \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the bucket will only be destroyed if empty (Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"
                },
                "lifecycleRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/SpacesBucketLifecycleRule:SpacesBucketLifecycleRule"
                    },
                    "description": "A configuration of object lifecycle management (documented below).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the bucket\n"
                },
                "region": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:Region"
                        }
                    ],
                    "description": "The region where the bucket resides (Defaults to \u003cspan pulumi-lang-nodejs=\"`nyc3`\" pulumi-lang-dotnet=\"`Nyc3`\" pulumi-lang-go=\"`nyc3`\" pulumi-lang-python=\"`nyc3`\" pulumi-lang-yaml=\"`nyc3`\" pulumi-lang-java=\"`nyc3`\"\u003e`nyc3`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "versioning": {
                    "$ref": "#/types/digitalocean:index/SpacesBucketVersioning:SpacesBucketVersioning",
                    "description": "A state of versioning (documented below)\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SpacesBucket resources.\n",
                "properties": {
                    "acl": {
                        "type": "string",
                        "description": "Canned ACL applied on bucket creation: \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 or `public-read` (Defaults to \u003cspan pulumi-lang-nodejs=\"`private`\" pulumi-lang-dotnet=\"`Private`\" pulumi-lang-go=\"`private`\" pulumi-lang-python=\"`private`\" pulumi-lang-yaml=\"`private`\" pulumi-lang-java=\"`private`\"\u003e`private`\u003c/span\u003e)\n"
                    },
                    "bucketDomainName": {
                        "type": "string",
                        "description": "The FQDN of the bucket (e.g. bucket-name.nyc3.digitaloceanspaces.com)\n"
                    },
                    "bucketUrn": {
                        "type": "string",
                        "description": "The uniform resource name for the bucket\n"
                    },
                    "corsRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/SpacesBucketCorsRule:SpacesBucketCorsRule"
                        },
                        "description": "A rule of Cross-Origin Resource Sharing (documented below).\n",
                        "deprecationMessage": "Terraform will only perform drift detection if a configuration value is provided. Use the resource \u003cspan pulumi-lang-nodejs=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-dotnet=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-go=\"`SpacesBucketCorsConfiguration`\" pulumi-lang-python=\"`SpacesBucketCorsConfiguration`\" pulumi-lang-yaml=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-java=\"`digitalocean.SpacesBucketCorsConfiguration`\"\u003e`digitalocean.SpacesBucketCorsConfiguration`\u003c/span\u003e instead."
                    },
                    "endpoint": {
                        "type": "string",
                        "description": "The FQDN of the bucket without the bucket name (e.g. nyc3.digitaloceanspaces.com)\n"
                    },
                    "forceDestroy": {
                        "type": "boolean",
                        "description": "Unless \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the bucket will only be destroyed if empty (Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e)\n"
                    },
                    "lifecycleRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/SpacesBucketLifecycleRule:SpacesBucketLifecycleRule"
                        },
                        "description": "A configuration of object lifecycle management (documented below).\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the bucket\n"
                    },
                    "region": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:Region"
                            }
                        ],
                        "description": "The region where the bucket resides (Defaults to \u003cspan pulumi-lang-nodejs=\"`nyc3`\" pulumi-lang-dotnet=\"`Nyc3`\" pulumi-lang-go=\"`nyc3`\" pulumi-lang-python=\"`nyc3`\" pulumi-lang-yaml=\"`nyc3`\" pulumi-lang-java=\"`nyc3`\"\u003e`nyc3`\u003c/span\u003e)\n",
                        "willReplaceOnChanges": true
                    },
                    "versioning": {
                        "$ref": "#/types/digitalocean:index/SpacesBucketVersioning:SpacesBucketVersioning",
                        "description": "A state of versioning (documented below)\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/spacesBucketCorsConfiguration:SpacesBucketCorsConfiguration": {
            "description": "Provides a CORS configuration resource for Spaces, DigitalOcean's object storage product.\nThe \u003cspan pulumi-lang-nodejs=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-dotnet=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-go=\"`SpacesBucketCorsConfiguration`\" pulumi-lang-python=\"`SpacesBucketCorsConfiguration`\" pulumi-lang-yaml=\"`digitalocean.SpacesBucketCorsConfiguration`\" pulumi-lang-java=\"`digitalocean.SpacesBucketCorsConfiguration`\"\u003e`digitalocean.SpacesBucketCorsConfiguration`\u003c/span\u003e resource allows Terraform to to attach CORS configuration to Spaces.\n\nThe [Spaces API](https://docs.digitalocean.com/reference/api/spaces-api/) was\ndesigned to be interoperable with Amazon's AWS S3 API. This allows users to\ninteract with the service while using the tools they already know. Spaces\nmirrors S3's authentication framework and requests to Spaces require a key pair\nsimilar to Amazon's Access ID and Secret Key.\n\nThe authentication requirement can be met by either setting the\n`SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or\nthe provider's \u003cspan pulumi-lang-nodejs=\"`spacesAccessId`\" pulumi-lang-dotnet=\"`SpacesAccessId`\" pulumi-lang-go=\"`spacesAccessId`\" pulumi-lang-python=\"`spaces_access_id`\" pulumi-lang-yaml=\"`spacesAccessId`\" pulumi-lang-java=\"`spacesAccessId`\"\u003e`spaces_access_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`spacesSecretKey`\" pulumi-lang-dotnet=\"`SpacesSecretKey`\" pulumi-lang-go=\"`spacesSecretKey`\" pulumi-lang-python=\"`spaces_secret_key`\" pulumi-lang-yaml=\"`spacesSecretKey`\" pulumi-lang-java=\"`spacesSecretKey`\"\u003e`spaces_secret_key`\u003c/span\u003e arguments to the\naccess ID and secret you generate via the DigitalOcean control panel. For\nexample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst static_assets = new digitalocean.SpacesBucket(\"static-assets\", {});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstatic_assets = digitalocean.SpacesBucket(\"static-assets\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var static_assets = new DigitalOcean.SpacesBucket(\"static-assets\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesBucket(ctx, \"static-assets\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var static_assets = new SpacesBucket(\"static-assets\");\n\n    }\n}\n```\n```yaml\nresources:\n  static-assets:\n    type: digitalocean:SpacesBucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces)\n\n## Example Usage\n\n### Create a Key in a Spaces Bucket\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesBucket(\"foobar\", {\n    name: \"foobar\",\n    region: digitalocean.Region.NYC3,\n});\nconst test = new digitalocean.SpacesBucketCorsConfiguration(\"test\", {\n    bucket: foobar.id,\n    region: \"nyc3\",\n    corsRules: [{\n        allowedHeaders: [\"*\"],\n        allowedMethods: [\n            \"PUT\",\n            \"POST\",\n        ],\n        allowedOrigins: [\"https://s3-website-test.hashicorp.com\"],\n        exposeHeaders: [\"ETag\"],\n        maxAgeSeconds: 3000,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesBucket(\"foobar\",\n    name=\"foobar\",\n    region=digitalocean.Region.NYC3)\ntest = digitalocean.SpacesBucketCorsConfiguration(\"test\",\n    bucket=foobar.id,\n    region=\"nyc3\",\n    cors_rules=[{\n        \"allowed_headers\": [\"*\"],\n        \"allowed_methods\": [\n            \"PUT\",\n            \"POST\",\n        ],\n        \"allowed_origins\": [\"https://s3-website-test.hashicorp.com\"],\n        \"expose_headers\": [\"ETag\"],\n        \"max_age_seconds\": 3000,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.SpacesBucket(\"foobar\", new()\n    {\n        Name = \"foobar\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var test = new DigitalOcean.SpacesBucketCorsConfiguration(\"test\", new()\n    {\n        Bucket = foobar.Id,\n        Region = \"nyc3\",\n        CorsRules = new[]\n        {\n            new DigitalOcean.Inputs.SpacesBucketCorsConfigurationCorsRuleArgs\n            {\n                AllowedHeaders = new[]\n                {\n                    \"*\",\n                },\n                AllowedMethods = new[]\n                {\n                    \"PUT\",\n                    \"POST\",\n                },\n                AllowedOrigins = new[]\n                {\n                    \"https://s3-website-test.hashicorp.com\",\n                },\n                ExposeHeaders = new[]\n                {\n                    \"ETag\",\n                },\n                MaxAgeSeconds = 3000,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewSpacesBucket(ctx, \"foobar\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"foobar\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewSpacesBucketCorsConfiguration(ctx, \"test\", \u0026digitalocean.SpacesBucketCorsConfigurationArgs{\n\t\t\tBucket: foobar.ID(),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t\tCorsRules: digitalocean.SpacesBucketCorsConfigurationCorsRuleArray{\n\t\t\t\t\u0026digitalocean.SpacesBucketCorsConfigurationCorsRuleArgs{\n\t\t\t\t\tAllowedHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"https://s3-website-test.hashicorp.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ETag\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAgeSeconds: pulumi.Int(3000),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport com.pulumi.digitalocean.SpacesBucketArgs;\nimport com.pulumi.digitalocean.SpacesBucketCorsConfiguration;\nimport com.pulumi.digitalocean.SpacesBucketCorsConfigurationArgs;\nimport com.pulumi.digitalocean.inputs.SpacesBucketCorsConfigurationCorsRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new SpacesBucket(\"foobar\", SpacesBucketArgs.builder()\n            .name(\"foobar\")\n            .region(\"nyc3\")\n            .build());\n\n        var test = new SpacesBucketCorsConfiguration(\"test\", SpacesBucketCorsConfigurationArgs.builder()\n            .bucket(foobar.id())\n            .region(\"nyc3\")\n            .corsRules(SpacesBucketCorsConfigurationCorsRuleArgs.builder()\n                .allowedHeaders(\"*\")\n                .allowedMethods(                \n                    \"PUT\",\n                    \"POST\")\n                .allowedOrigins(\"https://s3-website-test.hashicorp.com\")\n                .exposeHeaders(\"ETag\")\n                .maxAgeSeconds(3000)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: foobar\n      region: nyc3\n  test:\n    type: digitalocean:SpacesBucketCorsConfiguration\n    properties:\n      bucket: ${foobar.id}\n      region: nyc3\n      corsRules:\n        - allowedHeaders:\n            - '*'\n          allowedMethods:\n            - PUT\n            - POST\n          allowedOrigins:\n            - https://s3-website-test.hashicorp.com\n          exposeHeaders:\n            - ETag\n          maxAgeSeconds: 3000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBucket policies can be imported using the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e attributes (delimited by a comma):\n\n```sh\n$ pulumi import digitalocean:index/spacesBucketCorsConfiguration:SpacesBucketCorsConfiguration foobar `region`,`bucket`\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket to which to apply the CORS configuration.\n"
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/SpacesBucketCorsConfigurationCorsRule:SpacesBucketCorsConfigurationCorsRule"
                    },
                    "description": "Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides.\n"
                }
            },
            "required": [
                "bucket",
                "corsRules",
                "region"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket to which to apply the CORS configuration.\n"
                },
                "corsRules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/SpacesBucketCorsConfigurationCorsRule:SpacesBucketCorsConfigurationCorsRule"
                    },
                    "description": "Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "bucket",
                "corsRules",
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SpacesBucketCorsConfiguration resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket to which to apply the CORS configuration.\n"
                    },
                    "corsRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/SpacesBucketCorsConfigurationCorsRule:SpacesBucketCorsConfigurationCorsRule"
                        },
                        "description": "Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the bucket resides.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/spacesBucketLogging:SpacesBucketLogging": {
            "description": "Provides a bucket logging resource for Spaces, DigitalOcean's object storage product.\nThe \u003cspan pulumi-lang-nodejs=\"`digitalocean.SpacesBucketLogging`\" pulumi-lang-dotnet=\"`digitalocean.SpacesBucketLogging`\" pulumi-lang-go=\"`SpacesBucketLogging`\" pulumi-lang-python=\"`SpacesBucketLogging`\" pulumi-lang-yaml=\"`digitalocean.SpacesBucketLogging`\" pulumi-lang-java=\"`digitalocean.SpacesBucketLogging`\"\u003e`digitalocean.SpacesBucketLogging`\u003c/span\u003e resource allows Terraform to configure access\nlogging for Spaces buckets. For more information, see:\n[How to Configure Spaces Access Logs](https://docs.digitalocean.com/products/spaces/how-to/access-logs/)\n\nThe [Spaces API](https://docs.digitalocean.com/reference/api/spaces-api/) was\ndesigned to be interoperable with Amazon's AWS S3 API. This allows users to\ninteract with the service while using the tools they already know. Spaces\nmirrors S3's authentication framework and requests to Spaces require a key pair\nsimilar to Amazon's Access ID and Secret Key.\n\nThe authentication requirement can be met by either setting the\n`SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or\nthe provider's \u003cspan pulumi-lang-nodejs=\"`spacesAccessId`\" pulumi-lang-dotnet=\"`SpacesAccessId`\" pulumi-lang-go=\"`spacesAccessId`\" pulumi-lang-python=\"`spaces_access_id`\" pulumi-lang-yaml=\"`spacesAccessId`\" pulumi-lang-java=\"`spacesAccessId`\"\u003e`spaces_access_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`spacesSecretKey`\" pulumi-lang-dotnet=\"`SpacesSecretKey`\" pulumi-lang-go=\"`spacesSecretKey`\" pulumi-lang-python=\"`spaces_secret_key`\" pulumi-lang-yaml=\"`spacesSecretKey`\" pulumi-lang-java=\"`spacesSecretKey`\"\u003e`spaces_secret_key`\u003c/span\u003e arguments to the\naccess ID and secret you generate via the DigitalOcean control panel. For\nexample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst static_assets = new digitalocean.SpacesBucket(\"static-assets\", {});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstatic_assets = digitalocean.SpacesBucket(\"static-assets\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var static_assets = new DigitalOcean.SpacesBucket(\"static-assets\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesBucket(ctx, \"static-assets\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var static_assets = new SpacesBucket(\"static-assets\");\n\n    }\n}\n```\n```yaml\nresources:\n  static-assets:\n    type: digitalocean:SpacesBucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst assets = new digitalocean.SpacesBucket(\"assets\", {\n    name: \"assets\",\n    region: digitalocean.Region.NYC3,\n});\nconst logs = new digitalocean.SpacesBucket(\"logs\", {\n    name: \"logs\",\n    region: digitalocean.Region.NYC3,\n});\nconst example = new digitalocean.SpacesBucketLogging(\"example\", {\n    region: \"%s\",\n    bucket: assets.id,\n    targetBucket: logs.id,\n    targetPrefix: \"access-logs/\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nassets = digitalocean.SpacesBucket(\"assets\",\n    name=\"assets\",\n    region=digitalocean.Region.NYC3)\nlogs = digitalocean.SpacesBucket(\"logs\",\n    name=\"logs\",\n    region=digitalocean.Region.NYC3)\nexample = digitalocean.SpacesBucketLogging(\"example\",\n    region=\"%s\",\n    bucket=assets.id,\n    target_bucket=logs.id,\n    target_prefix=\"access-logs/\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var assets = new DigitalOcean.SpacesBucket(\"assets\", new()\n    {\n        Name = \"assets\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var logs = new DigitalOcean.SpacesBucket(\"logs\", new()\n    {\n        Name = \"logs\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var example = new DigitalOcean.SpacesBucketLogging(\"example\", new()\n    {\n        Region = \"%s\",\n        Bucket = assets.Id,\n        TargetBucket = logs.Id,\n        TargetPrefix = \"access-logs/\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tassets, err := digitalocean.NewSpacesBucket(ctx, \"assets\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"assets\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogs, err := digitalocean.NewSpacesBucket(ctx, \"logs\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"logs\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewSpacesBucketLogging(ctx, \"example\", \u0026digitalocean.SpacesBucketLoggingArgs{\n\t\t\tRegion:       pulumi.String(\"%s\"),\n\t\t\tBucket:       assets.ID(),\n\t\t\tTargetBucket: logs.ID(),\n\t\t\tTargetPrefix: pulumi.String(\"access-logs/\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport com.pulumi.digitalocean.SpacesBucketArgs;\nimport com.pulumi.digitalocean.SpacesBucketLogging;\nimport com.pulumi.digitalocean.SpacesBucketLoggingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var assets = new SpacesBucket(\"assets\", SpacesBucketArgs.builder()\n            .name(\"assets\")\n            .region(\"nyc3\")\n            .build());\n\n        var logs = new SpacesBucket(\"logs\", SpacesBucketArgs.builder()\n            .name(\"logs\")\n            .region(\"nyc3\")\n            .build());\n\n        var example = new SpacesBucketLogging(\"example\", SpacesBucketLoggingArgs.builder()\n            .region(\"%s\")\n            .bucket(assets.id())\n            .targetBucket(logs.id())\n            .targetPrefix(\"access-logs/\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  assets:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: assets\n      region: nyc3\n  logs:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: logs\n      region: nyc3\n  example:\n    type: digitalocean:SpacesBucketLogging\n    properties:\n      region: '%s'\n      bucket: ${assets.id}\n      targetBucket: ${logs.id}\n      targetPrefix: access-logs/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSpaces bucket logging can be imported using the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e attributes (delimited by a comma):\n\n```sh\n$ pulumi import digitalocean:index/spacesBucketLogging:SpacesBucketLogging example `region`,`bucket`\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket which will be logged.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides.\n"
                },
                "targetBucket": {
                    "type": "string",
                    "description": "The name of the bucket which will store the logs.\n"
                },
                "targetPrefix": {
                    "type": "string",
                    "description": "The prefix for the log files.\n"
                }
            },
            "required": [
                "bucket",
                "region",
                "targetBucket",
                "targetPrefix"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket which will be logged.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides.\n",
                    "willReplaceOnChanges": true
                },
                "targetBucket": {
                    "type": "string",
                    "description": "The name of the bucket which will store the logs.\n"
                },
                "targetPrefix": {
                    "type": "string",
                    "description": "The prefix for the log files.\n"
                }
            },
            "requiredInputs": [
                "bucket",
                "region",
                "targetBucket",
                "targetPrefix"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SpacesBucketLogging resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket which will be logged.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the bucket resides.\n",
                        "willReplaceOnChanges": true
                    },
                    "targetBucket": {
                        "type": "string",
                        "description": "The name of the bucket which will store the logs.\n"
                    },
                    "targetPrefix": {
                        "type": "string",
                        "description": "The prefix for the log files.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/spacesBucketObject:SpacesBucketObject": {
            "description": "Provides a bucket object resource for Spaces, DigitalOcean's object storage product.\nThe \u003cspan pulumi-lang-nodejs=\"`digitalocean.SpacesBucketObject`\" pulumi-lang-dotnet=\"`digitalocean.SpacesBucketObject`\" pulumi-lang-go=\"`SpacesBucketObject`\" pulumi-lang-python=\"`SpacesBucketObject`\" pulumi-lang-yaml=\"`digitalocean.SpacesBucketObject`\" pulumi-lang-java=\"`digitalocean.SpacesBucketObject`\"\u003e`digitalocean.SpacesBucketObject`\u003c/span\u003e resource allows Terraform to upload content\nto Spaces.\n\nThe [Spaces API](https://docs.digitalocean.com/reference/api/spaces-api/) was\ndesigned to be interoperable with Amazon's AWS S3 API. This allows users to\ninteract with the service while using the tools they already know. Spaces\nmirrors S3's authentication framework and requests to Spaces require a key pair\nsimilar to Amazon's Access ID and Secret Key.\n\nThe authentication requirement can be met by either setting the\n`SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or\nthe provider's \u003cspan pulumi-lang-nodejs=\"`spacesAccessId`\" pulumi-lang-dotnet=\"`SpacesAccessId`\" pulumi-lang-go=\"`spacesAccessId`\" pulumi-lang-python=\"`spaces_access_id`\" pulumi-lang-yaml=\"`spacesAccessId`\" pulumi-lang-java=\"`spacesAccessId`\"\u003e`spaces_access_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`spacesSecretKey`\" pulumi-lang-dotnet=\"`SpacesSecretKey`\" pulumi-lang-go=\"`spacesSecretKey`\" pulumi-lang-python=\"`spaces_secret_key`\" pulumi-lang-yaml=\"`spacesSecretKey`\" pulumi-lang-java=\"`spacesSecretKey`\"\u003e`spaces_secret_key`\u003c/span\u003e arguments to the\naccess ID and secret you generate via the DigitalOcean control panel. For\nexample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst static_assets = new digitalocean.SpacesBucket(\"static-assets\", {});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstatic_assets = digitalocean.SpacesBucket(\"static-assets\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var static_assets = new DigitalOcean.SpacesBucket(\"static-assets\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesBucket(ctx, \"static-assets\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var static_assets = new SpacesBucket(\"static-assets\");\n\n    }\n}\n```\n```yaml\nresources:\n  static-assets:\n    type: digitalocean:SpacesBucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces)\n\n## Example Usage\n\n### Create a Key in a Spaces Bucket\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesBucket(\"foobar\", {\n    name: \"foobar\",\n    region: digitalocean.Region.NYC3,\n});\nconst index = new digitalocean.SpacesBucketObject(\"index\", {\n    region: foobar.region,\n    bucket: foobar.name,\n    key: \"index.html\",\n    content: \"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\",\n    contentType: \"text/html\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesBucket(\"foobar\",\n    name=\"foobar\",\n    region=digitalocean.Region.NYC3)\nindex = digitalocean.SpacesBucketObject(\"index\",\n    region=foobar.region,\n    bucket=foobar.name,\n    key=\"index.html\",\n    content=\"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\",\n    content_type=\"text/html\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.SpacesBucket(\"foobar\", new()\n    {\n        Name = \"foobar\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var index = new DigitalOcean.SpacesBucketObject(\"index\", new()\n    {\n        Region = foobar.Region,\n        Bucket = foobar.Name,\n        Key = \"index.html\",\n        Content = \"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\",\n        ContentType = \"text/html\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewSpacesBucket(ctx, \"foobar\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"foobar\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewSpacesBucketObject(ctx, \"index\", \u0026digitalocean.SpacesBucketObjectArgs{\n\t\t\tRegion:      foobar.Region,\n\t\t\tBucket:      foobar.Name,\n\t\t\tKey:         pulumi.String(\"index.html\"),\n\t\t\tContent:     pulumi.String(\"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\"),\n\t\t\tContentType: pulumi.String(\"text/html\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport com.pulumi.digitalocean.SpacesBucketArgs;\nimport com.pulumi.digitalocean.SpacesBucketObject;\nimport com.pulumi.digitalocean.SpacesBucketObjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new SpacesBucket(\"foobar\", SpacesBucketArgs.builder()\n            .name(\"foobar\")\n            .region(\"nyc3\")\n            .build());\n\n        var index = new SpacesBucketObject(\"index\", SpacesBucketObjectArgs.builder()\n            .region(foobar.region())\n            .bucket(foobar.name())\n            .key(\"index.html\")\n            .content(\"\u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\")\n            .contentType(\"text/html\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: foobar\n      region: nyc3\n  index:\n    type: digitalocean:SpacesBucketObject\n    properties:\n      region: ${foobar.region}\n      bucket: ${foobar.name}\n      key: index.html\n      content: \u003chtml\u003e\u003cbody\u003e\u003cp\u003eThis page is empty.\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e\n      contentType: text/html\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nImporting this resource is not supported.\n\n",
            "properties": {
                "acl": {
                    "type": "string",
                    "description": "The canned ACL to apply. DigitalOcean supports \"private\" and \"public-read\". (Defaults to \"private\".)\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket to put the file in.\n"
                },
                "cacheControl": {
                    "type": "string",
                    "description": "Specifies caching behavior along the request/reply chain Read [w3c\u003cspan pulumi-lang-nodejs=\" cacheControl]\" pulumi-lang-dotnet=\" CacheControl]\" pulumi-lang-go=\" cacheControl]\" pulumi-lang-python=\" cache_control]\" pulumi-lang-yaml=\" cacheControl]\" pulumi-lang-java=\" cacheControl]\"\u003e cache_control]\u003c/span\u003e(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.\n"
                },
                "content": {
                    "type": "string",
                    "description": "Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text.\n"
                },
                "contentBase64": {
                    "type": "string",
                    "description": "Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the \u003cspan pulumi-lang-nodejs=\"`gzipbase64`\" pulumi-lang-dotnet=\"`Gzipbase64`\" pulumi-lang-go=\"`gzipbase64`\" pulumi-lang-python=\"`gzipbase64`\" pulumi-lang-yaml=\"`gzipbase64`\" pulumi-lang-java=\"`gzipbase64`\"\u003e`gzipbase64`\u003c/span\u003e function with small text strings. For larger objects, use \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e to stream the content from a disk file.\n"
                },
                "contentDisposition": {
                    "type": "string",
                    "description": "Specifies presentational information for the object. Read [w3c\u003cspan pulumi-lang-nodejs=\" contentDisposition]\" pulumi-lang-dotnet=\" ContentDisposition]\" pulumi-lang-go=\" contentDisposition]\" pulumi-lang-python=\" content_disposition]\" pulumi-lang-yaml=\" contentDisposition]\" pulumi-lang-java=\" contentDisposition]\"\u003e content_disposition]\u003c/span\u003e(http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.\n"
                },
                "contentEncoding": {
                    "type": "string",
                    "description": "Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.\n"
                },
                "contentLanguage": {
                    "type": "string",
                    "description": "The language the content is in e.g. en-US or en-GB.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "Used to trigger updates. The only meaningful value is `${filemd5(\"path/to/file\")}` (Terraform 0.11.12 or later) or `${md5(file(\"path/to/file\"))}` (Terraform 0.11.11 or earlier).\n"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "Allow the object to be deleted by removing any legal hold on any object version.\nDefault is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. This value should be set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e only if the bucket has S3 object lock enabled.\n\nIf no content is provided through \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`content_base64`\u003c/span\u003e, then the object will be empty.\n\n\u003e **Note:** Terraform ignores all leading `/`s in the object's \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and treats multiple `/`s in the rest of the object's \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The name of the object once it is in the bucket.\n"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A mapping of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API).\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides (Defaults to \u003cspan pulumi-lang-nodejs=\"`nyc3`\" pulumi-lang-dotnet=\"`Nyc3`\" pulumi-lang-go=\"`nyc3`\" pulumi-lang-python=\"`nyc3`\" pulumi-lang-yaml=\"`nyc3`\" pulumi-lang-java=\"`nyc3`\"\u003e`nyc3`\u003c/span\u003e)\n"
                },
                "source": {
                    "type": "string",
                    "description": "The path to a file that will be read and uploaded as raw bytes for the object content.\n"
                },
                "versionId": {
                    "type": "string",
                    "description": "A unique version ID value for the object, if bucket versioning is enabled.\n"
                },
                "websiteRedirect": {
                    "type": "string",
                    "description": "Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).\n"
                }
            },
            "required": [
                "bucket",
                "contentType",
                "etag",
                "key",
                "region",
                "versionId"
            ],
            "inputProperties": {
                "acl": {
                    "type": "string",
                    "description": "The canned ACL to apply. DigitalOcean supports \"private\" and \"public-read\". (Defaults to \"private\".)\n"
                },
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket to put the file in.\n",
                    "willReplaceOnChanges": true
                },
                "cacheControl": {
                    "type": "string",
                    "description": "Specifies caching behavior along the request/reply chain Read [w3c\u003cspan pulumi-lang-nodejs=\" cacheControl]\" pulumi-lang-dotnet=\" CacheControl]\" pulumi-lang-go=\" cacheControl]\" pulumi-lang-python=\" cache_control]\" pulumi-lang-yaml=\" cacheControl]\" pulumi-lang-java=\" cacheControl]\"\u003e cache_control]\u003c/span\u003e(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.\n"
                },
                "content": {
                    "type": "string",
                    "description": "Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text.\n"
                },
                "contentBase64": {
                    "type": "string",
                    "description": "Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the \u003cspan pulumi-lang-nodejs=\"`gzipbase64`\" pulumi-lang-dotnet=\"`Gzipbase64`\" pulumi-lang-go=\"`gzipbase64`\" pulumi-lang-python=\"`gzipbase64`\" pulumi-lang-yaml=\"`gzipbase64`\" pulumi-lang-java=\"`gzipbase64`\"\u003e`gzipbase64`\u003c/span\u003e function with small text strings. For larger objects, use \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e to stream the content from a disk file.\n"
                },
                "contentDisposition": {
                    "type": "string",
                    "description": "Specifies presentational information for the object. Read [w3c\u003cspan pulumi-lang-nodejs=\" contentDisposition]\" pulumi-lang-dotnet=\" ContentDisposition]\" pulumi-lang-go=\" contentDisposition]\" pulumi-lang-python=\" content_disposition]\" pulumi-lang-yaml=\" contentDisposition]\" pulumi-lang-java=\" contentDisposition]\"\u003e content_disposition]\u003c/span\u003e(http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.\n"
                },
                "contentEncoding": {
                    "type": "string",
                    "description": "Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.\n"
                },
                "contentLanguage": {
                    "type": "string",
                    "description": "The language the content is in e.g. en-US or en-GB.\n"
                },
                "contentType": {
                    "type": "string",
                    "description": "A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input.\n"
                },
                "etag": {
                    "type": "string",
                    "description": "Used to trigger updates. The only meaningful value is `${filemd5(\"path/to/file\")}` (Terraform 0.11.12 or later) or `${md5(file(\"path/to/file\"))}` (Terraform 0.11.11 or earlier).\n"
                },
                "forceDestroy": {
                    "type": "boolean",
                    "description": "Allow the object to be deleted by removing any legal hold on any object version.\nDefault is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. This value should be set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e only if the bucket has S3 object lock enabled.\n\nIf no content is provided through \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`content_base64`\u003c/span\u003e, then the object will be empty.\n\n\u003e **Note:** Terraform ignores all leading `/`s in the object's \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and treats multiple `/`s in the rest of the object's \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`.\n"
                },
                "key": {
                    "type": "string",
                    "description": "The name of the object once it is in the bucket.\n",
                    "willReplaceOnChanges": true
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "A mapping of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API).\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides (Defaults to \u003cspan pulumi-lang-nodejs=\"`nyc3`\" pulumi-lang-dotnet=\"`Nyc3`\" pulumi-lang-go=\"`nyc3`\" pulumi-lang-python=\"`nyc3`\" pulumi-lang-yaml=\"`nyc3`\" pulumi-lang-java=\"`nyc3`\"\u003e`nyc3`\u003c/span\u003e)\n",
                    "willReplaceOnChanges": true
                },
                "source": {
                    "type": "string",
                    "description": "The path to a file that will be read and uploaded as raw bytes for the object content.\n"
                },
                "websiteRedirect": {
                    "type": "string",
                    "description": "Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).\n"
                }
            },
            "requiredInputs": [
                "bucket",
                "key",
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SpacesBucketObject resources.\n",
                "properties": {
                    "acl": {
                        "type": "string",
                        "description": "The canned ACL to apply. DigitalOcean supports \"private\" and \"public-read\". (Defaults to \"private\".)\n"
                    },
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket to put the file in.\n",
                        "willReplaceOnChanges": true
                    },
                    "cacheControl": {
                        "type": "string",
                        "description": "Specifies caching behavior along the request/reply chain Read [w3c\u003cspan pulumi-lang-nodejs=\" cacheControl]\" pulumi-lang-dotnet=\" CacheControl]\" pulumi-lang-go=\" cacheControl]\" pulumi-lang-python=\" cache_control]\" pulumi-lang-yaml=\" cacheControl]\" pulumi-lang-java=\" cacheControl]\"\u003e cache_control]\u003c/span\u003e(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details.\n"
                    },
                    "content": {
                        "type": "string",
                        "description": "Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text.\n"
                    },
                    "contentBase64": {
                        "type": "string",
                        "description": "Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the \u003cspan pulumi-lang-nodejs=\"`gzipbase64`\" pulumi-lang-dotnet=\"`Gzipbase64`\" pulumi-lang-go=\"`gzipbase64`\" pulumi-lang-python=\"`gzipbase64`\" pulumi-lang-yaml=\"`gzipbase64`\" pulumi-lang-java=\"`gzipbase64`\"\u003e`gzipbase64`\u003c/span\u003e function with small text strings. For larger objects, use \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e to stream the content from a disk file.\n"
                    },
                    "contentDisposition": {
                        "type": "string",
                        "description": "Specifies presentational information for the object. Read [w3c\u003cspan pulumi-lang-nodejs=\" contentDisposition]\" pulumi-lang-dotnet=\" ContentDisposition]\" pulumi-lang-go=\" contentDisposition]\" pulumi-lang-python=\" content_disposition]\" pulumi-lang-yaml=\" contentDisposition]\" pulumi-lang-java=\" contentDisposition]\"\u003e content_disposition]\u003c/span\u003e(http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information.\n"
                    },
                    "contentEncoding": {
                        "type": "string",
                        "description": "Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information.\n"
                    },
                    "contentLanguage": {
                        "type": "string",
                        "description": "The language the content is in e.g. en-US or en-GB.\n"
                    },
                    "contentType": {
                        "type": "string",
                        "description": "A standard MIME type describing the format of the object data, e.g. application/octet-stream. All Valid MIME Types are valid for this input.\n"
                    },
                    "etag": {
                        "type": "string",
                        "description": "Used to trigger updates. The only meaningful value is `${filemd5(\"path/to/file\")}` (Terraform 0.11.12 or later) or `${md5(file(\"path/to/file\"))}` (Terraform 0.11.11 or earlier).\n"
                    },
                    "forceDestroy": {
                        "type": "boolean",
                        "description": "Allow the object to be deleted by removing any legal hold on any object version.\nDefault is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. This value should be set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e only if the bucket has S3 object lock enabled.\n\nIf no content is provided through \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\"\u003e`content`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`contentBase64`\" pulumi-lang-dotnet=\"`ContentBase64`\" pulumi-lang-go=\"`contentBase64`\" pulumi-lang-python=\"`content_base64`\" pulumi-lang-yaml=\"`contentBase64`\" pulumi-lang-java=\"`contentBase64`\"\u003e`content_base64`\u003c/span\u003e, then the object will be empty.\n\n\u003e **Note:** Terraform ignores all leading `/`s in the object's \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e and treats multiple `/`s in the rest of the object's \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "The name of the object once it is in the bucket.\n",
                        "willReplaceOnChanges": true
                    },
                    "metadata": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "A mapping of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API).\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the bucket resides (Defaults to \u003cspan pulumi-lang-nodejs=\"`nyc3`\" pulumi-lang-dotnet=\"`Nyc3`\" pulumi-lang-go=\"`nyc3`\" pulumi-lang-python=\"`nyc3`\" pulumi-lang-yaml=\"`nyc3`\" pulumi-lang-java=\"`nyc3`\"\u003e`nyc3`\u003c/span\u003e)\n",
                        "willReplaceOnChanges": true
                    },
                    "source": {
                        "type": "string",
                        "description": "The path to a file that will be read and uploaded as raw bytes for the object content.\n"
                    },
                    "versionId": {
                        "type": "string",
                        "description": "A unique version ID value for the object, if bucket versioning is enabled.\n"
                    },
                    "websiteRedirect": {
                        "type": "string",
                        "description": "Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/spacesBucketPolicy:SpacesBucketPolicy": {
            "description": "Provides a bucket policy resource for Spaces, DigitalOcean's object storage product.\nThe \u003cspan pulumi-lang-nodejs=\"`digitalocean.SpacesBucketPolicy`\" pulumi-lang-dotnet=\"`digitalocean.SpacesBucketPolicy`\" pulumi-lang-go=\"`SpacesBucketPolicy`\" pulumi-lang-python=\"`SpacesBucketPolicy`\" pulumi-lang-yaml=\"`digitalocean.SpacesBucketPolicy`\" pulumi-lang-java=\"`digitalocean.SpacesBucketPolicy`\"\u003e`digitalocean.SpacesBucketPolicy`\u003c/span\u003e resource allows Terraform to attach bucket\npolicy to Spaces.\n\nThe [Spaces API](https://docs.digitalocean.com/reference/api/spaces-api/) was\ndesigned to be interoperable with Amazon's AWS S3 API. This allows users to\ninteract with the service while using the tools they already know. Spaces\nmirrors S3's authentication framework and requests to Spaces require a key pair\nsimilar to Amazon's Access ID and Secret Key.\n\nThe authentication requirement can be met by either setting the\n`SPACES_ACCESS_KEY_ID` and `SPACES_SECRET_ACCESS_KEY` environment variables or\nthe provider's \u003cspan pulumi-lang-nodejs=\"`spacesAccessId`\" pulumi-lang-dotnet=\"`SpacesAccessId`\" pulumi-lang-go=\"`spacesAccessId`\" pulumi-lang-python=\"`spaces_access_id`\" pulumi-lang-yaml=\"`spacesAccessId`\" pulumi-lang-java=\"`spacesAccessId`\"\u003e`spaces_access_id`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`spacesSecretKey`\" pulumi-lang-dotnet=\"`SpacesSecretKey`\" pulumi-lang-go=\"`spacesSecretKey`\" pulumi-lang-python=\"`spaces_secret_key`\" pulumi-lang-yaml=\"`spacesSecretKey`\" pulumi-lang-java=\"`spacesSecretKey`\"\u003e`spaces_secret_key`\u003c/span\u003e arguments to the\naccess ID and secret you generate via the DigitalOcean control panel. For\nexample:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst static_assets = new digitalocean.SpacesBucket(\"static-assets\", {});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstatic_assets = digitalocean.SpacesBucket(\"static-assets\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var static_assets = new DigitalOcean.SpacesBucket(\"static-assets\");\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesBucket(ctx, \"static-assets\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var static_assets = new SpacesBucket(\"static-assets\");\n\n    }\n}\n```\n```yaml\nresources:\n  static-assets:\n    type: digitalocean:SpacesBucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nFor more information, See [An Introduction to DigitalOcean Spaces](https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-spaces)\n\n## Example Usage\n\n### Limiting access to specific IP addresses\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesBucket(\"foobar\", {\n    name: \"foobar\",\n    region: digitalocean.Region.NYC3,\n});\nconst foobarSpacesBucketPolicy = new digitalocean.SpacesBucketPolicy(\"foobar\", {\n    region: foobar.region,\n    bucket: foobar.name,\n    policy: pulumi.jsonStringify({\n        Version: \"2012-10-17\",\n        Statement: [{\n            Sid: \"IPAllow\",\n            Effect: \"Deny\",\n            Principal: \"*\",\n            Action: \"s3:*\",\n            Resource: [\n                pulumi.interpolate`arn:aws:s3:::${foobar.name}`,\n                pulumi.interpolate`arn:aws:s3:::${foobar.name}/*`,\n            ],\n            Condition: {\n                NotIpAddress: {\n                    \"aws:SourceIp\": \"54.240.143.0/24\",\n                },\n            },\n        }],\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesBucket(\"foobar\",\n    name=\"foobar\",\n    region=digitalocean.Region.NYC3)\nfoobar_spaces_bucket_policy = digitalocean.SpacesBucketPolicy(\"foobar\",\n    region=foobar.region,\n    bucket=foobar.name,\n    policy=pulumi.Output.json_dumps({\n        \"Version\": \"2012-10-17\",\n        \"Statement\": [{\n            \"Sid\": \"IPAllow\",\n            \"Effect\": \"Deny\",\n            \"Principal\": \"*\",\n            \"Action\": \"s3:*\",\n            \"Resource\": [\n                foobar.name.apply(lambda name: f\"arn:aws:s3:::{name}\"),\n                foobar.name.apply(lambda name: f\"arn:aws:s3:::{name}/*\"),\n            ],\n            \"Condition\": {\n                \"NotIpAddress\": {\n                    \"aws:SourceIp\": \"54.240.143.0/24\",\n                },\n            },\n        }],\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.SpacesBucket(\"foobar\", new()\n    {\n        Name = \"foobar\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var foobarSpacesBucketPolicy = new DigitalOcean.SpacesBucketPolicy(\"foobar\", new()\n    {\n        Region = foobar.Region,\n        Bucket = foobar.Name,\n        Policy = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"Version\"] = \"2012-10-17\",\n            [\"Statement\"] = new[]\n            {\n                new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"Sid\"] = \"IPAllow\",\n                    [\"Effect\"] = \"Deny\",\n                    [\"Principal\"] = \"*\",\n                    [\"Action\"] = \"s3:*\",\n                    [\"Resource\"] = new[]\n                    {\n                        foobar.Name.Apply(name =\u003e $\"arn:aws:s3:::{name}\"),\n                        foobar.Name.Apply(name =\u003e $\"arn:aws:s3:::{name}/*\"),\n                    },\n                    [\"Condition\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"NotIpAddress\"] = new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"aws:SourceIp\"] = \"54.240.143.0/24\",\n                        },\n                    },\n                },\n            },\n        })),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewSpacesBucket(ctx, \"foobar\", \u0026digitalocean.SpacesBucketArgs{\n\t\t\tName:   pulumi.String(\"foobar\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewSpacesBucketPolicy(ctx, \"foobar\", \u0026digitalocean.SpacesBucketPolicyArgs{\n\t\t\tRegion: foobar.Region,\n\t\t\tBucket: foobar.Name,\n\t\t\tPolicy: pulumi.All(foobar.Name, foobar.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\tfoobarName := _args[0].(string)\n\t\t\t\tfoobarName1 := _args[1].(string)\n\t\t\t\tvar _zero string\n\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"Version\": \"2012-10-17\",\n\t\t\t\t\t\"Statement\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"Sid\":       \"IPAllow\",\n\t\t\t\t\t\t\t\"Effect\":    \"Deny\",\n\t\t\t\t\t\t\t\"Principal\": \"*\",\n\t\t\t\t\t\t\t\"Action\":    \"s3:*\",\n\t\t\t\t\t\t\t\"Resource\": []string{\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"arn:aws:s3:::%v\", foobarName),\n\t\t\t\t\t\t\t\tfmt.Sprintf(\"arn:aws:s3:::%v/*\", foobarName1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"Condition\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"NotIpAddress\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"aws:SourceIp\": \"54.240.143.0/24\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\treturn json0, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesBucket;\nimport com.pulumi.digitalocean.SpacesBucketArgs;\nimport com.pulumi.digitalocean.SpacesBucketPolicy;\nimport com.pulumi.digitalocean.SpacesBucketPolicyArgs;\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 foobar = new SpacesBucket(\"foobar\", SpacesBucketArgs.builder()\n            .name(\"foobar\")\n            .region(\"nyc3\")\n            .build());\n\n        var foobarSpacesBucketPolicy = new SpacesBucketPolicy(\"foobarSpacesBucketPolicy\", SpacesBucketPolicyArgs.builder()\n            .region(foobar.region())\n            .bucket(foobar.name())\n            .policy(Output.tuple(foobar.name(), foobar.name()).applyValue(values -\u003e {\n                var foobarName = values.t1;\n                var foobarName1 = values.t2;\n                return serializeJson(\n                    jsonObject(\n                        jsonProperty(\"Version\", \"2012-10-17\"),\n                        jsonProperty(\"Statement\", jsonArray(jsonObject(\n                            jsonProperty(\"Sid\", \"IPAllow\"),\n                            jsonProperty(\"Effect\", \"Deny\"),\n                            jsonProperty(\"Principal\", \"*\"),\n                            jsonProperty(\"Action\", \"s3:*\"),\n                            jsonProperty(\"Resource\", jsonArray(\n                                String.format(\"arn:aws:s3:::%s\", foobarName), \n                                String.format(\"arn:aws:s3:::%s/*\", foobarName1)\n                            )),\n                            jsonProperty(\"Condition\", jsonObject(\n                                jsonProperty(\"NotIpAddress\", jsonObject(\n                                    jsonProperty(\"aws:SourceIp\", \"54.240.143.0/24\")\n                                ))\n                            ))\n                        )))\n                    ));\n            }))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:SpacesBucket\n    properties:\n      name: foobar\n      region: nyc3\n  foobarSpacesBucketPolicy:\n    type: digitalocean:SpacesBucketPolicy\n    name: foobar\n    properties:\n      region: ${foobar.region}\n      bucket: ${foobar.name}\n      policy:\n        fn::toJSON:\n          Version: 2012-10-17\n          Statement:\n            - Sid: IPAllow\n              Effect: Deny\n              Principal: '*'\n              Action: s3:*\n              Resource:\n                - arn:aws:s3:::${foobar.name}\n                - arn:aws:s3:::${foobar.name}/*\n              Condition:\n                NotIpAddress:\n                  aws:SourceIp: 54.240.143.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n!\u003e **Warning:** Before using this policy, replace the 54.240.143.0/24 IP address range in this example with an appropriate value for your use case. Otherwise, you will lose the ability to access your bucket.\n\n## Import\n\nBucket policies can be imported using the \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`bucket`\" pulumi-lang-dotnet=\"`Bucket`\" pulumi-lang-go=\"`bucket`\" pulumi-lang-python=\"`bucket`\" pulumi-lang-yaml=\"`bucket`\" pulumi-lang-java=\"`bucket`\"\u003e`bucket`\u003c/span\u003e attributes (delimited by a comma):\n\n```sh\n$ pulumi import digitalocean:index/spacesBucketPolicy:SpacesBucketPolicy foobar `region`,`bucket`\n```\n\n",
            "properties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket to which to apply the policy.\n"
                },
                "policy": {
                    "type": "string",
                    "description": "The text of the policy.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides.\n"
                }
            },
            "required": [
                "bucket",
                "policy",
                "region"
            ],
            "inputProperties": {
                "bucket": {
                    "type": "string",
                    "description": "The name of the bucket to which to apply the policy.\n",
                    "willReplaceOnChanges": true
                },
                "policy": {
                    "type": "string",
                    "description": "The text of the policy.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region where the bucket resides.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "bucket",
                "policy",
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SpacesBucketPolicy resources.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket to which to apply the policy.\n",
                        "willReplaceOnChanges": true
                    },
                    "policy": {
                        "type": "string",
                        "description": "The text of the policy.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the bucket resides.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/spacesKey:SpacesKey": {
            "description": "Provides a key resource for Spaces, DigitalOcean's object storage product.\n\nThe [Spaces API](https://docs.digitalocean.com/reference/api/spaces-api/) was\ndesigned to be interoperable with Amazon's AWS S3 API. This allows users to\ninteract with the service while using the tools they already know. Spaces\nmirrors S3's authentication framework and requests to Spaces require a key pair\nsimilar to Amazon's Access ID and Secret Key.\n\nAs a Spaces owner, you limit others’ access to your buckets using Spaces access \nkeys. Access keys can provide several levels of permissions to create, destroy,\nread, and write to specific associated buckets. However, access keys only limit \naccess to certain commands using the S3 API or CLI, not the control panel or \nother DigitalOcean resources.\n\n## Example Usage\n\n### Create a New Key\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesKey(\"foobar\", {name: \"foobar\"});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesKey(\"foobar\", name=\"foobar\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.SpacesKey(\"foobar\", new()\n    {\n        Name = \"foobar\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesKey(ctx, \"foobar\", \u0026digitalocean.SpacesKeyArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesKey;\nimport com.pulumi.digitalocean.SpacesKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new SpacesKey(\"foobar\", SpacesKeyArgs.builder()\n            .name(\"foobar\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:SpacesKey\n    properties:\n      name: foobar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a New Key with Grants\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesKey(\"foobar\", {\n    name: \"foobar\",\n    grants: [{\n        bucket: \"my-bucket\",\n        permission: \"read\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesKey(\"foobar\",\n    name=\"foobar\",\n    grants=[{\n        \"bucket\": \"my-bucket\",\n        \"permission\": \"read\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.SpacesKey(\"foobar\", new()\n    {\n        Name = \"foobar\",\n        Grants = new[]\n        {\n            new DigitalOcean.Inputs.SpacesKeyGrantArgs\n            {\n                Bucket = \"my-bucket\",\n                Permission = \"read\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesKey(ctx, \"foobar\", \u0026digitalocean.SpacesKeyArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tGrants: digitalocean.SpacesKeyGrantArray{\n\t\t\t\t\u0026digitalocean.SpacesKeyGrantArgs{\n\t\t\t\t\tBucket:     pulumi.String(\"my-bucket\"),\n\t\t\t\t\tPermission: pulumi.String(\"read\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesKey;\nimport com.pulumi.digitalocean.SpacesKeyArgs;\nimport com.pulumi.digitalocean.inputs.SpacesKeyGrantArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new SpacesKey(\"foobar\", SpacesKeyArgs.builder()\n            .name(\"foobar\")\n            .grants(SpacesKeyGrantArgs.builder()\n                .bucket(\"my-bucket\")\n                .permission(\"read\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:SpacesKey\n    properties:\n      name: foobar\n      grants:\n        - bucket: my-bucket\n          permission: read\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a New Key with full access\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.SpacesKey(\"foobar\", {\n    name: \"foobar\",\n    grants: [{\n        bucket: \"\",\n        permission: \"fullaccess\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.SpacesKey(\"foobar\",\n    name=\"foobar\",\n    grants=[{\n        \"bucket\": \"\",\n        \"permission\": \"fullaccess\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.SpacesKey(\"foobar\", new()\n    {\n        Name = \"foobar\",\n        Grants = new[]\n        {\n            new DigitalOcean.Inputs.SpacesKeyGrantArgs\n            {\n                Bucket = \"\",\n                Permission = \"fullaccess\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewSpacesKey(ctx, \"foobar\", \u0026digitalocean.SpacesKeyArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tGrants: digitalocean.SpacesKeyGrantArray{\n\t\t\t\t\u0026digitalocean.SpacesKeyGrantArgs{\n\t\t\t\t\tBucket:     pulumi.String(\"\"),\n\t\t\t\t\tPermission: pulumi.String(\"fullaccess\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SpacesKey;\nimport com.pulumi.digitalocean.SpacesKeyArgs;\nimport com.pulumi.digitalocean.inputs.SpacesKeyGrantArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new SpacesKey(\"foobar\", SpacesKeyArgs.builder()\n            .name(\"foobar\")\n            .grants(SpacesKeyGrantArgs.builder()\n                .bucket(\"\")\n                .permission(\"fullaccess\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:SpacesKey\n    properties:\n      name: foobar\n      grants:\n        - bucket: \"\"\n          permission: fullaccess\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "accessKey": {
                    "type": "string",
                    "description": "The access key ID of the key\n"
                },
                "createdAt": {
                    "type": "string",
                    "description": "The creation time of the key\n"
                },
                "grants": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/SpacesKeyGrant:SpacesKeyGrant"
                    },
                    "description": "A grant for the key (documented below).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the key\n"
                },
                "secretKey": {
                    "type": "string",
                    "description": "The access key secret of the key\n",
                    "secret": true
                }
            },
            "required": [
                "accessKey",
                "createdAt",
                "name",
                "secretKey"
            ],
            "inputProperties": {
                "grants": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/SpacesKeyGrant:SpacesKeyGrant"
                    },
                    "description": "A grant for the key (documented below).\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the key\n"
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SpacesKey resources.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The access key ID of the key\n"
                    },
                    "createdAt": {
                        "type": "string",
                        "description": "The creation time of the key\n"
                    },
                    "grants": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/SpacesKeyGrant:SpacesKeyGrant"
                        },
                        "description": "A grant for the key (documented below).\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the key\n"
                    },
                    "secretKey": {
                        "type": "string",
                        "description": "The access key secret of the key\n",
                        "secret": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/sshKey:SshKey": {
            "description": "Provides a DigitalOcean SSH key resource to allow you to manage SSH\nkeys for Droplet access. Keys created with this resource\ncan be referenced in your Droplet configuration via their ID or\nfingerprint.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\n// Create a new SSH key\nconst _default = new digitalocean.SshKey(\"default\", {\n    name: \"Terraform Example\",\n    publicKey: std.file({\n        input: \"/Users/terraform/.ssh/id_rsa.pub\",\n    }).then(invoke =\u003e invoke.result),\n});\n// Create a new Droplet using the SSH key\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    sshKeys: [_default.fingerprint],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\n# Create a new SSH key\ndefault = digitalocean.SshKey(\"default\",\n    name=\"Terraform Example\",\n    public_key=std.file(input=\"/Users/terraform/.ssh/id_rsa.pub\").result)\n# Create a new Droplet using the SSH key\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    ssh_keys=[default.fingerprint])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new SSH key\n    var @default = new DigitalOcean.SshKey(\"default\", new()\n    {\n        Name = \"Terraform Example\",\n        PublicKey = Std.File.Invoke(new()\n        {\n            Input = \"/Users/terraform/.ssh/id_rsa.pub\",\n        }).Apply(invoke =\u003e invoke.Result),\n    });\n\n    // Create a new Droplet using the SSH key\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        SshKeys = new[]\n        {\n            @default.Fingerprint,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"/Users/terraform/.ssh/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new SSH key\n\t\t_default, err := digitalocean.NewSshKey(ctx, \"default\", \u0026digitalocean.SshKeyArgs{\n\t\t\tName:      pulumi.String(\"Terraform Example\"),\n\t\t\tPublicKey: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new Droplet using the SSH key\n\t\t_, err = digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"web-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\t_default.Fingerprint,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.SshKey;\nimport com.pulumi.digitalocean.SshKeyArgs;\nimport com.pulumi.std.StdFunctions;\nimport com.pulumi.std.inputs.FileArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new SSH key\n        var default_ = new SshKey(\"default\", SshKeyArgs.builder()\n            .name(\"Terraform Example\")\n            .publicKey(StdFunctions.file(FileArgs.builder()\n                .input(\"/Users/terraform/.ssh/id_rsa.pub\")\n                .build()).result())\n            .build());\n\n        // Create a new Droplet using the SSH key\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"nyc3\")\n            .size(\"s-1vcpu-1gb\")\n            .sshKeys(default_.fingerprint())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new SSH key\n  default:\n    type: digitalocean:SshKey\n    properties:\n      name: Terraform Example\n      publicKey:\n        fn::invoke:\n          function: std:file\n          arguments:\n            input: /Users/terraform/.ssh/id_rsa.pub\n          return: result\n  # Create a new Droplet using the SSH key\n  web:\n    type: digitalocean:Droplet\n    properties:\n      image: ubuntu-18-04-x64\n      name: web-1\n      region: nyc3\n      size: s-1vcpu-1gb\n      sshKeys:\n        - ${default.fingerprint}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSH Keys can be imported using the `ssh key id`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/sshKey:SshKey mykey 263654\n```\n\n",
            "properties": {
                "fingerprint": {
                    "type": "string",
                    "description": "The fingerprint of the SSH key\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key for identification\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n"
                }
            },
            "required": [
                "fingerprint",
                "name",
                "publicKey"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the SSH key for identification\n"
                },
                "publicKey": {
                    "type": "string",
                    "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "publicKey"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering SshKey resources.\n",
                "properties": {
                    "fingerprint": {
                        "type": "string",
                        "description": "The fingerprint of the SSH key\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the SSH key for identification\n"
                    },
                    "publicKey": {
                        "type": "string",
                        "description": "The public key. If this is a file, it\ncan be read using the file interpolation function\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/tag:Tag": {
            "description": "Provides a DigitalOcean Tag resource. A Tag is a label that can be applied to a\nDroplet resource in order to better organize or facilitate the lookups and\nactions on it. Tags created with this resource can be referenced in your Droplet\nconfiguration via their ID or name.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\n// Create a new tag\nconst foobar = new digitalocean.Tag(\"foobar\", {name: \"foobar\"});\n// Create a new Droplet in nyc3 with the foobar tag\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    tags: [foobar.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\n# Create a new tag\nfoobar = digitalocean.Tag(\"foobar\", name=\"foobar\")\n# Create a new Droplet in nyc3 with the foobar tag\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    tags=[foobar.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create a new tag\n    var foobar = new DigitalOcean.Tag(\"foobar\", new()\n    {\n        Name = \"foobar\",\n    });\n\n    // Create a new Droplet in nyc3 with the foobar tag\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Tags = new[]\n        {\n            foobar.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create a new tag\n\t\tfoobar, err := digitalocean.NewTag(ctx, \"foobar\", \u0026digitalocean.TagArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a new Droplet in nyc3 with the foobar tag\n\t\t_, err = digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"web-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tfoobar.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Tag;\nimport com.pulumi.digitalocean.TagArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create a new tag\n        var foobar = new Tag(\"foobar\", TagArgs.builder()\n            .name(\"foobar\")\n            .build());\n\n        // Create a new Droplet in nyc3 with the foobar tag\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"nyc3\")\n            .size(\"s-1vcpu-1gb\")\n            .tags(foobar.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create a new tag\n  foobar:\n    type: digitalocean:Tag\n    properties:\n      name: foobar\n  # Create a new Droplet in nyc3 with the foobar tag\n  web:\n    type: digitalocean:Droplet\n    properties:\n      image: ubuntu-18-04-x64\n      name: web-1\n      region: nyc3\n      size: s-1vcpu-1gb\n      tags:\n        - ${foobar.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTags can be imported using the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/tag:Tag mytag tagname\n```\n\n",
            "properties": {
                "databasesCount": {
                    "type": "integer",
                    "description": "A count of the database clusters that the tag is applied to.\n"
                },
                "dropletsCount": {
                    "type": "integer",
                    "description": "A count of the Droplets the tag is applied to.\n"
                },
                "imagesCount": {
                    "type": "integer",
                    "description": "A count of the images that the tag is applied to.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the tag\n"
                },
                "totalResourceCount": {
                    "type": "integer",
                    "description": "A count of the total number of resources that the tag is applied to.\n"
                },
                "volumeSnapshotsCount": {
                    "type": "integer",
                    "description": "A count of the volume snapshots that the tag is applied to.\n"
                },
                "volumesCount": {
                    "type": "integer",
                    "description": "A count of the volumes that the tag is applied to.\n"
                }
            },
            "required": [
                "databasesCount",
                "dropletsCount",
                "imagesCount",
                "name",
                "totalResourceCount",
                "volumeSnapshotsCount",
                "volumesCount"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "The name of the tag\n",
                    "willReplaceOnChanges": true
                }
            },
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Tag resources.\n",
                "properties": {
                    "databasesCount": {
                        "type": "integer",
                        "description": "A count of the database clusters that the tag is applied to.\n"
                    },
                    "dropletsCount": {
                        "type": "integer",
                        "description": "A count of the Droplets the tag is applied to.\n"
                    },
                    "imagesCount": {
                        "type": "integer",
                        "description": "A count of the images that the tag is applied to.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the tag\n",
                        "willReplaceOnChanges": true
                    },
                    "totalResourceCount": {
                        "type": "integer",
                        "description": "A count of the total number of resources that the tag is applied to.\n"
                    },
                    "volumeSnapshotsCount": {
                        "type": "integer",
                        "description": "A count of the volume snapshots that the tag is applied to.\n"
                    },
                    "volumesCount": {
                        "type": "integer",
                        "description": "A count of the volumes that the tag is applied to.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/uptimeAlert:UptimeAlert": {
            "description": "Provides a [DigitalOcean Uptime Alerts](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Uptime/operation/uptime_create_alert)\nresource. Uptime Alerts provide the ability to add alerts to your [DigitalOcean Uptime Checks](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Uptime) when your endpoints are slow, unavailable, or SSL certificates are expiring.\n\n## Import\n\nUptime alerts can be imported using both the ID of the alert's parent check and\nits own separated by a comma in the format: `check_id,alert_id`. For example:\n\n```sh\n$ pulumi import digitalocean:index/uptimeAlert:UptimeAlert target 94a7d216-d821-11ee-a327-33d3239ffc4b,5a4981aa-9653-4bd1-bef5-d6bff52042e4\n```\n\n",
            "properties": {
                "checkId": {
                    "type": "string",
                    "description": "A unique identifier for a check\n"
                },
                "comparison": {
                    "type": "string",
                    "description": "The comparison operator used against the alert's threshold. Must be one of \u003cspan pulumi-lang-nodejs=\"`greaterThan`\" pulumi-lang-dotnet=\"`GreaterThan`\" pulumi-lang-go=\"`greaterThan`\" pulumi-lang-python=\"`greater_than`\" pulumi-lang-yaml=\"`greaterThan`\" pulumi-lang-java=\"`greaterThan`\"\u003e`greater_than`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`lessThan`\" pulumi-lang-dotnet=\"`LessThan`\" pulumi-lang-go=\"`lessThan`\" pulumi-lang-python=\"`less_than`\" pulumi-lang-yaml=\"`lessThan`\" pulumi-lang-java=\"`lessThan`\"\u003e`less_than`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-friendly display name.\n"
                },
                "notifications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/UptimeAlertNotification:UptimeAlertNotification"
                    },
                    "description": "The notification settings for a trigger alert.\n"
                },
                "period": {
                    "type": "string",
                    "description": "Period of time the threshold must be exceeded to trigger the alert. Must be one of \u003cspan pulumi-lang-nodejs=\"`2m`\" pulumi-lang-dotnet=\"`2m`\" pulumi-lang-go=\"`2m`\" pulumi-lang-python=\"`2m`\" pulumi-lang-yaml=\"`2m`\" pulumi-lang-java=\"`2m`\"\u003e`2m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3m`\" pulumi-lang-dotnet=\"`3m`\" pulumi-lang-go=\"`3m`\" pulumi-lang-python=\"`3m`\" pulumi-lang-yaml=\"`3m`\" pulumi-lang-java=\"`3m`\"\u003e`3m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`15m`\" pulumi-lang-dotnet=\"`15m`\" pulumi-lang-go=\"`15m`\" pulumi-lang-python=\"`15m`\" pulumi-lang-yaml=\"`15m`\" pulumi-lang-java=\"`15m`\"\u003e`15m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\"\u003e`30m`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e.\n"
                },
                "threshold": {
                    "type": "integer",
                    "description": "The threshold at which the alert will enter a trigger state. The specific threshold is dependent on the alert type.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of health check to perform. Must be one of \u003cspan pulumi-lang-nodejs=\"`latency`\" pulumi-lang-dotnet=\"`Latency`\" pulumi-lang-go=\"`latency`\" pulumi-lang-python=\"`latency`\" pulumi-lang-yaml=\"`latency`\" pulumi-lang-java=\"`latency`\"\u003e`latency`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`down`\" pulumi-lang-dotnet=\"`Down`\" pulumi-lang-go=\"`down`\" pulumi-lang-python=\"`down`\" pulumi-lang-yaml=\"`down`\" pulumi-lang-java=\"`down`\"\u003e`down`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`downGlobal`\" pulumi-lang-dotnet=\"`DownGlobal`\" pulumi-lang-go=\"`downGlobal`\" pulumi-lang-python=\"`down_global`\" pulumi-lang-yaml=\"`downGlobal`\" pulumi-lang-java=\"`downGlobal`\"\u003e`down_global`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sslExpiry`\" pulumi-lang-dotnet=\"`SslExpiry`\" pulumi-lang-go=\"`sslExpiry`\" pulumi-lang-python=\"`ssl_expiry`\" pulumi-lang-yaml=\"`sslExpiry`\" pulumi-lang-java=\"`sslExpiry`\"\u003e`ssl_expiry`\u003c/span\u003e.\n"
                }
            },
            "required": [
                "checkId",
                "name",
                "notifications",
                "type"
            ],
            "inputProperties": {
                "checkId": {
                    "type": "string",
                    "description": "A unique identifier for a check\n"
                },
                "comparison": {
                    "type": "string",
                    "description": "The comparison operator used against the alert's threshold. Must be one of \u003cspan pulumi-lang-nodejs=\"`greaterThan`\" pulumi-lang-dotnet=\"`GreaterThan`\" pulumi-lang-go=\"`greaterThan`\" pulumi-lang-python=\"`greater_than`\" pulumi-lang-yaml=\"`greaterThan`\" pulumi-lang-java=\"`greaterThan`\"\u003e`greater_than`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`lessThan`\" pulumi-lang-dotnet=\"`LessThan`\" pulumi-lang-go=\"`lessThan`\" pulumi-lang-python=\"`less_than`\" pulumi-lang-yaml=\"`lessThan`\" pulumi-lang-java=\"`lessThan`\"\u003e`less_than`\u003c/span\u003e.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-friendly display name.\n"
                },
                "notifications": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/UptimeAlertNotification:UptimeAlertNotification"
                    },
                    "description": "The notification settings for a trigger alert.\n"
                },
                "period": {
                    "type": "string",
                    "description": "Period of time the threshold must be exceeded to trigger the alert. Must be one of \u003cspan pulumi-lang-nodejs=\"`2m`\" pulumi-lang-dotnet=\"`2m`\" pulumi-lang-go=\"`2m`\" pulumi-lang-python=\"`2m`\" pulumi-lang-yaml=\"`2m`\" pulumi-lang-java=\"`2m`\"\u003e`2m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3m`\" pulumi-lang-dotnet=\"`3m`\" pulumi-lang-go=\"`3m`\" pulumi-lang-python=\"`3m`\" pulumi-lang-yaml=\"`3m`\" pulumi-lang-java=\"`3m`\"\u003e`3m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`15m`\" pulumi-lang-dotnet=\"`15m`\" pulumi-lang-go=\"`15m`\" pulumi-lang-python=\"`15m`\" pulumi-lang-yaml=\"`15m`\" pulumi-lang-java=\"`15m`\"\u003e`15m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\"\u003e`30m`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e.\n"
                },
                "threshold": {
                    "type": "integer",
                    "description": "The threshold at which the alert will enter a trigger state. The specific threshold is dependent on the alert type.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of health check to perform. Must be one of \u003cspan pulumi-lang-nodejs=\"`latency`\" pulumi-lang-dotnet=\"`Latency`\" pulumi-lang-go=\"`latency`\" pulumi-lang-python=\"`latency`\" pulumi-lang-yaml=\"`latency`\" pulumi-lang-java=\"`latency`\"\u003e`latency`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`down`\" pulumi-lang-dotnet=\"`Down`\" pulumi-lang-go=\"`down`\" pulumi-lang-python=\"`down`\" pulumi-lang-yaml=\"`down`\" pulumi-lang-java=\"`down`\"\u003e`down`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`downGlobal`\" pulumi-lang-dotnet=\"`DownGlobal`\" pulumi-lang-go=\"`downGlobal`\" pulumi-lang-python=\"`down_global`\" pulumi-lang-yaml=\"`downGlobal`\" pulumi-lang-java=\"`downGlobal`\"\u003e`down_global`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sslExpiry`\" pulumi-lang-dotnet=\"`SslExpiry`\" pulumi-lang-go=\"`sslExpiry`\" pulumi-lang-python=\"`ssl_expiry`\" pulumi-lang-yaml=\"`sslExpiry`\" pulumi-lang-java=\"`sslExpiry`\"\u003e`ssl_expiry`\u003c/span\u003e.\n"
                }
            },
            "requiredInputs": [
                "checkId",
                "notifications",
                "type"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering UptimeAlert resources.\n",
                "properties": {
                    "checkId": {
                        "type": "string",
                        "description": "A unique identifier for a check\n"
                    },
                    "comparison": {
                        "type": "string",
                        "description": "The comparison operator used against the alert's threshold. Must be one of \u003cspan pulumi-lang-nodejs=\"`greaterThan`\" pulumi-lang-dotnet=\"`GreaterThan`\" pulumi-lang-go=\"`greaterThan`\" pulumi-lang-python=\"`greater_than`\" pulumi-lang-yaml=\"`greaterThan`\" pulumi-lang-java=\"`greaterThan`\"\u003e`greater_than`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`lessThan`\" pulumi-lang-dotnet=\"`LessThan`\" pulumi-lang-go=\"`lessThan`\" pulumi-lang-python=\"`less_than`\" pulumi-lang-yaml=\"`lessThan`\" pulumi-lang-java=\"`lessThan`\"\u003e`less_than`\u003c/span\u003e.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-friendly display name.\n"
                    },
                    "notifications": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/UptimeAlertNotification:UptimeAlertNotification"
                        },
                        "description": "The notification settings for a trigger alert.\n"
                    },
                    "period": {
                        "type": "string",
                        "description": "Period of time the threshold must be exceeded to trigger the alert. Must be one of \u003cspan pulumi-lang-nodejs=\"`2m`\" pulumi-lang-dotnet=\"`2m`\" pulumi-lang-go=\"`2m`\" pulumi-lang-python=\"`2m`\" pulumi-lang-yaml=\"`2m`\" pulumi-lang-java=\"`2m`\"\u003e`2m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`3m`\" pulumi-lang-dotnet=\"`3m`\" pulumi-lang-go=\"`3m`\" pulumi-lang-python=\"`3m`\" pulumi-lang-yaml=\"`3m`\" pulumi-lang-java=\"`3m`\"\u003e`3m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`10m`\" pulumi-lang-dotnet=\"`10m`\" pulumi-lang-go=\"`10m`\" pulumi-lang-python=\"`10m`\" pulumi-lang-yaml=\"`10m`\" pulumi-lang-java=\"`10m`\"\u003e`10m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`15m`\" pulumi-lang-dotnet=\"`15m`\" pulumi-lang-go=\"`15m`\" pulumi-lang-python=\"`15m`\" pulumi-lang-yaml=\"`15m`\" pulumi-lang-java=\"`15m`\"\u003e`15m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\"\u003e`30m`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e.\n"
                    },
                    "threshold": {
                        "type": "integer",
                        "description": "The threshold at which the alert will enter a trigger state. The specific threshold is dependent on the alert type.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of health check to perform. Must be one of \u003cspan pulumi-lang-nodejs=\"`latency`\" pulumi-lang-dotnet=\"`Latency`\" pulumi-lang-go=\"`latency`\" pulumi-lang-python=\"`latency`\" pulumi-lang-yaml=\"`latency`\" pulumi-lang-java=\"`latency`\"\u003e`latency`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`down`\" pulumi-lang-dotnet=\"`Down`\" pulumi-lang-go=\"`down`\" pulumi-lang-python=\"`down`\" pulumi-lang-yaml=\"`down`\" pulumi-lang-java=\"`down`\"\u003e`down`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`downGlobal`\" pulumi-lang-dotnet=\"`DownGlobal`\" pulumi-lang-go=\"`downGlobal`\" pulumi-lang-python=\"`down_global`\" pulumi-lang-yaml=\"`downGlobal`\" pulumi-lang-java=\"`downGlobal`\"\u003e`down_global`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`sslExpiry`\" pulumi-lang-dotnet=\"`SslExpiry`\" pulumi-lang-go=\"`sslExpiry`\" pulumi-lang-python=\"`ssl_expiry`\" pulumi-lang-yaml=\"`sslExpiry`\" pulumi-lang-java=\"`sslExpiry`\"\u003e`ssl_expiry`\u003c/span\u003e.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/uptimeCheck:UptimeCheck": {
            "description": "Provides a [DigitalOcean Uptime Checks](https://docs.digitalocean.com/reference/api/digitalocean/#tag/Uptime)\nresource. Uptime Checks provide the ability to monitor your endpoints from around the world, and alert you when they're slow, unavailable, or SSL certificates are expiring.\n\n## Import\n\nUptime checks can be imported using the uptime check's \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/uptimeCheck:UptimeCheck target 5a4981aa-9653-4bd1-bef5-d6bff52042e4\n```\n\n",
            "properties": {
                "enabled": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether the check is enabled/disabled.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-friendly display name for the check.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the selected regions to perform healthchecks from: \u003cspan pulumi-lang-nodejs=\"\"usEast\"\" pulumi-lang-dotnet=\"\"UsEast\"\" pulumi-lang-go=\"\"usEast\"\" pulumi-lang-python=\"\"us_east\"\" pulumi-lang-yaml=\"\"usEast\"\" pulumi-lang-java=\"\"usEast\"\"\u003e\"us_east\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"usWest\"\" pulumi-lang-dotnet=\"\"UsWest\"\" pulumi-lang-go=\"\"usWest\"\" pulumi-lang-python=\"\"us_west\"\" pulumi-lang-yaml=\"\"usWest\"\" pulumi-lang-java=\"\"usWest\"\"\u003e\"us_west\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"euWest\"\" pulumi-lang-dotnet=\"\"EuWest\"\" pulumi-lang-go=\"\"euWest\"\" pulumi-lang-python=\"\"eu_west\"\" pulumi-lang-yaml=\"\"euWest\"\" pulumi-lang-java=\"\"euWest\"\"\u003e\"eu_west\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"seAsia\"\" pulumi-lang-dotnet=\"\"SeAsia\"\" pulumi-lang-go=\"\"seAsia\"\" pulumi-lang-python=\"\"se_asia\"\" pulumi-lang-yaml=\"\"seAsia\"\" pulumi-lang-java=\"\"seAsia\"\"\u003e\"se_asia\"\u003c/span\u003e\n"
                },
                "target": {
                    "type": "string",
                    "description": "The endpoint to perform healthchecks on.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of health check to perform: 'ping' 'http' 'https'.\n"
                }
            },
            "required": [
                "name",
                "target"
            ],
            "inputProperties": {
                "enabled": {
                    "type": "boolean",
                    "description": "A boolean value indicating whether the check is enabled/disabled.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A human-friendly display name for the check.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "An array containing the selected regions to perform healthchecks from: \u003cspan pulumi-lang-nodejs=\"\"usEast\"\" pulumi-lang-dotnet=\"\"UsEast\"\" pulumi-lang-go=\"\"usEast\"\" pulumi-lang-python=\"\"us_east\"\" pulumi-lang-yaml=\"\"usEast\"\" pulumi-lang-java=\"\"usEast\"\"\u003e\"us_east\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"usWest\"\" pulumi-lang-dotnet=\"\"UsWest\"\" pulumi-lang-go=\"\"usWest\"\" pulumi-lang-python=\"\"us_west\"\" pulumi-lang-yaml=\"\"usWest\"\" pulumi-lang-java=\"\"usWest\"\"\u003e\"us_west\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"euWest\"\" pulumi-lang-dotnet=\"\"EuWest\"\" pulumi-lang-go=\"\"euWest\"\" pulumi-lang-python=\"\"eu_west\"\" pulumi-lang-yaml=\"\"euWest\"\" pulumi-lang-java=\"\"euWest\"\"\u003e\"eu_west\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"seAsia\"\" pulumi-lang-dotnet=\"\"SeAsia\"\" pulumi-lang-go=\"\"seAsia\"\" pulumi-lang-python=\"\"se_asia\"\" pulumi-lang-yaml=\"\"seAsia\"\" pulumi-lang-java=\"\"seAsia\"\"\u003e\"se_asia\"\u003c/span\u003e\n"
                },
                "target": {
                    "type": "string",
                    "description": "The endpoint to perform healthchecks on.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of health check to perform: 'ping' 'http' 'https'.\n"
                }
            },
            "requiredInputs": [
                "target"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering UptimeCheck resources.\n",
                "properties": {
                    "enabled": {
                        "type": "boolean",
                        "description": "A boolean value indicating whether the check is enabled/disabled.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A human-friendly display name for the check.\n"
                    },
                    "regions": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "An array containing the selected regions to perform healthchecks from: \u003cspan pulumi-lang-nodejs=\"\"usEast\"\" pulumi-lang-dotnet=\"\"UsEast\"\" pulumi-lang-go=\"\"usEast\"\" pulumi-lang-python=\"\"us_east\"\" pulumi-lang-yaml=\"\"usEast\"\" pulumi-lang-java=\"\"usEast\"\"\u003e\"us_east\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"usWest\"\" pulumi-lang-dotnet=\"\"UsWest\"\" pulumi-lang-go=\"\"usWest\"\" pulumi-lang-python=\"\"us_west\"\" pulumi-lang-yaml=\"\"usWest\"\" pulumi-lang-java=\"\"usWest\"\"\u003e\"us_west\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"euWest\"\" pulumi-lang-dotnet=\"\"EuWest\"\" pulumi-lang-go=\"\"euWest\"\" pulumi-lang-python=\"\"eu_west\"\" pulumi-lang-yaml=\"\"euWest\"\" pulumi-lang-java=\"\"euWest\"\"\u003e\"eu_west\"\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"\"seAsia\"\" pulumi-lang-dotnet=\"\"SeAsia\"\" pulumi-lang-go=\"\"seAsia\"\" pulumi-lang-python=\"\"se_asia\"\" pulumi-lang-yaml=\"\"seAsia\"\" pulumi-lang-java=\"\"seAsia\"\"\u003e\"se_asia\"\u003c/span\u003e\n"
                    },
                    "target": {
                        "type": "string",
                        "description": "The endpoint to perform healthchecks on.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of health check to perform: 'ping' 'http' 'https'.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/volume:Volume": {
            "description": "Provides a DigitalOcean Block Storage volume which can be attached to a Droplet in order to provide expanded storage.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.NYC1,\n    name: \"baz\",\n    size: 100,\n    initialFilesystemType: digitalocean.FileSystemType.EXT4,\n    description: \"an example volume\",\n});\nconst foobarDroplet = new digitalocean.Droplet(\"foobar\", {\n    name: \"baz\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC1,\n});\nconst foobarVolumeAttachment = new digitalocean.VolumeAttachment(\"foobar\", {\n    dropletId: foobarDroplet.id,\n    volumeId: foobar.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.NYC1,\n    name=\"baz\",\n    size=100,\n    initial_filesystem_type=digitalocean.FileSystemType.EXT4,\n    description=\"an example volume\")\nfoobar_droplet = digitalocean.Droplet(\"foobar\",\n    name=\"baz\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC1)\nfoobar_volume_attachment = digitalocean.VolumeAttachment(\"foobar\",\n    droplet_id=foobar_droplet.id,\n    volume_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.NYC1,\n        Name = \"baz\",\n        Size = 100,\n        InitialFilesystemType = DigitalOcean.FileSystemType.EXT4,\n        Description = \"an example volume\",\n    });\n\n    var foobarDroplet = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"baz\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC1,\n    });\n\n    var foobarVolumeAttachment = new DigitalOcean.VolumeAttachment(\"foobar\", new()\n    {\n        DropletId = foobarDroplet.Id,\n        VolumeId = foobar.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:                pulumi.String(digitalocean.RegionNYC1),\n\t\t\tName:                  pulumi.String(\"baz\"),\n\t\t\tSize:                  pulumi.Int(100),\n\t\t\tInitialFilesystemType: pulumi.String(digitalocean.FileSystemTypeEXT4),\n\t\t\tDescription:           pulumi.String(\"an example volume\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarDroplet, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"baz\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolumeAttachment(ctx, \"foobar\", \u0026digitalocean.VolumeAttachmentArgs{\n\t\t\tDropletId: foobarDroplet.ID(),\n\t\t\tVolumeId:  foobar.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.VolumeAttachment;\nimport com.pulumi.digitalocean.VolumeAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Volume(\"foobar\", VolumeArgs.builder()\n            .region(\"nyc1\")\n            .name(\"baz\")\n            .size(100)\n            .initialFilesystemType(\"ext4\")\n            .description(\"an example volume\")\n            .build());\n\n        var foobarDroplet = new Droplet(\"foobarDroplet\", DropletArgs.builder()\n            .name(\"baz\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc1\")\n            .build());\n\n        var foobarVolumeAttachment = new VolumeAttachment(\"foobarVolumeAttachment\", VolumeAttachmentArgs.builder()\n            .dropletId(foobarDroplet.id())\n            .volumeId(foobar.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Volume\n    properties:\n      region: nyc1\n      name: baz\n      size: 100\n      initialFilesystemType: ext4\n      description: an example volume\n  foobarDroplet:\n    type: digitalocean:Droplet\n    name: foobar\n    properties:\n      name: baz\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc1\n  foobarVolumeAttachment:\n    type: digitalocean:VolumeAttachment\n    name: foobar\n    properties:\n      dropletId: ${foobarDroplet.id}\n      volumeId: ${foobar.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also create a volume from an existing snapshot.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = digitalocean.getVolumeSnapshot({\n    name: \"baz\",\n});\nconst foobarVolume = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.LON1,\n    name: \"foo\",\n    size: foobar.then(foobar =\u003e foobar.minDiskSize),\n    snapshotId: foobar.then(foobar =\u003e foobar.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.get_volume_snapshot(name=\"baz\")\nfoobar_volume = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.LON1,\n    name=\"foo\",\n    size=foobar.min_disk_size,\n    snapshot_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        Name = \"baz\",\n    });\n\n    var foobarVolume = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.LON1,\n        Name = \"foo\",\n        Size = foobar.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.MinDiskSize),\n        SnapshotId = foobar.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"baz\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:     pulumi.String(digitalocean.RegionLON1),\n\t\t\tName:       pulumi.String(\"foo\"),\n\t\t\tSize:       pulumi.Int(foobar.MinDiskSize),\n\t\t\tSnapshotId: pulumi.String(foobar.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var foobar = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .name(\"baz\")\n            .build());\n\n        var foobarVolume = new Volume(\"foobarVolume\", VolumeArgs.builder()\n            .region(\"lon1\")\n            .name(\"foo\")\n            .size(foobar.minDiskSize())\n            .snapshotId(foobar.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobarVolume:\n    type: digitalocean:Volume\n    name: foobar\n    properties:\n      region: lon1\n      name: foo\n      size: ${foobar.minDiskSize}\n      snapshotId: ${foobar.id}\nvariables:\n  foobar:\n    fn::invoke:\n      function: digitalocean:getVolumeSnapshot\n      arguments:\n        name: baz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumes can be imported using the `volume id`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/volume:Volume volume 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\n",
            "properties": {
                "description": {
                    "type": "string",
                    "description": "A free-form text field up to a limit of 1024 bytes to describe a block storage volume.\n"
                },
                "dropletIds": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    },
                    "description": "A list of associated droplet ids.\n"
                },
                "filesystemLabel": {
                    "type": "string",
                    "description": "Filesystem label for the block storage volume.\n"
                },
                "filesystemType": {
                    "type": "string",
                    "description": "Filesystem type (\u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e) for the block storage volume.\n",
                    "deprecationMessage": "This fields functionality has been replaced by \u003cspan pulumi-lang-nodejs=\"`initialFilesystemType`\" pulumi-lang-dotnet=\"`InitialFilesystemType`\" pulumi-lang-go=\"`initialFilesystemType`\" pulumi-lang-python=\"`initial_filesystem_type`\" pulumi-lang-yaml=\"`initialFilesystemType`\" pulumi-lang-java=\"`initialFilesystemType`\"\u003e`initial_filesystem_type`\u003c/span\u003e. The property will still remain as a computed attribute representing the current volumes filesystem type."
                },
                "initialFilesystemLabel": {
                    "type": "string",
                    "description": "Initial filesystem label for the block storage volume.\n"
                },
                "initialFilesystemType": {
                    "type": "string",
                    "description": "Initial filesystem type (\u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e) for the block storage volume.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the block storage volume. Must be lowercase and be composed only of numbers, letters and \"-\", up to a limit of 64 characters. The name must begin with a letter.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The region that the block storage volume will be created in.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the block storage volume in GiB. If updated, can only be expanded.\n"
                },
                "snapshotId": {
                    "type": "string",
                    "description": "The ID of an existing volume snapshot from which the new volume will be created. If supplied, the region and size will be limited on creation to that of the referenced snapshot\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the tags to be applied to this Volume.\n"
                },
                "volumeUrn": {
                    "type": "string",
                    "description": "The uniform resource name for the volume.\n"
                }
            },
            "required": [
                "dropletIds",
                "filesystemLabel",
                "filesystemType",
                "name",
                "region",
                "size",
                "volumeUrn"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "A free-form text field up to a limit of 1024 bytes to describe a block storage volume.\n",
                    "willReplaceOnChanges": true
                },
                "filesystemType": {
                    "type": "string",
                    "description": "Filesystem type (\u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e) for the block storage volume.\n",
                    "deprecationMessage": "This fields functionality has been replaced by \u003cspan pulumi-lang-nodejs=\"`initialFilesystemType`\" pulumi-lang-dotnet=\"`InitialFilesystemType`\" pulumi-lang-go=\"`initialFilesystemType`\" pulumi-lang-python=\"`initial_filesystem_type`\" pulumi-lang-yaml=\"`initialFilesystemType`\" pulumi-lang-java=\"`initialFilesystemType`\"\u003e`initial_filesystem_type`\u003c/span\u003e. The property will still remain as a computed attribute representing the current volumes filesystem type."
                },
                "initialFilesystemLabel": {
                    "type": "string",
                    "description": "Initial filesystem label for the block storage volume.\n",
                    "willReplaceOnChanges": true
                },
                "initialFilesystemType": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:FileSystemType"
                        }
                    ],
                    "description": "Initial filesystem type (\u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e) for the block storage volume.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "A name for the block storage volume. Must be lowercase and be composed only of numbers, letters and \"-\", up to a limit of 64 characters. The name must begin with a letter.\n",
                    "willReplaceOnChanges": true
                },
                "region": {
                    "type": "string",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "string",
                            "$ref": "#/types/digitalocean:index:Region"
                        }
                    ],
                    "description": "The region that the block storage volume will be created in.\n",
                    "willReplaceOnChanges": true
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the block storage volume in GiB. If updated, can only be expanded.\n"
                },
                "snapshotId": {
                    "type": "string",
                    "description": "The ID of an existing volume snapshot from which the new volume will be created. If supplied, the region and size will be limited on creation to that of the referenced snapshot\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the tags to be applied to this Volume.\n"
                }
            },
            "requiredInputs": [
                "region",
                "size"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Volume resources.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "A free-form text field up to a limit of 1024 bytes to describe a block storage volume.\n",
                        "willReplaceOnChanges": true
                    },
                    "dropletIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "description": "A list of associated droplet ids.\n"
                    },
                    "filesystemLabel": {
                        "type": "string",
                        "description": "Filesystem label for the block storage volume.\n"
                    },
                    "filesystemType": {
                        "type": "string",
                        "description": "Filesystem type (\u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e) for the block storage volume.\n",
                        "deprecationMessage": "This fields functionality has been replaced by \u003cspan pulumi-lang-nodejs=\"`initialFilesystemType`\" pulumi-lang-dotnet=\"`InitialFilesystemType`\" pulumi-lang-go=\"`initialFilesystemType`\" pulumi-lang-python=\"`initial_filesystem_type`\" pulumi-lang-yaml=\"`initialFilesystemType`\" pulumi-lang-java=\"`initialFilesystemType`\"\u003e`initial_filesystem_type`\u003c/span\u003e. The property will still remain as a computed attribute representing the current volumes filesystem type."
                    },
                    "initialFilesystemLabel": {
                        "type": "string",
                        "description": "Initial filesystem label for the block storage volume.\n",
                        "willReplaceOnChanges": true
                    },
                    "initialFilesystemType": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:FileSystemType"
                            }
                        ],
                        "description": "Initial filesystem type (\u003cspan pulumi-lang-nodejs=\"`xfs`\" pulumi-lang-dotnet=\"`Xfs`\" pulumi-lang-go=\"`xfs`\" pulumi-lang-python=\"`xfs`\" pulumi-lang-yaml=\"`xfs`\" pulumi-lang-java=\"`xfs`\"\u003e`xfs`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`ext4`\" pulumi-lang-dotnet=\"`Ext4`\" pulumi-lang-go=\"`ext4`\" pulumi-lang-python=\"`ext4`\" pulumi-lang-yaml=\"`ext4`\" pulumi-lang-java=\"`ext4`\"\u003e`ext4`\u003c/span\u003e) for the block storage volume.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the block storage volume. Must be lowercase and be composed only of numbers, letters and \"-\", up to a limit of 64 characters. The name must begin with a letter.\n",
                        "willReplaceOnChanges": true
                    },
                    "region": {
                        "type": "string",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "string",
                                "$ref": "#/types/digitalocean:index:Region"
                            }
                        ],
                        "description": "The region that the block storage volume will be created in.\n",
                        "willReplaceOnChanges": true
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the block storage volume in GiB. If updated, can only be expanded.\n"
                    },
                    "snapshotId": {
                        "type": "string",
                        "description": "The ID of an existing volume snapshot from which the new volume will be created. If supplied, the region and size will be limited on creation to that of the referenced snapshot\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of the tags to be applied to this Volume.\n"
                    },
                    "volumeUrn": {
                        "type": "string",
                        "description": "The uniform resource name for the volume.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/volumeAttachment:VolumeAttachment": {
            "description": "Manages attaching a Volume to a Droplet.\n\n\u003e **NOTE:** Volumes can be attached either directly on the \u003cspan pulumi-lang-nodejs=\"`digitalocean.Droplet`\" pulumi-lang-dotnet=\"`digitalocean.Droplet`\" pulumi-lang-go=\"`Droplet`\" pulumi-lang-python=\"`Droplet`\" pulumi-lang-yaml=\"`digitalocean.Droplet`\" pulumi-lang-java=\"`digitalocean.Droplet`\"\u003e`digitalocean.Droplet`\u003c/span\u003e resource, or using the \u003cspan pulumi-lang-nodejs=\"`digitalocean.VolumeAttachment`\" pulumi-lang-dotnet=\"`digitalocean.VolumeAttachment`\" pulumi-lang-go=\"`VolumeAttachment`\" pulumi-lang-python=\"`VolumeAttachment`\" pulumi-lang-yaml=\"`digitalocean.VolumeAttachment`\" pulumi-lang-java=\"`digitalocean.VolumeAttachment`\"\u003e`digitalocean.VolumeAttachment`\u003c/span\u003e resource - but the two cannot be used together. If both are used against the same Droplet, the volume attachments will constantly drift.\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.NYC1,\n    name: \"baz\",\n    size: 100,\n    initialFilesystemType: digitalocean.FileSystemType.EXT4,\n    description: \"an example volume\",\n});\nconst foobarDroplet = new digitalocean.Droplet(\"foobar\", {\n    name: \"baz\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC1,\n});\nconst foobarVolumeAttachment = new digitalocean.VolumeAttachment(\"foobar\", {\n    dropletId: foobarDroplet.id,\n    volumeId: foobar.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.NYC1,\n    name=\"baz\",\n    size=100,\n    initial_filesystem_type=digitalocean.FileSystemType.EXT4,\n    description=\"an example volume\")\nfoobar_droplet = digitalocean.Droplet(\"foobar\",\n    name=\"baz\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC1)\nfoobar_volume_attachment = digitalocean.VolumeAttachment(\"foobar\",\n    droplet_id=foobar_droplet.id,\n    volume_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.NYC1,\n        Name = \"baz\",\n        Size = 100,\n        InitialFilesystemType = DigitalOcean.FileSystemType.EXT4,\n        Description = \"an example volume\",\n    });\n\n    var foobarDroplet = new DigitalOcean.Droplet(\"foobar\", new()\n    {\n        Name = \"baz\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC1,\n    });\n\n    var foobarVolumeAttachment = new DigitalOcean.VolumeAttachment(\"foobar\", new()\n    {\n        DropletId = foobarDroplet.Id,\n        VolumeId = foobar.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:                pulumi.String(digitalocean.RegionNYC1),\n\t\t\tName:                  pulumi.String(\"baz\"),\n\t\t\tSize:                  pulumi.Int(100),\n\t\t\tInitialFilesystemType: pulumi.String(digitalocean.FileSystemTypeEXT4),\n\t\t\tDescription:           pulumi.String(\"an example volume\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobarDroplet, err := digitalocean.NewDroplet(ctx, \"foobar\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"baz\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolumeAttachment(ctx, \"foobar\", \u0026digitalocean.VolumeAttachmentArgs{\n\t\t\tDropletId: foobarDroplet.ID(),\n\t\t\tVolumeId:  foobar.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.VolumeAttachment;\nimport com.pulumi.digitalocean.VolumeAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Volume(\"foobar\", VolumeArgs.builder()\n            .region(\"nyc1\")\n            .name(\"baz\")\n            .size(100)\n            .initialFilesystemType(\"ext4\")\n            .description(\"an example volume\")\n            .build());\n\n        var foobarDroplet = new Droplet(\"foobarDroplet\", DropletArgs.builder()\n            .name(\"baz\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc1\")\n            .build());\n\n        var foobarVolumeAttachment = new VolumeAttachment(\"foobarVolumeAttachment\", VolumeAttachmentArgs.builder()\n            .dropletId(foobarDroplet.id())\n            .volumeId(foobar.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Volume\n    properties:\n      region: nyc1\n      name: baz\n      size: 100\n      initialFilesystemType: ext4\n      description: an example volume\n  foobarDroplet:\n    type: digitalocean:Droplet\n    name: foobar\n    properties:\n      name: baz\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc1\n  foobarVolumeAttachment:\n    type: digitalocean:VolumeAttachment\n    name: foobar\n    properties:\n      dropletId: ${foobarDroplet.id}\n      volumeId: ${foobar.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "properties": {
                "dropletId": {
                    "type": "integer",
                    "description": "ID of the Droplet to attach the volume to.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "ID of the Volume to be attached to the Droplet.\n"
                }
            },
            "required": [
                "dropletId",
                "volumeId"
            ],
            "inputProperties": {
                "dropletId": {
                    "type": "integer",
                    "description": "ID of the Droplet to attach the volume to.\n",
                    "willReplaceOnChanges": true
                },
                "volumeId": {
                    "type": "string",
                    "description": "ID of the Volume to be attached to the Droplet.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "dropletId",
                "volumeId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VolumeAttachment resources.\n",
                "properties": {
                    "dropletId": {
                        "type": "integer",
                        "description": "ID of the Droplet to attach the volume to.\n",
                        "willReplaceOnChanges": true
                    },
                    "volumeId": {
                        "type": "string",
                        "description": "ID of the Volume to be attached to the Droplet.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/volumeSnapshot:VolumeSnapshot": {
            "description": "Provides a DigitalOcean Volume Snapshot which can be used to create a snapshot from an existing volume.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foobar = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.NYC1,\n    name: \"baz\",\n    size: 100,\n    description: \"an example volume\",\n});\nconst foobarVolumeSnapshot = new digitalocean.VolumeSnapshot(\"foobar\", {\n    name: \"foo\",\n    volumeId: foobar.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoobar = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.NYC1,\n    name=\"baz\",\n    size=100,\n    description=\"an example volume\")\nfoobar_volume_snapshot = digitalocean.VolumeSnapshot(\"foobar\",\n    name=\"foo\",\n    volume_id=foobar.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foobar = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.NYC1,\n        Name = \"baz\",\n        Size = 100,\n        Description = \"an example volume\",\n    });\n\n    var foobarVolumeSnapshot = new DigitalOcean.VolumeSnapshot(\"foobar\", new()\n    {\n        Name = \"foo\",\n        VolumeId = foobar.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoobar, err := digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:      pulumi.String(digitalocean.RegionNYC1),\n\t\t\tName:        pulumi.String(\"baz\"),\n\t\t\tSize:        pulumi.Int(100),\n\t\t\tDescription: pulumi.String(\"an example volume\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolumeSnapshot(ctx, \"foobar\", \u0026digitalocean.VolumeSnapshotArgs{\n\t\t\tName:     pulumi.String(\"foo\"),\n\t\t\tVolumeId: foobar.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport com.pulumi.digitalocean.VolumeSnapshot;\nimport com.pulumi.digitalocean.VolumeSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foobar = new Volume(\"foobar\", VolumeArgs.builder()\n            .region(\"nyc1\")\n            .name(\"baz\")\n            .size(100)\n            .description(\"an example volume\")\n            .build());\n\n        var foobarVolumeSnapshot = new VolumeSnapshot(\"foobarVolumeSnapshot\", VolumeSnapshotArgs.builder()\n            .name(\"foo\")\n            .volumeId(foobar.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Volume\n    properties:\n      region: nyc1\n      name: baz\n      size: 100\n      description: an example volume\n  foobarVolumeSnapshot:\n    type: digitalocean:VolumeSnapshot\n    name: foobar\n    properties:\n      name: foo\n      volumeId: ${foobar.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolume Snapshots can be imported using the `snapshot id`, e.g.\n\n```sh\n$ pulumi import digitalocean:index/volumeSnapshot:VolumeSnapshot snapshot 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time the volume snapshot was created.\n"
                },
                "minDiskSize": {
                    "type": "integer",
                    "description": "The minimum size in gigabytes required for a volume to be created based on this volume snapshot.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the volume snapshot.\n"
                },
                "regions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of DigitalOcean region \"slugs\" indicating where the volume snapshot is available.\n"
                },
                "size": {
                    "type": "number",
                    "description": "The billable size of the volume snapshot in gigabytes.\n"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the tags to be applied to this volume snapshot.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume from which the volume snapshot originated.\n"
                }
            },
            "required": [
                "createdAt",
                "minDiskSize",
                "name",
                "regions",
                "size",
                "volumeId"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "A name for the volume snapshot.\n",
                    "willReplaceOnChanges": true
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A list of the tags to be applied to this volume snapshot.\n"
                },
                "volumeId": {
                    "type": "string",
                    "description": "The ID of the volume from which the volume snapshot originated.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "volumeId"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VolumeSnapshot resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time the volume snapshot was created.\n"
                    },
                    "minDiskSize": {
                        "type": "integer",
                        "description": "The minimum size in gigabytes required for a volume to be created based on this volume snapshot.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the volume snapshot.\n",
                        "willReplaceOnChanges": true
                    },
                    "regions": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of DigitalOcean region \"slugs\" indicating where the volume snapshot is available.\n"
                    },
                    "size": {
                        "type": "number",
                        "description": "The billable size of the volume snapshot in gigabytes.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of the tags to be applied to this volume snapshot.\n"
                    },
                    "volumeId": {
                        "type": "string",
                        "description": "The ID of the volume from which the volume snapshot originated.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/vpc:Vpc": {
            "description": "Provides a [DigitalOcean VPC](https://docs.digitalocean.com/reference/api/digitalocean/#tag/VPCs) resource.\n\nVPCs are virtual networks containing resources that can communicate with each\nother in full isolation, using private IP addresses.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.Vpc(\"example\", {\n    name: \"example-project-network\",\n    region: \"nyc3\",\n    ipRange: \"10.10.10.0/24\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.Vpc(\"example\",\n    name=\"example-project-network\",\n    region=\"nyc3\",\n    ip_range=\"10.10.10.0/24\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.Vpc(\"example\", new()\n    {\n        Name = \"example-project-network\",\n        Region = \"nyc3\",\n        IpRange = \"10.10.10.0/24\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewVpc(ctx, \"example\", \u0026digitalocean.VpcArgs{\n\t\t\tName:    pulumi.String(\"example-project-network\"),\n\t\t\tRegion:  pulumi.String(\"nyc3\"),\n\t\t\tIpRange: pulumi.String(\"10.10.10.0/24\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Vpc;\nimport com.pulumi.digitalocean.VpcArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Vpc(\"example\", VpcArgs.builder()\n            .name(\"example-project-network\")\n            .region(\"nyc3\")\n            .ipRange(\"10.10.10.0/24\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:Vpc\n    properties:\n      name: example-project-network\n      region: nyc3\n      ipRange: 10.10.10.0/24\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Resource Assignment\n\n\u003cspan pulumi-lang-nodejs=\"`digitalocean.Droplet`\" pulumi-lang-dotnet=\"`digitalocean.Droplet`\" pulumi-lang-go=\"`Droplet`\" pulumi-lang-python=\"`Droplet`\" pulumi-lang-yaml=\"`digitalocean.Droplet`\" pulumi-lang-java=\"`digitalocean.Droplet`\"\u003e`digitalocean.Droplet`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`digitalocean.KubernetesCluster`\" pulumi-lang-dotnet=\"`digitalocean.KubernetesCluster`\" pulumi-lang-go=\"`KubernetesCluster`\" pulumi-lang-python=\"`KubernetesCluster`\" pulumi-lang-yaml=\"`digitalocean.KubernetesCluster`\" pulumi-lang-java=\"`digitalocean.KubernetesCluster`\"\u003e`digitalocean.KubernetesCluster`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`digitaloceanLoadBalancer`\" pulumi-lang-dotnet=\"`DigitaloceanLoadBalancer`\" pulumi-lang-go=\"`digitaloceanLoadBalancer`\" pulumi-lang-python=\"`digitalocean_load_balancer`\" pulumi-lang-yaml=\"`digitaloceanLoadBalancer`\" pulumi-lang-java=\"`digitaloceanLoadBalancer`\"\u003e`digitalocean_load_balancer`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`digitalocean.DatabaseCluster`\" pulumi-lang-dotnet=\"`digitalocean.DatabaseCluster`\" pulumi-lang-go=\"`DatabaseCluster`\" pulumi-lang-python=\"`DatabaseCluster`\" pulumi-lang-yaml=\"`digitalocean.DatabaseCluster`\" pulumi-lang-java=\"`digitalocean.DatabaseCluster`\"\u003e`digitalocean.DatabaseCluster`\u003c/span\u003e resources\nmay be assigned to a VPC by referencing its \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. For example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.Vpc(\"example\", {\n    name: \"example-project-network\",\n    region: \"nyc3\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.Vpc(\"example\",\n    name=\"example-project-network\",\n    region=\"nyc3\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.Vpc(\"example\", new()\n    {\n        Name = \"example-project-network\",\n        Region = \"nyc3\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.NewVpc(ctx, \"example\", \u0026digitalocean.VpcArgs{\n\t\t\tName:   pulumi.String(\"example-project-network\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Vpc;\nimport com.pulumi.digitalocean.VpcArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new Vpc(\"example\", VpcArgs.builder()\n            .name(\"example-project-network\")\n            .region(\"nyc3\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:Vpc\n    properties:\n      name: example-project-network\n      region: nyc3\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA VPC can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/vpc:Vpc example 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of when the VPC was created.\n"
                },
                "default": {
                    "type": "boolean",
                    "description": "A boolean indicating whether or not the VPC is the default one for the region.\n"
                },
                "description": {
                    "type": "string",
                    "description": "A free-form text field up to a limit of 255 characters to describe the VPC.\n"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The range of IP addresses for the VPC in CIDR notation. Network ranges cannot overlap with other networks in the same account and must be in range of private addresses as defined in RFC1918. It may not be larger than `/16` or smaller than `/24`.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the VPC. Must be unique and contain alphanumeric characters, dashes, and periods only.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The DigitalOcean region slug for the VPC's location.\n"
                },
                "vpcUrn": {
                    "type": "string",
                    "description": "The uniform resource name (URN) for the VPC.\n"
                }
            },
            "required": [
                "createdAt",
                "default",
                "ipRange",
                "name",
                "region",
                "vpcUrn"
            ],
            "inputProperties": {
                "description": {
                    "type": "string",
                    "description": "A free-form text field up to a limit of 255 characters to describe the VPC.\n"
                },
                "ipRange": {
                    "type": "string",
                    "description": "The range of IP addresses for the VPC in CIDR notation. Network ranges cannot overlap with other networks in the same account and must be in range of private addresses as defined in RFC1918. It may not be larger than `/16` or smaller than `/24`.\n",
                    "willReplaceOnChanges": true
                },
                "name": {
                    "type": "string",
                    "description": "A name for the VPC. Must be unique and contain alphanumeric characters, dashes, and periods only.\n"
                },
                "region": {
                    "type": "string",
                    "description": "The DigitalOcean region slug for the VPC's location.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "region"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering Vpc resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of when the VPC was created.\n"
                    },
                    "default": {
                        "type": "boolean",
                        "description": "A boolean indicating whether or not the VPC is the default one for the region.\n"
                    },
                    "description": {
                        "type": "string",
                        "description": "A free-form text field up to a limit of 255 characters to describe the VPC.\n"
                    },
                    "ipRange": {
                        "type": "string",
                        "description": "The range of IP addresses for the VPC in CIDR notation. Network ranges cannot overlap with other networks in the same account and must be in range of private addresses as defined in RFC1918. It may not be larger than `/16` or smaller than `/24`.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the VPC. Must be unique and contain alphanumeric characters, dashes, and periods only.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The DigitalOcean region slug for the VPC's location.\n",
                        "willReplaceOnChanges": true
                    },
                    "vpcUrn": {
                        "type": "string",
                        "description": "The uniform resource name (URN) for the VPC.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/vpcNatGateway:VpcNatGateway": {
            "description": "Provides a DigitalOcean VPC NAT Gateway resource. This can be used to create, modify, \nread and delete VPC NAT Gateways.\n\nNOTE: VPC NAT Gateway is currently in Private Preview.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst my_vpc = new digitalocean.Vpc(\"my-vpc\", {\n    name: \"terraform-example\",\n    region: \"nyc3\",\n});\nconst my_vpc_nat_gateway = new digitalocean.VpcNatGateway(\"my-vpc-nat-gateway\", {\n    name: \"terraform-example\",\n    type: \"PUBLIC\",\n    region: \"nyc3\",\n    size: 1,\n    vpcs: [{\n        vpcUuid: my_vpc.id,\n    }],\n    udpTimeoutSeconds: 30,\n    icmpTimeoutSeconds: 30,\n    tcpTimeoutSeconds: 30,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmy_vpc = digitalocean.Vpc(\"my-vpc\",\n    name=\"terraform-example\",\n    region=\"nyc3\")\nmy_vpc_nat_gateway = digitalocean.VpcNatGateway(\"my-vpc-nat-gateway\",\n    name=\"terraform-example\",\n    type=\"PUBLIC\",\n    region=\"nyc3\",\n    size=1,\n    vpcs=[{\n        \"vpc_uuid\": my_vpc.id,\n    }],\n    udp_timeout_seconds=30,\n    icmp_timeout_seconds=30,\n    tcp_timeout_seconds=30)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_vpc = new DigitalOcean.Vpc(\"my-vpc\", new()\n    {\n        Name = \"terraform-example\",\n        Region = \"nyc3\",\n    });\n\n    var my_vpc_nat_gateway = new DigitalOcean.VpcNatGateway(\"my-vpc-nat-gateway\", new()\n    {\n        Name = \"terraform-example\",\n        Type = \"PUBLIC\",\n        Region = \"nyc3\",\n        Size = 1,\n        Vpcs = new[]\n        {\n            new DigitalOcean.Inputs.VpcNatGatewayVpcArgs\n            {\n                VpcUuid = my_vpc.Id,\n            },\n        },\n        UdpTimeoutSeconds = 30,\n        IcmpTimeoutSeconds = 30,\n        TcpTimeoutSeconds = 30,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_vpc, err := digitalocean.NewVpc(ctx, \"my-vpc\", \u0026digitalocean.VpcArgs{\n\t\t\tName:   pulumi.String(\"terraform-example\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVpcNatGateway(ctx, \"my-vpc-nat-gateway\", \u0026digitalocean.VpcNatGatewayArgs{\n\t\t\tName:   pulumi.String(\"terraform-example\"),\n\t\t\tType:   pulumi.String(\"PUBLIC\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t\tSize:   pulumi.Int(1),\n\t\t\tVpcs: digitalocean.VpcNatGatewayVpcArray{\n\t\t\t\t\u0026digitalocean.VpcNatGatewayVpcArgs{\n\t\t\t\t\tVpcUuid: my_vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUdpTimeoutSeconds:  pulumi.Int(30),\n\t\t\tIcmpTimeoutSeconds: pulumi.Int(30),\n\t\t\tTcpTimeoutSeconds:  pulumi.Int(30),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Vpc;\nimport com.pulumi.digitalocean.VpcArgs;\nimport com.pulumi.digitalocean.VpcNatGateway;\nimport com.pulumi.digitalocean.VpcNatGatewayArgs;\nimport com.pulumi.digitalocean.inputs.VpcNatGatewayVpcArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_vpc = new Vpc(\"my-vpc\", VpcArgs.builder()\n            .name(\"terraform-example\")\n            .region(\"nyc3\")\n            .build());\n\n        var my_vpc_nat_gateway = new VpcNatGateway(\"my-vpc-nat-gateway\", VpcNatGatewayArgs.builder()\n            .name(\"terraform-example\")\n            .type(\"PUBLIC\")\n            .region(\"nyc3\")\n            .size(1)\n            .vpcs(VpcNatGatewayVpcArgs.builder()\n                .vpcUuid(my_vpc.id())\n                .build())\n            .udpTimeoutSeconds(30)\n            .icmpTimeoutSeconds(30)\n            .tcpTimeoutSeconds(30)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-vpc:\n    type: digitalocean:Vpc\n    properties:\n      name: terraform-example\n      region: nyc3\n  my-vpc-nat-gateway:\n    type: digitalocean:VpcNatGateway\n    properties:\n      name: terraform-example\n      type: PUBLIC\n      region: nyc3\n      size: '1'\n      vpcs:\n        - vpcUuid: ${[\"my-vpc\"].id}\n      udpTimeoutSeconds: 30\n      icmpTimeoutSeconds: 30\n      tcpTimeoutSeconds: 30\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVPC NAT Gateways can be imported using their \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/vpcNatGateway:VpcNatGateway my-vpc-nat-gateway-id 38e66834-d741-47ec-88e7-c70cbdcz0445\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "Created at timestamp for the VPC NAT Gateway.\n"
                },
                "egresses": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/VpcNatGatewayEgress:VpcNatGatewayEgress"
                    },
                    "description": "Embeds the list of public egresses assigned to the VPC NAT Gateway: resolves as list of\n\u003cspan pulumi-lang-nodejs=\"`publicGateways`\" pulumi-lang-dotnet=\"`PublicGateways`\" pulumi-lang-go=\"`publicGateways`\" pulumi-lang-python=\"`public_gateways`\" pulumi-lang-yaml=\"`publicGateways`\" pulumi-lang-java=\"`publicGateways`\"\u003e`public_gateways`\u003c/span\u003e embedding the reserved \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e addresses.\n"
                },
                "icmpTimeoutSeconds": {
                    "type": "integer",
                    "description": "The egress timeout value for ICMP connections of the VPC NAT Gateway.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the VPC NAT Gateway.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project to which the VPC NAT Gateway will be assigned."
                },
                "region": {
                    "type": "string",
                    "description": "The region for the VPC NAT Gateway.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the VPC NAT Gateway.\n"
                },
                "state": {
                    "type": "string",
                    "description": "State of the VPC NAT Gateway"
                },
                "tcpTimeoutSeconds": {
                    "type": "integer",
                    "description": "The egress timeout value for TCP connections of the VPC NAT Gateway.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the VPC NAT Gateway.\n"
                },
                "udpTimeoutSeconds": {
                    "type": "integer",
                    "description": "The egress timeout value for UDP connections of the VPC NAT Gateway.\n"
                },
                "updatedAt": {
                    "type": "string",
                    "description": "Updated at timestamp for the VPC NAT Gateway.\n"
                },
                "vpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/VpcNatGatewayVpc:VpcNatGatewayVpc"
                    },
                    "description": "The ingress VPC configuration of the VPC NAT Gateway, the supported arguments are\ndocumented below.\n"
                }
            },
            "required": [
                "createdAt",
                "egresses",
                "icmpTimeoutSeconds",
                "name",
                "projectId",
                "region",
                "size",
                "state",
                "tcpTimeoutSeconds",
                "type",
                "udpTimeoutSeconds",
                "updatedAt",
                "vpcs"
            ],
            "inputProperties": {
                "icmpTimeoutSeconds": {
                    "type": "integer",
                    "description": "The egress timeout value for ICMP connections of the VPC NAT Gateway.\n"
                },
                "name": {
                    "type": "string",
                    "description": "The name of the VPC NAT Gateway.\n"
                },
                "projectId": {
                    "type": "string",
                    "description": "ID of the project to which the VPC NAT Gateway will be assigned."
                },
                "region": {
                    "type": "string",
                    "description": "The region for the VPC NAT Gateway.\n"
                },
                "size": {
                    "type": "integer",
                    "description": "The size of the VPC NAT Gateway.\n"
                },
                "tcpTimeoutSeconds": {
                    "type": "integer",
                    "description": "The egress timeout value for TCP connections of the VPC NAT Gateway.\n"
                },
                "type": {
                    "type": "string",
                    "description": "The type of the VPC NAT Gateway.\n"
                },
                "udpTimeoutSeconds": {
                    "type": "integer",
                    "description": "The egress timeout value for UDP connections of the VPC NAT Gateway.\n"
                },
                "vpcs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/types/digitalocean:index/VpcNatGatewayVpc:VpcNatGatewayVpc"
                    },
                    "description": "The ingress VPC configuration of the VPC NAT Gateway, the supported arguments are\ndocumented below.\n"
                }
            },
            "requiredInputs": [
                "region",
                "size",
                "type",
                "vpcs"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcNatGateway resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "Created at timestamp for the VPC NAT Gateway.\n"
                    },
                    "egresses": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/VpcNatGatewayEgress:VpcNatGatewayEgress"
                        },
                        "description": "Embeds the list of public egresses assigned to the VPC NAT Gateway: resolves as list of\n\u003cspan pulumi-lang-nodejs=\"`publicGateways`\" pulumi-lang-dotnet=\"`PublicGateways`\" pulumi-lang-go=\"`publicGateways`\" pulumi-lang-python=\"`public_gateways`\" pulumi-lang-yaml=\"`publicGateways`\" pulumi-lang-java=\"`publicGateways`\"\u003e`public_gateways`\u003c/span\u003e embedding the reserved \u003cspan pulumi-lang-nodejs=\"`ipv4`\" pulumi-lang-dotnet=\"`Ipv4`\" pulumi-lang-go=\"`ipv4`\" pulumi-lang-python=\"`ipv4`\" pulumi-lang-yaml=\"`ipv4`\" pulumi-lang-java=\"`ipv4`\"\u003e`ipv4`\u003c/span\u003e addresses.\n"
                    },
                    "icmpTimeoutSeconds": {
                        "type": "integer",
                        "description": "The egress timeout value for ICMP connections of the VPC NAT Gateway.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the VPC NAT Gateway.\n"
                    },
                    "projectId": {
                        "type": "string",
                        "description": "ID of the project to which the VPC NAT Gateway will be assigned."
                    },
                    "region": {
                        "type": "string",
                        "description": "The region for the VPC NAT Gateway.\n"
                    },
                    "size": {
                        "type": "integer",
                        "description": "The size of the VPC NAT Gateway.\n"
                    },
                    "state": {
                        "type": "string",
                        "description": "State of the VPC NAT Gateway"
                    },
                    "tcpTimeoutSeconds": {
                        "type": "integer",
                        "description": "The egress timeout value for TCP connections of the VPC NAT Gateway.\n"
                    },
                    "type": {
                        "type": "string",
                        "description": "The type of the VPC NAT Gateway.\n"
                    },
                    "udpTimeoutSeconds": {
                        "type": "integer",
                        "description": "The egress timeout value for UDP connections of the VPC NAT Gateway.\n"
                    },
                    "updatedAt": {
                        "type": "string",
                        "description": "Updated at timestamp for the VPC NAT Gateway.\n"
                    },
                    "vpcs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/VpcNatGatewayVpc:VpcNatGatewayVpc"
                        },
                        "description": "The ingress VPC configuration of the VPC NAT Gateway, the supported arguments are\ndocumented below.\n"
                    }
                },
                "type": "object"
            }
        },
        "digitalocean:index/vpcPeering:VpcPeering": {
            "description": "Provides a DigitalOcean VPC Peering resource.\n\nVPC Peerings are used to connect two VPC networks allowing resources in each \nVPC to communicate with each other privately.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = new digitalocean.VpcPeering(\"example\", {\n    name: \"example-peering\",\n    vpcIds: [\n        vpc1.id,\n        vpc2.id,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.VpcPeering(\"example\",\n    name=\"example-peering\",\n    vpc_ids=[\n        vpc1[\"id\"],\n        vpc2[\"id\"],\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new DigitalOcean.VpcPeering(\"example\", new()\n    {\n        Name = \"example-peering\",\n        VpcIds = new[]\n        {\n            vpc1.Id,\n            vpc2.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.NewVpcPeering(ctx, \"example\", \u0026digitalocean.VpcPeeringArgs{\n\t\t\tName: pulumi.String(\"example-peering\"),\n\t\t\tVpcIds: pulumi.StringArray{\n\t\t\t\tvpc1.Id,\n\t\t\t\tvpc2.Id,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.VpcPeering;\nimport com.pulumi.digitalocean.VpcPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new VpcPeering(\"example\", VpcPeeringArgs.builder()\n            .name(\"example-peering\")\n            .vpcIds(            \n                vpc1.id(),\n                vpc2.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: digitalocean:VpcPeering\n    properties:\n      name: example-peering\n      vpcIds:\n        - ${vpc1.id}\n        - ${vpc2.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Resource Assignment\n\nYou can use the VPC Peering resource to allow communication between resources\nin different VPCs. For example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst vpc1 = new digitalocean.Vpc(\"vpc1\", {\n    name: \"vpc1\",\n    region: \"nyc3\",\n});\nconst vpc2 = new digitalocean.Vpc(\"vpc2\", {\n    name: \"vpc2\",\n    region: \"nyc3\",\n});\nconst example = new digitalocean.VpcPeering(\"example\", {\n    name: \"example-peering\",\n    vpcIds: [\n        vpc1.id,\n        vpc2.id,\n    ],\n});\nconst example1 = new digitalocean.Droplet(\"example1\", {\n    name: \"example1\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: vpc1.id,\n});\nconst example2 = new digitalocean.Droplet(\"example2\", {\n    name: \"example2\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: vpc2.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nvpc1 = digitalocean.Vpc(\"vpc1\",\n    name=\"vpc1\",\n    region=\"nyc3\")\nvpc2 = digitalocean.Vpc(\"vpc2\",\n    name=\"vpc2\",\n    region=\"nyc3\")\nexample = digitalocean.VpcPeering(\"example\",\n    name=\"example-peering\",\n    vpc_ids=[\n        vpc1.id,\n        vpc2.id,\n    ])\nexample1 = digitalocean.Droplet(\"example1\",\n    name=\"example1\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=vpc1.id)\nexample2 = digitalocean.Droplet(\"example2\",\n    name=\"example2\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=vpc2.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var vpc1 = new DigitalOcean.Vpc(\"vpc1\", new()\n    {\n        Name = \"vpc1\",\n        Region = \"nyc3\",\n    });\n\n    var vpc2 = new DigitalOcean.Vpc(\"vpc2\", new()\n    {\n        Name = \"vpc2\",\n        Region = \"nyc3\",\n    });\n\n    var example = new DigitalOcean.VpcPeering(\"example\", new()\n    {\n        Name = \"example-peering\",\n        VpcIds = new[]\n        {\n            vpc1.Id,\n            vpc2.Id,\n        },\n    });\n\n    var example1 = new DigitalOcean.Droplet(\"example1\", new()\n    {\n        Name = \"example1\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = vpc1.Id,\n    });\n\n    var example2 = new DigitalOcean.Droplet(\"example2\", new()\n    {\n        Name = \"example2\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = vpc2.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc1, err := digitalocean.NewVpc(ctx, \"vpc1\", \u0026digitalocean.VpcArgs{\n\t\t\tName:   pulumi.String(\"vpc1\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpc2, err := digitalocean.NewVpc(ctx, \"vpc2\", \u0026digitalocean.VpcArgs{\n\t\t\tName:   pulumi.String(\"vpc2\"),\n\t\t\tRegion: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVpcPeering(ctx, \"example\", \u0026digitalocean.VpcPeeringArgs{\n\t\t\tName: pulumi.String(\"example-peering\"),\n\t\t\tVpcIds: pulumi.StringArray{\n\t\t\t\tvpc1.ID(),\n\t\t\t\tvpc2.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example1\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example1\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: vpc1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example2\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example2\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: vpc2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.Vpc;\nimport com.pulumi.digitalocean.VpcArgs;\nimport com.pulumi.digitalocean.VpcPeering;\nimport com.pulumi.digitalocean.VpcPeeringArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var vpc1 = new Vpc(\"vpc1\", VpcArgs.builder()\n            .name(\"vpc1\")\n            .region(\"nyc3\")\n            .build());\n\n        var vpc2 = new Vpc(\"vpc2\", VpcArgs.builder()\n            .name(\"vpc2\")\n            .region(\"nyc3\")\n            .build());\n\n        var example = new VpcPeering(\"example\", VpcPeeringArgs.builder()\n            .name(\"example-peering\")\n            .vpcIds(            \n                vpc1.id(),\n                vpc2.id())\n            .build());\n\n        var example1 = new Droplet(\"example1\", DropletArgs.builder()\n            .name(\"example1\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(vpc1.id())\n            .build());\n\n        var example2 = new Droplet(\"example2\", DropletArgs.builder()\n            .name(\"example2\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(vpc2.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  vpc1:\n    type: digitalocean:Vpc\n    properties:\n      name: vpc1\n      region: nyc3\n  vpc2:\n    type: digitalocean:Vpc\n    properties:\n      name: vpc2\n      region: nyc3\n  example:\n    type: digitalocean:VpcPeering\n    properties:\n      name: example-peering\n      vpcIds:\n        - ${vpc1.id}\n        - ${vpc2.id}\n  example1:\n    type: digitalocean:Droplet\n    properties:\n      name: example1\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${vpc1.id}\n  example2:\n    type: digitalocean:Droplet\n    properties:\n      name: example2\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${vpc2.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nA VPC Peering can be imported using its \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, e.g.\n\n```sh\n$ pulumi import digitalocean:index/vpcPeering:VpcPeering example 771ad360-c017-4b4e-a34e-73934f5f0190\n```\n\n",
            "properties": {
                "createdAt": {
                    "type": "string",
                    "description": "The date and time of when the VPC Peering was created.\n"
                },
                "name": {
                    "type": "string",
                    "description": "A name for the VPC Peering. Must be unique and contain alphanumeric characters, dashes, and periods only.\n"
                },
                "status": {
                    "type": "string",
                    "description": "The status of the VPC Peering.\n"
                },
                "vpcIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of two VPC IDs to be peered.\n"
                }
            },
            "required": [
                "createdAt",
                "name",
                "status",
                "vpcIds"
            ],
            "inputProperties": {
                "name": {
                    "type": "string",
                    "description": "A name for the VPC Peering. Must be unique and contain alphanumeric characters, dashes, and periods only.\n"
                },
                "vpcIds": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "A set of two VPC IDs to be peered.\n",
                    "willReplaceOnChanges": true
                }
            },
            "requiredInputs": [
                "vpcIds"
            ],
            "stateInputs": {
                "description": "Input properties used for looking up and filtering VpcPeering resources.\n",
                "properties": {
                    "createdAt": {
                        "type": "string",
                        "description": "The date and time of when the VPC Peering was created.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "A name for the VPC Peering. Must be unique and contain alphanumeric characters, dashes, and periods only.\n"
                    },
                    "status": {
                        "type": "string",
                        "description": "The status of the VPC Peering.\n"
                    },
                    "vpcIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A set of two VPC IDs to be peered.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object"
            }
        }
    },
    "functions": {
        "digitalocean:index/getAccount:getAccount": {
            "description": "Get information on your DigitalOcean account.\n\n## Example Usage\n\nGet the account:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getAccount({});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_account()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetAccount.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetAccount(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getAccount(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getAccount\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getAccount.\n",
                "properties": {
                    "dropletLimit": {
                        "description": "The total number of droplets current user or team may have active at one time.\n",
                        "type": "integer"
                    },
                    "email": {
                        "description": "The email address used by the current user to register for DigitalOcean.\n",
                        "type": "string"
                    },
                    "emailVerified": {
                        "description": "If true, the user has verified their account via email. False otherwise.\n",
                        "type": "boolean"
                    },
                    "floatingIpLimit": {
                        "description": "The total number of floating IPs the current user or team may have.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "status": {
                        "description": "This value is one of \"active\", \"warning\" or \"locked\".\n",
                        "type": "string"
                    },
                    "statusMessage": {
                        "description": "A human-readable message giving more details about the status of the account.\n",
                        "type": "string"
                    },
                    "uuid": {
                        "description": "The unique universal identifier for the current user.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "dropletLimit",
                    "email",
                    "emailVerified",
                    "floatingIpLimit",
                    "status",
                    "statusMessage",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getApp:getApp": {
            "description": "Get information on a DigitalOcean App.\n\n## Example Usage\n\nGet the account:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getApp({\n    appId: \"e665d18d-7b56-44a9-92ce-31979174d544\",\n});\nexport const defaultIngress = example.then(example =\u003e example.defaultIngress);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_app(app_id=\"e665d18d-7b56-44a9-92ce-31979174d544\")\npulumi.export(\"defaultIngress\", example.default_ingress)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetApp.Invoke(new()\n    {\n        AppId = \"e665d18d-7b56-44a9-92ce-31979174d544\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"defaultIngress\"] = example.Apply(getAppResult =\u003e getAppResult.DefaultIngress),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupApp(ctx, \u0026digitalocean.LookupAppArgs{\n\t\t\tAppId: \"e665d18d-7b56-44a9-92ce-31979174d544\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultIngress\", example.DefaultIngress)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetAppArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getApp(GetAppArgs.builder()\n            .appId(\"e665d18d-7b56-44a9-92ce-31979174d544\")\n            .build());\n\n        ctx.export(\"defaultIngress\", example.defaultIngress());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getApp\n      arguments:\n        appId: e665d18d-7b56-44a9-92ce-31979174d544\noutputs:\n  defaultIngress: ${example.defaultIngress}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getApp.\n",
                "properties": {
                    "appId": {
                        "type": "string",
                        "description": "The ID of the app to retrieve information about.\n"
                    },
                    "dedicatedIps": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getAppDedicatedIp:getAppDedicatedIp"
                        },
                        "description": "A list of dedicated egress IP addresses associated with the app.\n"
                    }
                },
                "type": "object",
                "required": [
                    "appId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getApp.\n",
                "properties": {
                    "activeDeploymentId": {
                        "description": "The ID the app's currently active deployment.\n",
                        "type": "string"
                    },
                    "appId": {
                        "type": "string"
                    },
                    "createdAt": {
                        "description": "The date and time of when the app was created.\n",
                        "type": "string"
                    },
                    "dedicatedIps": {
                        "description": "A list of dedicated egress IP addresses associated with the app.\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getAppDedicatedIp:getAppDedicatedIp"
                        },
                        "type": "array"
                    },
                    "defaultIngress": {
                        "description": "The default URL to access the app.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "liveDomain": {
                        "description": "The live domain of the app.\n",
                        "type": "string"
                    },
                    "liveUrl": {
                        "description": "The live URL of the app.\n",
                        "type": "string"
                    },
                    "projectId": {
                        "description": "The ID of the project that the app is assigned to.\n",
                        "type": "string"
                    },
                    "specs": {
                        "description": "A DigitalOcean App spec describing the app.\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getAppSpec:getAppSpec"
                        },
                        "type": "array"
                    },
                    "updatedAt": {
                        "description": "The date and time of when the app was last updated.\n",
                        "type": "string"
                    },
                    "urn": {
                        "description": "The uniform resource identifier for the app.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "activeDeploymentId",
                    "appId",
                    "createdAt",
                    "dedicatedIps",
                    "defaultIngress",
                    "liveDomain",
                    "liveUrl",
                    "projectId",
                    "specs",
                    "updatedAt",
                    "urn",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getByoipPrefix:getByoipPrefix": {
            "description": "Get information on a BYOIP (Bring Your Own IP) prefix. This data source provides the\nprefix CIDR, region, advertisement status, and current state as configured on your\nDigitalOcean account. This is useful if the BYOIP prefix in question is not managed\nby Terraform or you need to utilize any of the prefix's data.\n\n**Note:** If you need to manage BYOIP prefixes using Terraform, \u003cspan pulumi-lang-nodejs=\"`digitalocean.ByoipPrefix`\" pulumi-lang-dotnet=\"`digitalocean.ByoipPrefix`\" pulumi-lang-go=\"`ByoipPrefix`\" pulumi-lang-python=\"`ByoipPrefix`\" pulumi-lang-yaml=\"`digitalocean.ByoipPrefix`\" pulumi-lang-java=\"`digitalocean.ByoipPrefix`\"\u003e`digitalocean.ByoipPrefix`\u003c/span\u003e \nresource can be utilised instead. This data source is read-only.\n\n## Example Usage\n\nGet the BYOIP prefix:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getByoipPrefix({\n    uuid: \"506f78a4-e098-11e5-ad9f-000f53306ae1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_byoip_prefix(uuid=\"506f78a4-e098-11e5-ad9f-000f53306ae1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetByoipPrefix.Invoke(new()\n    {\n        Uuid = \"506f78a4-e098-11e5-ad9f-000f53306ae1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupByoipPrefix(ctx, \u0026digitalocean.LookupByoipPrefixArgs{\n\t\t\tUuid: \"506f78a4-e098-11e5-ad9f-000f53306ae1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetByoipPrefixArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getByoipPrefix(GetByoipPrefixArgs.builder()\n            .uuid(\"506f78a4-e098-11e5-ad9f-000f53306ae1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getByoipPrefix\n      arguments:\n        uuid: 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nList assigned IP addresses from a BYOIP prefix:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getByoipPrefix({\n    uuid: \"506f78a4-e098-11e5-ad9f-000f53306ae1\",\n});\nconst exampleGetByoipPrefixResources = example.then(example =\u003e digitalocean.getByoipPrefixResources({\n    byoipPrefixUuid: example.uuid,\n}));\nexport const byoipInfo = {\n    prefix: example.then(example =\u003e example.prefix),\n    region: example.then(example =\u003e example.region),\n    status: example.then(example =\u003e example.status),\n    assignedCount: exampleGetByoipPrefixResources.then(exampleGetByoipPrefixResources =\u003e exampleGetByoipPrefixResources.addresses).length,\n};\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_byoip_prefix(uuid=\"506f78a4-e098-11e5-ad9f-000f53306ae1\")\nexample_get_byoip_prefix_resources = digitalocean.get_byoip_prefix_resources(byoip_prefix_uuid=example.uuid)\npulumi.export(\"byoipInfo\", {\n    \"prefix\": example.prefix,\n    \"region\": example.region,\n    \"status\": example.status,\n    \"assignedCount\": len(example_get_byoip_prefix_resources.addresses),\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetByoipPrefix.Invoke(new()\n    {\n        Uuid = \"506f78a4-e098-11e5-ad9f-000f53306ae1\",\n    });\n\n    var exampleGetByoipPrefixResources = DigitalOcean.GetByoipPrefixResources.Invoke(new()\n    {\n        ByoipPrefixUuid = example.Apply(getByoipPrefixResult =\u003e getByoipPrefixResult.Uuid),\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"byoipInfo\"] = \n        {\n            { \"prefix\", example.Apply(getByoipPrefixResult =\u003e getByoipPrefixResult.Prefix) },\n            { \"region\", example.Apply(getByoipPrefixResult =\u003e getByoipPrefixResult.Region) },\n            { \"status\", example.Apply(getByoipPrefixResult =\u003e getByoipPrefixResult.Status) },\n            { \"assignedCount\", exampleGetByoipPrefixResources.Apply(getByoipPrefixResourcesResult =\u003e getByoipPrefixResourcesResult.Addresses).Length },\n        },\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupByoipPrefix(ctx, \u0026digitalocean.LookupByoipPrefixArgs{\n\t\t\tUuid: \"506f78a4-e098-11e5-ad9f-000f53306ae1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGetByoipPrefixResources, err := digitalocean.GetByoipPrefixResources(ctx, \u0026digitalocean.GetByoipPrefixResourcesArgs{\n\t\t\tByoipPrefixUuid: example.Uuid,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"byoipInfo\", pulumi.Map{\n\t\t\t\"prefix\":        example.Prefix,\n\t\t\t\"region\":        example.Region,\n\t\t\t\"status\":        example.Status,\n\t\t\t\"assignedCount\": len(exampleGetByoipPrefixResources.Addresses),\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetByoipPrefixArgs;\nimport com.pulumi.digitalocean.inputs.GetByoipPrefixResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getByoipPrefix(GetByoipPrefixArgs.builder()\n            .uuid(\"506f78a4-e098-11e5-ad9f-000f53306ae1\")\n            .build());\n\n        final var exampleGetByoipPrefixResources = DigitaloceanFunctions.getByoipPrefixResources(GetByoipPrefixResourcesArgs.builder()\n            .byoipPrefixUuid(example.uuid())\n            .build());\n\n        ctx.export(\"byoipInfo\", Map.ofEntries(\n            Map.entry(\"prefix\", example.prefix()),\n            Map.entry(\"region\", example.region()),\n            Map.entry(\"status\", example.status()),\n            Map.entry(\"assignedCount\", exampleGetByoipPrefixResources.addresses().length())\n        ));\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getByoipPrefix.\n",
                "properties": {
                    "uuid": {
                        "type": "string",
                        "description": "The UUID of the BYOIP prefix.\n"
                    }
                },
                "type": "object",
                "required": [
                    "uuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getByoipPrefix.\n",
                "properties": {
                    "advertised": {
                        "description": "A boolean indicating whether the prefix is currently being advertised.\n",
                        "type": "boolean"
                    },
                    "failureReason": {
                        "description": "The reason for failure if the status is \"failed\".\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "prefix": {
                        "description": "The CIDR notation of the prefix (e.g., \"192.0.2.0/24\").\n",
                        "type": "string"
                    },
                    "region": {
                        "description": "The DigitalOcean region where the prefix is deployed.\n",
                        "type": "string"
                    },
                    "status": {
                        "description": "The current status of the BYOIP prefix (e.g., \"verified\", \"pending\", \"failed\").\n",
                        "type": "string"
                    },
                    "uuid": {
                        "description": "The UUID of the BYOIP prefix.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "advertised",
                    "failureReason",
                    "prefix",
                    "region",
                    "status",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getByoipPrefixResources:getByoipPrefixResources": {
            "description": "Get information about IP addresses that have been **already assigned** from a \nBYOIP (Bring Your Own IP) prefix. This data source provides a list of all IP addresses \nthat are currently assigned to resources from a specific BYOIP prefix.\n\n**Note:** This data source only lists IPs that are already assigned to resources (like Droplets). \nTo allocate new IPs from the BYOIP prefix, you need to use \u003cspan pulumi-lang-nodejs=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-dotnet=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-go=\"`ReservedIpAssignment`\" pulumi-lang-python=\"`ReservedIpAssignment`\" pulumi-lang-yaml=\"`digitalocean.ReservedIpAssignment`\" pulumi-lang-java=\"`digitalocean.ReservedIpAssignment`\"\u003e`digitalocean.ReservedIpAssignment`\u003c/span\u003e resource.\n\n## Example Usage\n\nList all assigned IP addresses from a BYOIP prefix:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getByoipPrefix({\n    uuid: \"506f78a4-e098-11e5-ad9f-000f53306ae1\",\n});\nconst exampleGetByoipPrefixResources = example.then(example =\u003e digitalocean.getByoipPrefixResources({\n    byoipPrefixUuid: example.uuid,\n}));\nexport const assignedByoipIps = exampleGetByoipPrefixResources.then(exampleGetByoipPrefixResources =\u003e .map(addr =\u003e ({\n    ip: addr.ipAddress,\n    region: addr.region,\n    assigned: addr.assignedAt,\n})));\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_byoip_prefix(uuid=\"506f78a4-e098-11e5-ad9f-000f53306ae1\")\nexample_get_byoip_prefix_resources = digitalocean.get_byoip_prefix_resources(byoip_prefix_uuid=example.uuid)\npulumi.export(\"assignedByoipIps\", [{\n    \"ip\": addr.ip_address,\n    \"region\": addr.region,\n    \"assigned\": addr.assigned_at,\n} for addr in example_get_byoip_prefix_resources.addresses])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetByoipPrefix.Invoke(new()\n    {\n        Uuid = \"506f78a4-e098-11e5-ad9f-000f53306ae1\",\n    });\n\n    var exampleGetByoipPrefixResources = DigitalOcean.GetByoipPrefixResources.Invoke(new()\n    {\n        ByoipPrefixUuid = example.Apply(getByoipPrefixResult =\u003e getByoipPrefixResult.Uuid),\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"assignedByoipIps\"] = .Select(addr =\u003e \n        {\n            return \n            {\n                { \"ip\", addr.IpAddress },\n                { \"region\", addr.Region },\n                { \"assigned\", addr.AssignedAt },\n            };\n        }).ToList(),\n    };\n});\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getByoipPrefixResources.\n",
                "properties": {
                    "byoipPrefixUuid": {
                        "type": "string",
                        "description": "The UUID of the BYOIP prefix to list addresses from.\n"
                    }
                },
                "type": "object",
                "required": [
                    "byoipPrefixUuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getByoipPrefixResources.\n",
                "properties": {
                    "addresses": {
                        "description": "A list of IP addresses allocated from the BYOIP prefix. Each address has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getByoipPrefixResourcesAddress:getByoipPrefixResourcesAddress"
                        },
                        "type": "array"
                    },
                    "byoipPrefixUuid": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    }
                },
                "required": [
                    "addresses",
                    "byoipPrefixUuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getCertificate:getCertificate": {
            "description": "Get information on a certificate. This data source provides the name, type, state,\ndomains, expiry date, and the sha1 fingerprint as configured on your DigitalOcean account.\nThis is useful if the certificate in question is not managed by Terraform or you need to utilize\nany of the certificates data.\n\nAn error is triggered if the provided certificate name does not exist.\n\n## Example Usage\n\nGet the certificate:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getCertificate({\n    name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_certificate(name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetCertificate.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupCertificate(ctx, \u0026digitalocean.LookupCertificateArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetCertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getCertificate(GetCertificateArgs.builder()\n            .name(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getCertificate\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getCertificate.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of certificate.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getCertificate.\n",
                "properties": {
                    "domains": {
                        "description": "Domains for which the certificate was issued.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "notAfter": {
                        "description": "The expiration date and time of the certificate.\n",
                        "type": "string"
                    },
                    "sha1Fingerprint": {
                        "description": "The SHA1 fingerprint of the certificate.\n",
                        "type": "string"
                    },
                    "state": {
                        "description": "the current state of the certificate.\n",
                        "type": "string"
                    },
                    "type": {
                        "description": "The type of the certificate.\n",
                        "type": "string"
                    },
                    "uuid": {
                        "description": "The ID of the certificate.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "domains",
                    "name",
                    "notAfter",
                    "sha1Fingerprint",
                    "state",
                    "type",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getContainerRegistries:getContainerRegistries": {
            "inputs": {
                "description": "A collection of arguments for invoking getContainerRegistries.\n",
                "properties": {
                    "name": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getContainerRegistries.\n",
                "properties": {
                    "createdAt": {
                        "type": "string"
                    },
                    "endpoint": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "serverUrl": {
                        "type": "string"
                    },
                    "storageUsageBytes": {
                        "type": "integer"
                    },
                    "subscriptionTierSlug": {
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "endpoint",
                    "name",
                    "region",
                    "serverUrl",
                    "storageUsageBytes",
                    "subscriptionTierSlug",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getContainerRegistry:getContainerRegistry": {
            "description": "Get information on a container registry. This data source provides the name as\nconfigured on your DigitalOcean account. This is useful if the container\nregistry name in question is not managed by Terraform or you need validate if\nthe container registry exists in the account.\n\nAn error is triggered if the provided container registry name does not exist.\n\n## Example Usage\n\n### Basic Example\n\nGet the container registry:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getContainerRegistry({\n    name: \"example\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_container_registry(name=\"example\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetContainerRegistry.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupContainerRegistry(ctx, \u0026digitalocean.LookupContainerRegistryArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetContainerRegistryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getContainerRegistry(GetContainerRegistryArgs.builder()\n            .name(\"example\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getContainerRegistry\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getContainerRegistry.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the container registry.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getContainerRegistry.\n",
                "properties": {
                    "createdAt": {
                        "description": "The date and time when the registry was created\n",
                        "type": "string"
                    },
                    "endpoint": {
                        "description": "The URL endpoint of the container registry. Ex: `registry.digitalocean.com/my_registry`\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the container registry\n",
                        "type": "string"
                    },
                    "region": {
                        "description": "The slug identifier for the  region\n",
                        "type": "string"
                    },
                    "serverUrl": {
                        "description": "The domain of the container registry. Ex: `registry.digitalocean.com`\n",
                        "type": "string"
                    },
                    "storageUsageBytes": {
                        "description": "The amount of storage used in the registry in bytes.\n",
                        "type": "integer"
                    },
                    "subscriptionTierSlug": {
                        "description": "The slug identifier for the subscription tier\n",
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "endpoint",
                    "name",
                    "region",
                    "serverUrl",
                    "storageUsageBytes",
                    "subscriptionTierSlug",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDatabaseCa:getDatabaseCa": {
            "description": "Provides the CA certificate for a DigitalOcean database.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst ca = digitalocean.getDatabaseCa({\n    clusterId: \"aaa-bbb-ccc-ddd\",\n});\nexport const caOutput = ca.then(ca =\u003e ca.certificate);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nca = digitalocean.get_database_ca(cluster_id=\"aaa-bbb-ccc-ddd\")\npulumi.export(\"caOutput\", ca.certificate)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ca = DigitalOcean.GetDatabaseCa.Invoke(new()\n    {\n        ClusterId = \"aaa-bbb-ccc-ddd\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"caOutput\"] = ca.Apply(getDatabaseCaResult =\u003e getDatabaseCaResult.Certificate),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tca, err := digitalocean.GetDatabaseCa(ctx, \u0026digitalocean.GetDatabaseCaArgs{\n\t\t\tClusterId: \"aaa-bbb-ccc-ddd\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"caOutput\", ca.Certificate)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseCaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ca = DigitaloceanFunctions.getDatabaseCa(GetDatabaseCaArgs.builder()\n            .clusterId(\"aaa-bbb-ccc-ddd\")\n            .build());\n\n        ctx.export(\"caOutput\", ca.certificate());\n    }\n}\n```\n```yaml\nvariables:\n  ca:\n    fn::invoke:\n      function: digitalocean:getDatabaseCa\n      arguments:\n        clusterId: aaa-bbb-ccc-ddd\noutputs:\n  caOutput: ${ca.certificate}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDatabaseCa.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the source database cluster.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getDatabaseCa.\n",
                "properties": {
                    "certificate": {
                        "description": "The CA certificate used to secure database connections decoded to a string.\n",
                        "type": "string"
                    },
                    "clusterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    }
                },
                "required": [
                    "certificate",
                    "clusterId",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDatabaseCluster:getDatabaseCluster": {
            "description": "Provides information on a DigitalOcean database cluster resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nexport const databaseOutput = example.then(example =\u003e example.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\npulumi.export(\"databaseOutput\", example.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"databaseOutput\"] = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Uri),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"databaseOutput\", example.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.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        ctx.export(\"databaseOutput\", example.uri());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseCluster\n      arguments:\n        name: example-cluster\noutputs:\n  databaseOutput: ${example.uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDatabaseCluster.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the database cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getDatabaseCluster.\n",
                "properties": {
                    "database": {
                        "description": "Name of the cluster's default database.\n",
                        "type": "string"
                    },
                    "engine": {
                        "description": "Database engine used by the cluster (ex. \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 for PostgreSQL).\n",
                        "type": "string"
                    },
                    "host": {
                        "description": "Database cluster's hostname.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "maintenanceWindows": {
                        "description": "Defines when the automatic maintenance should be performed for the database cluster.\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDatabaseClusterMaintenanceWindow:getDatabaseClusterMaintenanceWindow"
                        },
                        "type": "array"
                    },
                    "metricsEndpoints": {
                        "description": "A list of metrics endpoints for the database cluster, providing URLs to access Prometheus-compatible metrics.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    },
                    "nodeCount": {
                        "description": "Number of nodes that will be included in the cluster.\n",
                        "type": "integer"
                    },
                    "password": {
                        "description": "Password for the cluster's default user.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "port": {
                        "description": "Network port that the database cluster is listening on.\n",
                        "type": "integer"
                    },
                    "privateHost": {
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "type": "string"
                    },
                    "privateNetworkUuid": {
                        "description": "The ID of the VPC where the database cluster is located.\n",
                        "type": "string"
                    },
                    "privateUri": {
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "projectId": {
                        "description": "The ID of the project that the database cluster is assigned to.\n",
                        "type": "string"
                    },
                    "region": {
                        "description": "DigitalOcean region where the cluster will reside.\n",
                        "type": "string"
                    },
                    "size": {
                        "description": "Database droplet size associated with the cluster (ex. `db-s-1vcpu-1gb`).\n",
                        "type": "string"
                    },
                    "storageSizeMib": {
                        "type": "string"
                    },
                    "tags": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "uiDatabase": {
                        "description": "Name of the OpenSearch dashboard db.\n",
                        "type": "string"
                    },
                    "uiHost": {
                        "description": "Hostname for the OpenSearch dashboard.\n",
                        "type": "string"
                    },
                    "uiPassword": {
                        "description": "Password for the OpenSearch dashboard's default user.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "uiPort": {
                        "description": "Network port that the OpenSearch dashboard is listening on.\n",
                        "type": "integer"
                    },
                    "uiUri": {
                        "description": "The full URI for connecting to the OpenSearch dashboard.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "uiUser": {
                        "description": "Username for OpenSearch dashboard's default user.\n",
                        "type": "string"
                    },
                    "uri": {
                        "description": "The full URI for connecting to the database cluster.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "urn": {
                        "description": "The uniform resource name of the database cluster.\n",
                        "type": "string"
                    },
                    "user": {
                        "description": "Username for the cluster's default user.\n",
                        "type": "string"
                    },
                    "version": {
                        "description": "Engine version used by the cluster (ex. \u003cspan pulumi-lang-nodejs=\"`11`\" pulumi-lang-dotnet=\"`11`\" pulumi-lang-go=\"`11`\" pulumi-lang-python=\"`11`\" pulumi-lang-yaml=\"`11`\" pulumi-lang-java=\"`11`\"\u003e`11`\u003c/span\u003e for PostgreSQL 11).\n",
                        "type": "string"
                    }
                },
                "required": [
                    "database",
                    "engine",
                    "host",
                    "maintenanceWindows",
                    "metricsEndpoints",
                    "name",
                    "nodeCount",
                    "password",
                    "port",
                    "privateHost",
                    "privateNetworkUuid",
                    "privateUri",
                    "projectId",
                    "region",
                    "size",
                    "storageSizeMib",
                    "uiDatabase",
                    "uiHost",
                    "uiPassword",
                    "uiPort",
                    "uiUri",
                    "uiUser",
                    "uri",
                    "urn",
                    "user",
                    "version",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDatabaseConnectionPool:getDatabaseConnectionPool": {
            "description": "Provides information on a DigitalOcean PostgreSQL database connection pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nconst read_only = example.then(example =\u003e digitalocean.getDatabaseConnectionPool({\n    clusterId: example.id,\n    name: \"pool-01\",\n}));\nexport const connectionPoolUriOutput = read_only.then(read_only =\u003e read_only.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\nread_only = digitalocean.get_database_connection_pool(cluster_id=example.id,\n    name=\"pool-01\")\npulumi.export(\"connectionPoolUriOutput\", read_only.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    var read_only = DigitalOcean.GetDatabaseConnectionPool.Invoke(new()\n    {\n        ClusterId = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"pool-01\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectionPoolUriOutput\"] = read_only.Apply(read_only =\u003e read_only.Apply(getDatabaseConnectionPoolResult =\u003e getDatabaseConnectionPoolResult.Uri)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tread_only, err := digitalocean.LookupDatabaseConnectionPool(ctx, \u0026digitalocean.LookupDatabaseConnectionPoolArgs{\n\t\t\tClusterId: example.Id,\n\t\t\tName:      \"pool-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectionPoolUriOutput\", read_only.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.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseConnectionPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        final var read-only = DigitaloceanFunctions.getDatabaseConnectionPool(GetDatabaseConnectionPoolArgs.builder()\n            .clusterId(example.id())\n            .name(\"pool-01\")\n            .build());\n\n        ctx.export(\"connectionPoolUriOutput\", read_only.uri());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseCluster\n      arguments:\n        name: example-cluster\n  read-only:\n    fn::invoke:\n      function: digitalocean:getDatabaseConnectionPool\n      arguments:\n        clusterId: ${example.id}\n        name: pool-01\noutputs:\n  connectionPoolUriOutput: ${[\"read-only\"].uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDatabaseConnectionPool.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the original source database cluster.\n",
                        "willReplaceOnChanges": true
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the database connection pool.\n",
                        "willReplaceOnChanges": true
                    }
                },
                "type": "object",
                "required": [
                    "clusterId",
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getDatabaseConnectionPool.\n",
                "properties": {
                    "clusterId": {
                        "type": "string"
                    },
                    "dbName": {
                        "description": "Name of the connection pool's default database.\n",
                        "type": "string"
                    },
                    "host": {
                        "description": "Connection pool hostname.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "mode": {
                        "description": "The transaction mode for the connection pool.\n",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "password": {
                        "description": "Password for the connection pool's default user.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "port": {
                        "description": "Network port that the connection pool is listening on.\n",
                        "type": "integer"
                    },
                    "privateHost": {
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "type": "string"
                    },
                    "privateUri": {
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "size": {
                        "description": "Size of the connection pool.\n",
                        "type": "integer"
                    },
                    "uri": {
                        "description": "The full URI for connecting to the database connection pool.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "user": {
                        "description": "Username for the connection pool's default user.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "clusterId",
                    "dbName",
                    "host",
                    "mode",
                    "name",
                    "password",
                    "port",
                    "privateHost",
                    "privateUri",
                    "size",
                    "uri",
                    "user",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDatabaseMetricsCredentials:getDatabaseMetricsCredentials": {
            "description": "Provides access to the metrics credentials for DigitalOcean database clusters. These credentials are account-wide and can be used to access metrics for any database cluster in the account.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseMetricsCredentials({});\nexport const metricsUsername = example.then(example =\u003e example.username);\nexport const metricsPassword = example.then(example =\u003e example.password);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_metrics_credentials()\npulumi.export(\"metricsUsername\", example.username)\npulumi.export(\"metricsPassword\", example.password)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseMetricsCredentials.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"metricsUsername\"] = example.Apply(getDatabaseMetricsCredentialsResult =\u003e getDatabaseMetricsCredentialsResult.Username),\n        [\"metricsPassword\"] = example.Apply(getDatabaseMetricsCredentialsResult =\u003e getDatabaseMetricsCredentialsResult.Password),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetDatabaseMetricsCredentials(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"metricsUsername\", example.Username)\n\t\tctx.Export(\"metricsPassword\", example.Password)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseMetricsCredentials(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n        ctx.export(\"metricsUsername\", example.username());\n        ctx.export(\"metricsPassword\", example.password());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseMetricsCredentials\n      arguments: {}\noutputs:\n  metricsUsername: ${example.username}\n  metricsPassword: ${example.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "outputs": {
                "description": "A collection of values returned by getDatabaseMetricsCredentials.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "password": {
                        "description": "The password for accessing database metrics. This is marked as sensitive.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "username": {
                        "description": "The username for accessing database metrics.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "password",
                    "username",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDatabaseReplica:getDatabaseReplica": {
            "description": "Provides information on a DigitalOcean database replica.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDatabaseCluster({\n    name: \"example-cluster\",\n});\nconst read_only = example.then(example =\u003e digitalocean.getDatabaseReplica({\n    clusterId: example.id,\n    name: \"terra-test-ro\",\n}));\nexport const replicaOutput = read_only.then(read_only =\u003e read_only.uri);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_database_cluster(name=\"example-cluster\")\nread_only = digitalocean.get_database_replica(cluster_id=example.id,\n    name=\"terra-test-ro\")\npulumi.export(\"replicaOutput\", read_only.uri)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"example-cluster\",\n    });\n\n    var read_only = DigitalOcean.GetDatabaseReplica.Invoke(new()\n    {\n        ClusterId = example.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"terra-test-ro\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"replicaOutput\"] = read_only.Apply(read_only =\u003e read_only.Apply(getDatabaseReplicaResult =\u003e getDatabaseReplicaResult.Uri)),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"example-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tread_only, err := digitalocean.LookupDatabaseReplica(ctx, \u0026digitalocean.LookupDatabaseReplicaArgs{\n\t\t\tClusterId: example.Id,\n\t\t\tName:      \"terra-test-ro\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"replicaOutput\", read_only.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.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseReplicaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"example-cluster\")\n            .build());\n\n        final var read-only = DigitaloceanFunctions.getDatabaseReplica(GetDatabaseReplicaArgs.builder()\n            .clusterId(example.id())\n            .name(\"terra-test-ro\")\n            .build());\n\n        ctx.export(\"replicaOutput\", read_only.uri());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseCluster\n      arguments:\n        name: example-cluster\n  read-only:\n    fn::invoke:\n      function: digitalocean:getDatabaseReplica\n      arguments:\n        clusterId: ${example.id}\n        name: terra-test-ro\noutputs:\n  replicaOutput: ${[\"read-only\"].uri}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDatabaseReplica.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the original source database cluster.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name for the database replica.\n"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tag names to be applied to the database replica.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId",
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getDatabaseReplica.\n",
                "properties": {
                    "clusterId": {
                        "type": "string"
                    },
                    "database": {
                        "description": "Name of the replica's default database.\n",
                        "type": "string"
                    },
                    "host": {
                        "description": "Database replica's hostname.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "password": {
                        "description": "Password for the replica's default user.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "port": {
                        "description": "Network port that the database replica is listening on.\n",
                        "type": "integer"
                    },
                    "privateHost": {
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`host`\" pulumi-lang-dotnet=\"`Host`\" pulumi-lang-go=\"`host`\" pulumi-lang-python=\"`host`\" pulumi-lang-yaml=\"`host`\" pulumi-lang-java=\"`host`\"\u003e`host`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "type": "string"
                    },
                    "privateNetworkUuid": {
                        "type": "string"
                    },
                    "privateUri": {
                        "description": "Same as \u003cspan pulumi-lang-nodejs=\"`uri`\" pulumi-lang-dotnet=\"`Uri`\" pulumi-lang-go=\"`uri`\" pulumi-lang-python=\"`uri`\" pulumi-lang-yaml=\"`uri`\" pulumi-lang-java=\"`uri`\"\u003e`uri`\u003c/span\u003e, but only accessible from resources within the account and in the same region.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "storageSizeMib": {
                        "type": "string"
                    },
                    "tags": {
                        "description": "A list of tag names to be applied to the database replica.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "uri": {
                        "description": "The full URI for connecting to the database replica.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "user": {
                        "description": "Username for the replica's default user.\n",
                        "type": "string"
                    },
                    "uuid": {
                        "description": "The UUID of the database replica.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "clusterId",
                    "database",
                    "host",
                    "name",
                    "password",
                    "port",
                    "privateHost",
                    "privateNetworkUuid",
                    "privateUri",
                    "region",
                    "storageSizeMib",
                    "uri",
                    "user",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDatabaseUser:getDatabaseUser": {
            "description": "Provides information on a DigitalOcean database user resource.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst main = digitalocean.getDatabaseCluster({\n    name: \"main-cluster\",\n});\nconst example = main.then(main =\u003e digitalocean.getDatabaseUser({\n    clusterId: main.id,\n    name: \"example-user\",\n}));\nexport const databaseUserPassword = example.then(example =\u003e example.password);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmain = digitalocean.get_database_cluster(name=\"main-cluster\")\nexample = digitalocean.get_database_user(cluster_id=main.id,\n    name=\"example-user\")\npulumi.export(\"databaseUserPassword\", example.password)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = DigitalOcean.GetDatabaseCluster.Invoke(new()\n    {\n        Name = \"main-cluster\",\n    });\n\n    var example = DigitalOcean.GetDatabaseUser.Invoke(new()\n    {\n        ClusterId = main.Apply(getDatabaseClusterResult =\u003e getDatabaseClusterResult.Id),\n        Name = \"example-user\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"databaseUserPassword\"] = example.Apply(getDatabaseUserResult =\u003e getDatabaseUserResult.Password),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := digitalocean.LookupDatabaseCluster(ctx, \u0026digitalocean.LookupDatabaseClusterArgs{\n\t\t\tName: \"main-cluster\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := digitalocean.LookupDatabaseUser(ctx, \u0026digitalocean.LookupDatabaseUserArgs{\n\t\t\tClusterId: main.Id,\n\t\t\tName:      \"example-user\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"databaseUserPassword\", example.Password)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDatabaseClusterArgs;\nimport com.pulumi.digitalocean.inputs.GetDatabaseUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = DigitaloceanFunctions.getDatabaseCluster(GetDatabaseClusterArgs.builder()\n            .name(\"main-cluster\")\n            .build());\n\n        final var example = DigitaloceanFunctions.getDatabaseUser(GetDatabaseUserArgs.builder()\n            .clusterId(main.id())\n            .name(\"example-user\")\n            .build());\n\n        ctx.export(\"databaseUserPassword\", example.password());\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: digitalocean:getDatabaseCluster\n      arguments:\n        name: main-cluster\n  example:\n    fn::invoke:\n      function: digitalocean:getDatabaseUser\n      arguments:\n        clusterId: ${main.id}\n        name: example-user\noutputs:\n  databaseUserPassword: ${example.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDatabaseUser.\n",
                "properties": {
                    "clusterId": {
                        "type": "string",
                        "description": "The ID of the database cluster.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the database user.\n"
                    }
                },
                "type": "object",
                "required": [
                    "clusterId",
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getDatabaseUser.\n",
                "properties": {
                    "accessCert": {
                        "description": "Access certificate for TLS client authentication. (Kafka only)\n",
                        "secret": true,
                        "type": "string"
                    },
                    "accessKey": {
                        "description": "Access key for TLS client authentication. (Kafka only)\n",
                        "secret": true,
                        "type": "string"
                    },
                    "clusterId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "mysqlAuthPlugin": {
                        "description": "The authentication method of the MySQL user. The value will be \u003cspan 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`\"\u003e`mysql_native_password`\u003c/span\u003e or \u003cspan 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`\"\u003e`caching_sha2_password`\u003c/span\u003e.\n",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "password": {
                        "description": "The password of the database user. This will not be set for MongoDB users.\n",
                        "secret": true,
                        "type": "string"
                    },
                    "role": {
                        "description": "The role of the database user. The value will be either \u003cspan pulumi-lang-nodejs=\"`primary`\" pulumi-lang-dotnet=\"`Primary`\" pulumi-lang-go=\"`primary`\" pulumi-lang-python=\"`primary`\" pulumi-lang-yaml=\"`primary`\" pulumi-lang-java=\"`primary`\"\u003e`primary`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`normal`\" pulumi-lang-dotnet=\"`Normal`\" pulumi-lang-go=\"`normal`\" pulumi-lang-python=\"`normal`\" pulumi-lang-yaml=\"`normal`\" pulumi-lang-java=\"`normal`\"\u003e`normal`\u003c/span\u003e.\n",
                        "type": "string"
                    },
                    "settings": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDatabaseUserSetting:getDatabaseUserSetting"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "accessCert",
                    "accessKey",
                    "clusterId",
                    "mysqlAuthPlugin",
                    "name",
                    "password",
                    "role",
                    "settings",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDomain:getDomain": {
            "description": "Get information on a domain. This data source provides the name, TTL, and zone\nfile as configured on your DigitalOcean account. This is useful if the domain\nname in question is not managed by Terraform or you need to utilize TTL or zone\nfile data.\n\nAn error is triggered if the provided domain name is not managed with your\nDigitalOcean account.\n\n## Example Usage\n\nGet the zone file for a domain:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDomain({\n    name: \"example.com\",\n});\nexport const domainOutput = example.then(example =\u003e example.zoneFile);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_domain(name=\"example.com\")\npulumi.export(\"domainOutput\", example.zone_file)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDomain.Invoke(new()\n    {\n        Name = \"example.com\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"domainOutput\"] = example.Apply(getDomainResult =\u003e getDomainResult.ZoneFile),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDomain(ctx, \u0026digitalocean.LookupDomainArgs{\n\t\t\tName: \"example.com\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"domainOutput\", example.ZoneFile)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.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 example = DigitaloceanFunctions.getDomain(GetDomainArgs.builder()\n            .name(\"example.com\")\n            .build());\n\n        ctx.export(\"domainOutput\", example.zoneFile());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDomain\n      arguments:\n        name: example.com\noutputs:\n  domainOutput: ${example.zoneFile}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\n  $ pulumi up\n\ndata.digitalocean_domain.example: Refreshing state...\n\nApply complete! Resources: 0 added, 0 changed, 0 destroyed.\n\nOutputs:\n\ndomain_output = $ORIGIN example.com.\n$TTL 1800\nexample.com. IN SOA ns1.digitalocean.com. hostmaster.example.com. 1516944700 10800 3600 604800 1800\nexample.com. 1800 IN NS ns1.digitalocean.com.\nexample.com. 1800 IN NS ns2.digitalocean.com.\nexample.com. 1800 IN NS ns3.digitalocean.com.\nwww.example.com. 3600 IN A 176.107.155.137\ndb.example.com. 3600 IN A 179.189.166.115\njira.example.com. 3600 IN A 207.189.228.15\n```\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDomain.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the domain.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getDomain.\n",
                "properties": {
                    "domainUrn": {
                        "description": "The uniform resource name of the domain\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "ttl": {
                        "description": "The TTL of the domain.\n",
                        "type": "integer"
                    },
                    "zoneFile": {
                        "description": "The zone file of the domain.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "name",
                    "ttl",
                    "domainUrn",
                    "zoneFile",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDomains:getDomains": {
            "description": "Get information on domains for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all domains will be returned.\n\nThis data source is useful if the domains in question are not managed by Terraform or you need to\nutilize any of the domains' data.\n\nNote: You can use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.Domain`\" pulumi-lang-dotnet=\"`digitalocean.Domain`\" pulumi-lang-go=\"`Domain`\" pulumi-lang-python=\"`Domain`\" pulumi-lang-yaml=\"`digitalocean.Domain`\" pulumi-lang-java=\"`digitalocean.Domain`\"\u003e`digitalocean.Domain`\u003c/span\u003e data source to obtain metadata\nabout a single domain if you already know the \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n\n## Example Usage\n\nUse the \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block with a \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e string and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e list to filter domains. (This example\nalso uses the regular expression \u003cspan pulumi-lang-nodejs=\"`matchBy`\" pulumi-lang-dotnet=\"`MatchBy`\" pulumi-lang-go=\"`matchBy`\" pulumi-lang-python=\"`match_by`\" pulumi-lang-yaml=\"`matchBy`\" pulumi-lang-java=\"`matchBy`\"\u003e`match_by`\u003c/span\u003e mode in order to match domains by suffix.)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst examples = digitalocean.getDomains({\n    filters: [{\n        key: \"name\",\n        values: [\"example\\\\.com$\"],\n        matchBy: \"re\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexamples = digitalocean.get_domains(filters=[{\n    \"key\": \"name\",\n    \"values\": [\"example\\\\.com$\"],\n    \"match_by\": \"re\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var examples = DigitalOcean.GetDomains.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDomainsFilterInputArgs\n            {\n                Key = \"name\",\n                Values = new[]\n                {\n                    \"example\\\\.com$\",\n                },\n                MatchBy = \"re\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDomains(ctx, \u0026digitalocean.GetDomainsArgs{\n\t\t\tFilters: []digitalocean.GetDomainsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"example\\\\.com$\",\n\t\t\t\t\t},\n\t\t\t\t\tMatchBy: pulumi.StringRef(\"re\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDomainsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 examples = DigitaloceanFunctions.getDomains(GetDomainsArgs.builder()\n            .filters(GetDomainsFilterArgs.builder()\n                .key(\"name\")\n                .values(\"example\\\\.com$\")\n                .matchBy(\"re\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  examples:\n    fn::invoke:\n      function: digitalocean:getDomains\n      arguments:\n        filters:\n          - key: name\n            values:\n              - example\\.com$\n            matchBy: re\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDomains.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDomainsFilter:getDomainsFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDomainsSort:getDomainsSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDomains.\n",
                "properties": {
                    "domains": {
                        "description": "A list of domains satisfying any \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e criteria. Each domain has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDomainsDomain:getDomainsDomain"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDomainsFilter:getDomainsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDomainsSort:getDomainsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "domains",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDroplet:getDroplet": {
            "description": "Get information on a Droplet for use in other resources. This data source provides\nall of the Droplet's properties as configured on your DigitalOcean account. This\nis useful if the Droplet in question is not managed by Terraform or you need to\nutilize any of the Droplet's data.\n\n**Note:** This data source returns a single Droplet. When specifying a \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e, an\nerror is triggered if more than one Droplet is found.\n\n## Example Usage\n\nGet the Droplet by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    name: \"web\",\n});\nexport const dropletOutput = example.then(example =\u003e example.ipv4Address);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(name=\"web\")\npulumi.export(\"dropletOutput\", example.ipv4_address)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Name = \"web\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"dropletOutput\"] = example.Apply(getDropletResult =\u003e getDropletResult.Ipv4Address),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tName: pulumi.StringRef(\"web\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dropletOutput\", example.Ipv4Address)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .name(\"web\")\n            .build());\n\n        ctx.export(\"dropletOutput\", example.ipv4Address());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDroplet\n      arguments:\n        name: web\noutputs:\n  dropletOutput: ${example.ipv4Address}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the Droplet by tag:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    tag: \"web\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(tag=\"web\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Tag = \"web\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tTag: pulumi.StringRef(\"web\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .tag(\"web\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDroplet\n      arguments:\n        tag: web\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the Droplet by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getDroplet({\n    id: exampleDigitaloceanKubernetesCluster.nodePool[0].nodes[0].dropletId,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_droplet(id=example_digitalocean_kubernetes_cluster[\"nodePool\"][0][\"nodes\"][0][\"dropletId\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetDroplet.Invoke(new()\n    {\n        Id = exampleDigitaloceanKubernetesCluster.NodePool[0].Nodes[0].DropletId,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDroplet(ctx, \u0026digitalocean.LookupDropletArgs{\n\t\t\tId: pulumi.IntRef(exampleDigitaloceanKubernetesCluster.NodePool[0].Nodes[0].DropletId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getDroplet(GetDropletArgs.builder()\n            .id(exampleDigitaloceanKubernetesCluster.nodePool()[0].nodes()[0].dropletId())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getDroplet\n      arguments:\n        id: ${exampleDigitaloceanKubernetesCluster.nodePool[0].nodes[0].dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDroplet.\n",
                "properties": {
                    "gpu": {
                        "type": "boolean",
                        "description": "A boolean value specifying whether or not to search GPU Droplets\n"
                    },
                    "id": {
                        "type": "integer",
                        "description": "The ID of the Droplet\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Droplet.\n"
                    },
                    "tag": {
                        "type": "string",
                        "description": "A tag applied to the Droplet.\n\nTo include GPU Droplets when searching by name, use:\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDroplet.\n",
                "properties": {
                    "backups": {
                        "description": "Whether backups are enabled.\n",
                        "type": "boolean"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "disk": {
                        "description": "The size of the Droplets disk in GB.\n",
                        "type": "integer"
                    },
                    "gpu": {
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The ID of the Droplet.\n",
                        "type": "integer"
                    },
                    "image": {
                        "description": "The Droplet image ID or slug.\n",
                        "type": "string"
                    },
                    "ipv4Address": {
                        "description": "The Droplets public IPv4 address\n",
                        "type": "string"
                    },
                    "ipv4AddressPrivate": {
                        "description": "The Droplets private IPv4 address\n",
                        "type": "string"
                    },
                    "ipv6": {
                        "description": "Whether IPv6 is enabled.\n",
                        "type": "boolean"
                    },
                    "ipv6Address": {
                        "description": "The Droplets public IPv6 address\n",
                        "type": "string"
                    },
                    "ipv6AddressPrivate": {
                        "description": "The Droplets private IPv6 address\n",
                        "type": "string"
                    },
                    "locked": {
                        "description": "Whether the Droplet is locked.\n",
                        "type": "boolean"
                    },
                    "memory": {
                        "description": "The amount of the Droplets memory in MB.\n",
                        "type": "integer"
                    },
                    "monitoring": {
                        "description": "Whether monitoring agent is installed.\n",
                        "type": "boolean"
                    },
                    "name": {
                        "type": "string"
                    },
                    "priceHourly": {
                        "description": "Droplet hourly price.\n",
                        "type": "number"
                    },
                    "priceMonthly": {
                        "description": "Droplet monthly price.\n",
                        "type": "number"
                    },
                    "privateNetworking": {
                        "description": "Whether private networks are enabled.\n",
                        "type": "boolean"
                    },
                    "region": {
                        "description": "The region the Droplet is running in.\n",
                        "type": "string"
                    },
                    "size": {
                        "description": "The unique slug that identifies the type of Droplet.\n",
                        "type": "string"
                    },
                    "status": {
                        "description": "The status of the Droplet.\n",
                        "type": "string"
                    },
                    "tag": {
                        "type": "string"
                    },
                    "tags": {
                        "description": "A list of the tags associated to the Droplet.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "urn": {
                        "description": "The uniform resource name of the Droplet\n",
                        "type": "string"
                    },
                    "vcpus": {
                        "description": "The number of the Droplets virtual CPUs.\n",
                        "type": "integer"
                    },
                    "volumeIds": {
                        "description": "List of the IDs of each volumes attached to the Droplet.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "vpcUuid": {
                        "description": "The ID of the VPC where the Droplet is located.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "backups",
                    "createdAt",
                    "disk",
                    "id",
                    "image",
                    "ipv4Address",
                    "ipv4AddressPrivate",
                    "ipv6",
                    "ipv6Address",
                    "ipv6AddressPrivate",
                    "locked",
                    "memory",
                    "monitoring",
                    "name",
                    "priceHourly",
                    "priceMonthly",
                    "privateNetworking",
                    "region",
                    "size",
                    "status",
                    "tags",
                    "urn",
                    "vcpus",
                    "volumeIds",
                    "vpcUuid"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDropletAutoscale:getDropletAutoscale": {
            "description": "Get information on a Droplet Autoscale pool for use with other managed resources. This datasource provides all the\nDroplet Autoscale pool properties as configured on the DigitalOcean account. This is useful if the Droplet Autoscale \npool in question is not managed by Terraform, or any of the relevant data would need to referenced in other managed \nresources.\n\n## Example Usage\n\nGet the Droplet Autoscale pool by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst my_imported_autoscale_pool = digitalocean.getDropletAutoscale({\n    name: my_existing_autoscale_pool.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmy_imported_autoscale_pool = digitalocean.get_droplet_autoscale(name=my_existing_autoscale_pool[\"name\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_imported_autoscale_pool = DigitalOcean.GetDropletAutoscale.Invoke(new()\n    {\n        Name = my_existing_autoscale_pool.Name,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDropletAutoscale(ctx, \u0026digitalocean.LookupDropletAutoscaleArgs{\n\t\t\tName: pulumi.StringRef(my_existing_autoscale_pool.Name),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletAutoscaleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 my-imported-autoscale-pool = DigitaloceanFunctions.getDropletAutoscale(GetDropletAutoscaleArgs.builder()\n            .name(my_existing_autoscale_pool.name())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  my-imported-autoscale-pool:\n    fn::invoke:\n      function: digitalocean:getDropletAutoscale\n      arguments:\n        name: ${[\"my-existing-autoscale-pool\"].name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the Droplet Autoscale pool by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst my_imported_autoscale_pool = digitalocean.getDropletAutoscale({\n    id: my_existing_autoscale_pool.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmy_imported_autoscale_pool = digitalocean.get_droplet_autoscale(id=my_existing_autoscale_pool[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_imported_autoscale_pool = DigitalOcean.GetDropletAutoscale.Invoke(new()\n    {\n        Id = my_existing_autoscale_pool.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDropletAutoscale(ctx, \u0026digitalocean.LookupDropletAutoscaleArgs{\n\t\t\tId: pulumi.StringRef(my_existing_autoscale_pool.Id),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletAutoscaleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 my-imported-autoscale-pool = DigitaloceanFunctions.getDropletAutoscale(GetDropletAutoscaleArgs.builder()\n            .id(my_existing_autoscale_pool.id())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  my-imported-autoscale-pool:\n    fn::invoke:\n      function: digitalocean:getDropletAutoscale\n      arguments:\n        id: ${[\"my-existing-autoscale-pool\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDropletAutoscale.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The ID of Droplet Autoscale pool.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of Droplet Autoscale pool.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDropletAutoscale.\n",
                "properties": {
                    "configs": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDropletAutoscaleConfig:getDropletAutoscaleConfig"
                        },
                        "type": "array"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "currentUtilizations": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDropletAutoscaleCurrentUtilization:getDropletAutoscaleCurrentUtilization"
                        },
                        "type": "array"
                    },
                    "dropletTemplates": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDropletAutoscaleDropletTemplate:getDropletAutoscaleDropletTemplate"
                        },
                        "type": "array"
                    },
                    "id": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "updatedAt": {
                        "type": "string"
                    }
                },
                "required": [
                    "configs",
                    "createdAt",
                    "currentUtilizations",
                    "dropletTemplates",
                    "status",
                    "updatedAt"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDropletSnapshot:getDropletSnapshot": {
            "description": "Droplet snapshots are saved instances of a Droplet. Use this data\nsource to retrieve the ID of a DigitalOcean Droplet snapshot for use in other\nresources.\n\n## Example Usage\n\nGet the Droplet snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web_snapshot = digitalocean.getDropletSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb_snapshot = digitalocean.get_droplet_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web_snapshot = DigitalOcean.GetDropletSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupDropletSnapshot(ctx, \u0026digitalocean.LookupDropletSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 web-snapshot = DigitaloceanFunctions.getDropletSnapshot(GetDropletSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  web-snapshot:\n    fn::invoke:\n      function: digitalocean:getDropletSnapshot\n      arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate image from snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst web_snapshot = digitalocean.getDropletSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\nconst from_snapshot = new digitalocean.Droplet(\"from-snapshot\", {\n    image: web_snapshot.then(web_snapshot =\u003e web_snapshot.id),\n    name: \"web-02\",\n    region: digitalocean.Region.NYC3,\n    size: digitalocean.DropletSlug.DropletS2VCPU4GB,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nweb_snapshot = digitalocean.get_droplet_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\nfrom_snapshot = digitalocean.Droplet(\"from-snapshot\",\n    image=web_snapshot.id,\n    name=\"web-02\",\n    region=digitalocean.Region.NYC3,\n    size=digitalocean.DropletSlug.DROPLET_S2_VCPU4_GB)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var web_snapshot = DigitalOcean.GetDropletSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n    var from_snapshot = new DigitalOcean.Droplet(\"from-snapshot\", new()\n    {\n        Image = web_snapshot.Apply(web_snapshot =\u003e web_snapshot.Apply(getDropletSnapshotResult =\u003e getDropletSnapshotResult.Id)),\n        Name = \"web-02\",\n        Region = DigitalOcean.Region.NYC3,\n        Size = DigitalOcean.DropletSlug.DropletS2VCPU4GB,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tweb_snapshot, err := digitalocean.LookupDropletSnapshot(ctx, \u0026digitalocean.LookupDropletSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"from-snapshot\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(web_snapshot.Id),\n\t\t\tName:   pulumi.String(\"web-02\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS2VCPU4GB),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletSnapshotArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 web-snapshot = DigitaloceanFunctions.getDropletSnapshot(GetDropletSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n        var from_snapshot = new Droplet(\"from-snapshot\", DropletArgs.builder()\n            .image(web_snapshot.id())\n            .name(\"web-02\")\n            .region(\"nyc3\")\n            .size(\"s-2vcpu-4gb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  from-snapshot:\n    type: digitalocean:Droplet\n    properties:\n      image: ${[\"web-snapshot\"].id}\n      name: web-02\n      region: nyc3\n      size: s-2vcpu-4gb\nvariables:\n  web-snapshot:\n    fn::invoke:\n      function: digitalocean:getDropletSnapshot\n      arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDropletSnapshot.\n",
                "properties": {
                    "mostRecent": {
                        "type": "boolean",
                        "description": "If more than one result is returned, use the most recent Droplet snapshot.\n\n\u003e **NOTE:** If more or less than a single match is returned by the search,\nTerraform will fail. Ensure that your search is specific enough to return\na single Droplet snapshot ID only, or use \u003cspan pulumi-lang-nodejs=\"`mostRecent`\" pulumi-lang-dotnet=\"`MostRecent`\" pulumi-lang-go=\"`mostRecent`\" pulumi-lang-python=\"`most_recent`\" pulumi-lang-yaml=\"`mostRecent`\" pulumi-lang-java=\"`mostRecent`\"\u003e`most_recent`\u003c/span\u003e to choose the most recent one.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the Droplet snapshot.\n"
                    },
                    "nameRegex": {
                        "type": "string",
                        "description": "A regex string to apply to the Droplet snapshot list returned by DigitalOcean. This allows more advanced filtering not supported from the DigitalOcean API. This filtering is done locally on what DigitalOcean returns.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "A \"slug\" representing a DigitalOcean region (e.g. \u003cspan pulumi-lang-nodejs=\"`nyc1`\" pulumi-lang-dotnet=\"`Nyc1`\" pulumi-lang-go=\"`nyc1`\" pulumi-lang-python=\"`nyc1`\" pulumi-lang-yaml=\"`nyc1`\" pulumi-lang-java=\"`nyc1`\"\u003e`nyc1`\u003c/span\u003e). If set, only Droplet snapshots available in the region will be returned.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDropletSnapshot.\n",
                "properties": {
                    "createdAt": {
                        "description": "The date and time the Droplet snapshot was created.\n",
                        "type": "string"
                    },
                    "dropletId": {
                        "description": "The ID of the Droplet from which the Droplet snapshot originated.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "minDiskSize": {
                        "description": "The minimum size in gigabytes required for a Droplet to be created based on this Droplet snapshot.\n",
                        "type": "integer"
                    },
                    "mostRecent": {
                        "type": "boolean"
                    },
                    "name": {
                        "type": "string"
                    },
                    "nameRegex": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "regions": {
                        "description": "A list of DigitalOcean region \"slugs\" indicating where the Droplet snapshot is available.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "size": {
                        "description": "The billable size of the Droplet snapshot in gigabytes.\n",
                        "type": "number"
                    }
                },
                "required": [
                    "createdAt",
                    "dropletId",
                    "minDiskSize",
                    "regions",
                    "size",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getDroplets:getDroplets": {
            "description": "Get information on Droplets for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all Droplets will be returned.\n\nThis data source is useful if the Droplets in question are not managed by Terraform or you need to\nutilize any of the Droplets' data.\n\nBy default, only non-GPU Droplets are returned. To list only GPU Droplets, set\nthe \u003cspan pulumi-lang-nodejs=\"`gpus`\" pulumi-lang-dotnet=\"`Gpus`\" pulumi-lang-go=\"`gpus`\" pulumi-lang-python=\"`gpus`\" pulumi-lang-yaml=\"`gpus`\" pulumi-lang-java=\"`gpus`\"\u003e`gpus`\u003c/span\u003e attribute to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n\nNote: You can use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.Droplet`\" pulumi-lang-dotnet=\"`digitalocean.Droplet`\" pulumi-lang-go=\"`Droplet`\" pulumi-lang-python=\"`Droplet`\" pulumi-lang-yaml=\"`digitalocean.Droplet`\" pulumi-lang-java=\"`digitalocean.Droplet`\"\u003e`digitalocean.Droplet`\u003c/span\u003e data source to obtain metadata\nabout a single Droplet if you already know the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e, unique \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, or unique \u003cspan pulumi-lang-nodejs=\"`tag`\" pulumi-lang-dotnet=\"`Tag`\" pulumi-lang-go=\"`tag`\" pulumi-lang-python=\"`tag`\" pulumi-lang-yaml=\"`tag`\" pulumi-lang-java=\"`tag`\"\u003e`tag`\u003c/span\u003e to retrieve.\n\n## Example Usage\n\nUse the \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block with a \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e string and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e list to filter images.\n\nFor example to find all Droplets with size `s-1vcpu-1gb`:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst small = digitalocean.getDroplets({\n    filters: [{\n        key: \"size\",\n        values: [\"s-1vcpu-1gb\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsmall = digitalocean.get_droplets(filters=[{\n    \"key\": \"size\",\n    \"values\": [\"s-1vcpu-1gb\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var small = DigitalOcean.GetDroplets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"size\",\n                Values = new[]\n                {\n                    \"s-1vcpu-1gb\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDroplets(ctx, \u0026digitalocean.GetDropletsArgs{\n\t\t\tFilters: []digitalocean.GetDropletsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"size\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"s-1vcpu-1gb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 small = DigitaloceanFunctions.getDroplets(GetDropletsArgs.builder()\n            .filters(GetDropletsFilterArgs.builder()\n                .key(\"size\")\n                .values(\"s-1vcpu-1gb\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  small:\n    fn::invoke:\n      function: digitalocean:getDroplets\n      arguments:\n        filters:\n          - key: size\n            values:\n              - s-1vcpu-1gb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst small_with_backups = digitalocean.getDroplets({\n    filters: [\n        {\n            key: \"size\",\n            values: [\"s-1vcpu-1gb\"],\n        },\n        {\n            key: \"backups\",\n            values: [\"true\"],\n        },\n    ],\n    sorts: [{\n        key: \"created_at\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsmall_with_backups = digitalocean.get_droplets(filters=[\n        {\n            \"key\": \"size\",\n            \"values\": [\"s-1vcpu-1gb\"],\n        },\n        {\n            \"key\": \"backups\",\n            \"values\": [\"true\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"created_at\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var small_with_backups = DigitalOcean.GetDroplets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"size\",\n                Values = new[]\n                {\n                    \"s-1vcpu-1gb\",\n                },\n            },\n            new DigitalOcean.Inputs.GetDropletsFilterInputArgs\n            {\n                Key = \"backups\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetDropletsSortInputArgs\n            {\n                Key = \"created_at\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetDroplets(ctx, \u0026digitalocean.GetDropletsArgs{\n\t\t\tFilters: []digitalocean.GetDropletsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"size\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"s-1vcpu-1gb\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"backups\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetDropletsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"created_at\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetDropletsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 small-with-backups = DigitaloceanFunctions.getDroplets(GetDropletsArgs.builder()\n            .filters(            \n                GetDropletsFilterArgs.builder()\n                    .key(\"size\")\n                    .values(\"s-1vcpu-1gb\")\n                    .build(),\n                GetDropletsFilterArgs.builder()\n                    .key(\"backups\")\n                    .values(\"true\")\n                    .build())\n            .sorts(GetDropletsSortArgs.builder()\n                .key(\"created_at\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  small-with-backups:\n    fn::invoke:\n      function: digitalocean:getDroplets\n      arguments:\n        filters:\n          - key: size\n            values:\n              - s-1vcpu-1gb\n          - key: backups\n            values:\n              - 'true'\n        sorts:\n          - key: created_at\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getDroplets.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDropletsFilter:getDropletsFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "gpus": {
                        "type": "boolean",
                        "description": "A boolean value specifying whether or not to list GPU Droplets\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDropletsSort:getDropletsSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getDroplets.\n",
                "properties": {
                    "droplets": {
                        "description": "A list of Droplets satisfying any \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e criteria. Each Droplet has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDropletsDroplet:getDropletsDroplet"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDropletsFilter:getDropletsFilter"
                        },
                        "type": "array"
                    },
                    "gpus": {
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getDropletsSort:getDropletsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "droplets",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getFirewall:getFirewall": {
            "description": "Get information on a DigitalOcean Firewall.\n\n## Example Usage\n\nGet the firewall:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getFirewall({\n    firewallId: \"1df48973-6eef-4214-854f-fa7726e7e583\",\n});\nexport const exampleFirewallName = example.then(example =\u003e example.name);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_firewall(firewall_id=\"1df48973-6eef-4214-854f-fa7726e7e583\")\npulumi.export(\"exampleFirewallName\", example.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetFirewall.Invoke(new()\n    {\n        FirewallId = \"1df48973-6eef-4214-854f-fa7726e7e583\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"exampleFirewallName\"] = example.Apply(getFirewallResult =\u003e getFirewallResult.Name),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupFirewall(ctx, \u0026digitalocean.LookupFirewallArgs{\n\t\t\tFirewallId: \"1df48973-6eef-4214-854f-fa7726e7e583\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"exampleFirewallName\", example.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetFirewallArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getFirewall(GetFirewallArgs.builder()\n            .firewallId(\"1df48973-6eef-4214-854f-fa7726e7e583\")\n            .build());\n\n        ctx.export(\"exampleFirewallName\", example.name());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getFirewall\n      arguments:\n        firewallId: 1df48973-6eef-4214-854f-fa7726e7e583\noutputs:\n  exampleFirewallName: ${example.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getFirewall.\n",
                "properties": {
                    "dropletIds": {
                        "type": "array",
                        "items": {
                            "type": "integer"
                        },
                        "description": "The list of the IDs of the Droplets assigned to\nthe Firewall.\n"
                    },
                    "firewallId": {
                        "type": "string",
                        "description": "The ID of the firewall to retrieve information\nabout.\n"
                    },
                    "inboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getFirewallInboundRule:getFirewallInboundRule"
                        }
                    },
                    "outboundRules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getFirewallOutboundRule:getFirewallOutboundRule"
                        }
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The names of the Tags assigned to the Firewall.\n"
                    }
                },
                "type": "object",
                "required": [
                    "firewallId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getFirewall.\n",
                "properties": {
                    "createdAt": {
                        "description": "A time value given in ISO8601 combined date and time format\nthat represents when the Firewall was created.\n",
                        "type": "string"
                    },
                    "dropletIds": {
                        "description": "The list of the IDs of the Droplets assigned to\nthe Firewall.\n",
                        "items": {
                            "type": "integer"
                        },
                        "type": "array"
                    },
                    "firewallId": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "inboundRules": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getFirewallInboundRule:getFirewallInboundRule"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "The name of the Firewall.\n",
                        "type": "string"
                    },
                    "outboundRules": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getFirewallOutboundRule:getFirewallOutboundRule"
                        },
                        "type": "array"
                    },
                    "pendingChanges": {
                        "description": "A set of object containing the fields, \u003cspan pulumi-lang-nodejs=\"`dropletId`\" pulumi-lang-dotnet=\"`DropletId`\" pulumi-lang-go=\"`dropletId`\" pulumi-lang-python=\"`droplet_id`\" pulumi-lang-yaml=\"`dropletId`\" pulumi-lang-java=\"`dropletId`\"\u003e`droplet_id`\u003c/span\u003e,\n\u003cspan pulumi-lang-nodejs=\"`removing`\" pulumi-lang-dotnet=\"`Removing`\" pulumi-lang-go=\"`removing`\" pulumi-lang-python=\"`removing`\" pulumi-lang-yaml=\"`removing`\" pulumi-lang-java=\"`removing`\"\u003e`removing`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\"\u003e`status`\u003c/span\u003e.  It is provided to detail exactly which Droplets\nare having their security policies updated.  When empty, all changes\nhave been successfully applied.\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getFirewallPendingChange:getFirewallPendingChange"
                        },
                        "type": "array"
                    },
                    "status": {
                        "description": "A status string indicating the current state of the Firewall.\nThis can be \"waiting\", \"succeeded\", or \"failed\".\n",
                        "type": "string"
                    },
                    "tags": {
                        "description": "The names of the Tags assigned to the Firewall.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "createdAt",
                    "dropletIds",
                    "firewallId",
                    "inboundRules",
                    "name",
                    "outboundRules",
                    "pendingChanges",
                    "status",
                    "tags",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getFloatingIp:getFloatingIp": {
            "description": "\u003e **Deprecated:** DigitalOcean Floating IPs have been renamed reserved IPs. This data source will be removed in a future release. Please use \u003cspan pulumi-lang-nodejs=\"`digitalocean.ReservedIp`\" pulumi-lang-dotnet=\"`digitalocean.ReservedIp`\" pulumi-lang-go=\"`ReservedIp`\" pulumi-lang-python=\"`ReservedIp`\" pulumi-lang-yaml=\"`digitalocean.ReservedIp`\" pulumi-lang-java=\"`digitalocean.ReservedIp`\"\u003e`digitalocean.ReservedIp`\u003c/span\u003e instead.\n\nGet information on a floating ip. This data source provides the region and Droplet id\nas configured on your DigitalOcean account. This is useful if the floating IP\nin question is not managed by Terraform or you need to find the Droplet the IP is\nattached to.\n\nAn error is triggered if the provided floating IP does not exist.\n\n## Example Usage\n\nGet the floating IP:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst config = new pulumi.Config();\nconst publicIp = config.requireObject\u003cany\u003e(\"publicIp\");\nconst example = digitalocean.getFloatingIp({\n    ipAddress: publicIp,\n});\nexport const fipOutput = example.then(example =\u003e example.dropletId);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nconfig = pulumi.Config()\npublic_ip = config.require_object(\"publicIp\")\nexample = digitalocean.get_floating_ip(ip_address=public_ip)\npulumi.export(\"fipOutput\", example.droplet_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var publicIp = config.RequireObject\u003cdynamic\u003e(\"publicIp\");\n    var example = DigitalOcean.GetFloatingIp.Invoke(new()\n    {\n        IpAddress = publicIp,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"fipOutput\"] = example.Apply(getFloatingIpResult =\u003e getFloatingIpResult.DropletId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tpublicIp := cfg.RequireObject(\"publicIp\")\n\t\texample, err := digitalocean.LookupFloatingIp(ctx, \u0026digitalocean.LookupFloatingIpArgs{\n\t\t\tIpAddress: publicIp,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fipOutput\", example.DropletId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetFloatingIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var publicIp = config.require(\"publicIp\");\n        final var example = DigitaloceanFunctions.getFloatingIp(GetFloatingIpArgs.builder()\n            .ipAddress(publicIp)\n            .build());\n\n        ctx.export(\"fipOutput\", example.dropletId());\n    }\n}\n```\n```yaml\nconfiguration:\n  publicIp:\n    type: dynamic\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getFloatingIp\n      arguments:\n        ipAddress: ${publicIp}\noutputs:\n  fipOutput: ${example.dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getFloatingIp.\n",
                "properties": {
                    "ipAddress": {
                        "type": "string",
                        "description": "The allocated IP address of the specific floating IP to retrieve.\n"
                    }
                },
                "type": "object",
                "required": [
                    "ipAddress"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getFloatingIp.\n",
                "properties": {
                    "dropletId": {
                        "description": "The Droplet id that the floating IP has been assigned to.\n",
                        "type": "integer"
                    },
                    "floatingIpUrn": {
                        "description": "The uniform resource name of the floating IP.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "ipAddress": {
                        "type": "string"
                    },
                    "region": {
                        "description": "The region that the floating IP is reserved to.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "dropletId",
                    "ipAddress",
                    "region",
                    "floatingIpUrn",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiAgent:getGenaiAgent": {
            "deprecationMessage": "digitalocean.getGenaiAgent has been deprecated in favor of digitalocean.getGradientaiAgent",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiAgent.\n",
                "properties": {
                    "agentGuardrails": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentAgentGuardrail:getGenaiAgentAgentGuardrail"
                        }
                    },
                    "agentId": {
                        "type": "string"
                    },
                    "anthropicApiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentAnthropicApiKey:getGenaiAgentAnthropicApiKey"
                        }
                    },
                    "apiKeyInfos": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentApiKeyInfo:getGenaiAgentApiKeyInfo"
                        }
                    },
                    "apiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentApiKey:getGenaiAgentApiKey"
                        }
                    },
                    "chatbotIdentifiers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentChatbotIdentifier:getGenaiAgentChatbotIdentifier"
                        }
                    },
                    "chatbots": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentChatbot:getGenaiAgentChatbot"
                        }
                    },
                    "deployments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentDeployment:getGenaiAgentDeployment"
                        }
                    },
                    "description": {
                        "type": "string"
                    },
                    "functions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentFunction:getGenaiAgentFunction"
                        }
                    },
                    "ifCase": {
                        "type": "string"
                    },
                    "k": {
                        "type": "integer"
                    },
                    "knowledgeBases": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentKnowledgeBase:getGenaiAgentKnowledgeBase"
                        }
                    },
                    "maxTokens": {
                        "type": "integer"
                    },
                    "models": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentModel:getGenaiAgentModel"
                        }
                    },
                    "openAiApiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentOpenAiApiKey:getGenaiAgentOpenAiApiKey"
                        }
                    },
                    "retrievalMethod": {
                        "type": "string"
                    },
                    "routeCreatedBy": {
                        "type": "string"
                    },
                    "routeName": {
                        "type": "string"
                    },
                    "routeUuid": {
                        "type": "string"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "temperature": {
                        "type": "number"
                    },
                    "templates": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentTemplate:getGenaiAgentTemplate"
                        }
                    },
                    "topP": {
                        "type": "number"
                    },
                    "url": {
                        "type": "string"
                    },
                    "userId": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "agentId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiAgent.\n",
                "properties": {
                    "agentGuardrails": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentAgentGuardrail:getGenaiAgentAgentGuardrail"
                        },
                        "type": "array"
                    },
                    "agentId": {
                        "type": "string"
                    },
                    "anthropicApiKeys": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentAnthropicApiKey:getGenaiAgentAnthropicApiKey"
                        },
                        "type": "array"
                    },
                    "apiKeyInfos": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentApiKeyInfo:getGenaiAgentApiKeyInfo"
                        },
                        "type": "array"
                    },
                    "apiKeys": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentApiKey:getGenaiAgentApiKey"
                        },
                        "type": "array"
                    },
                    "chatbotIdentifiers": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentChatbotIdentifier:getGenaiAgentChatbotIdentifier"
                        },
                        "type": "array"
                    },
                    "chatbots": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentChatbot:getGenaiAgentChatbot"
                        },
                        "type": "array"
                    },
                    "childAgents": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentChildAgent:getGenaiAgentChildAgent"
                        },
                        "type": "array"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "deployments": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentDeployment:getGenaiAgentDeployment"
                        },
                        "type": "array"
                    },
                    "description": {
                        "type": "string"
                    },
                    "functions": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentFunction:getGenaiAgentFunction"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "ifCase": {
                        "type": "string"
                    },
                    "instruction": {
                        "type": "string"
                    },
                    "k": {
                        "type": "integer"
                    },
                    "knowledgeBases": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentKnowledgeBase:getGenaiAgentKnowledgeBase"
                        },
                        "type": "array"
                    },
                    "maxTokens": {
                        "type": "integer"
                    },
                    "modelUuid": {
                        "type": "string"
                    },
                    "models": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentModel:getGenaiAgentModel"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    },
                    "openAiApiKeys": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentOpenAiApiKey:getGenaiAgentOpenAiApiKey"
                        },
                        "type": "array"
                    },
                    "parentAgents": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentParentAgent:getGenaiAgentParentAgent"
                        },
                        "type": "array"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "retrievalMethod": {
                        "type": "string"
                    },
                    "routeCreatedAt": {
                        "type": "string"
                    },
                    "routeCreatedBy": {
                        "type": "string"
                    },
                    "routeName": {
                        "type": "string"
                    },
                    "routeUuid": {
                        "type": "string"
                    },
                    "tags": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "temperature": {
                        "type": "number"
                    },
                    "templates": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentTemplate:getGenaiAgentTemplate"
                        },
                        "type": "array"
                    },
                    "topP": {
                        "type": "number"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "url": {
                        "type": "string"
                    },
                    "userId": {
                        "type": "string"
                    }
                },
                "required": [
                    "agentId",
                    "childAgents",
                    "createdAt",
                    "instruction",
                    "models",
                    "modelUuid",
                    "name",
                    "parentAgents",
                    "projectId",
                    "region",
                    "routeCreatedAt",
                    "updatedAt",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiAgentVersions:getGenaiAgentVersions": {
            "deprecationMessage": "digitalocean.getGenaiAgentVersions has been deprecated in favor of digitalocean.getGradientaiAgentVersions",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiAgentVersions.\n",
                "properties": {
                    "agentId": {
                        "type": "string"
                    },
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsFilter:getGenaiAgentVersionsFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsSort:getGenaiAgentVersionsSort"
                        }
                    }
                },
                "type": "object",
                "required": [
                    "agentId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiAgentVersions.\n",
                "properties": {
                    "agentId": {
                        "type": "string"
                    },
                    "agentVersions": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsAgentVersion:getGenaiAgentVersionsAgentVersion"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsFilter:getGenaiAgentVersionsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentVersionsSort:getGenaiAgentVersionsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "agentId",
                    "agentVersions",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiAgents:getGenaiAgents": {
            "deprecationMessage": "digitalocean.getGenaiAgents has been deprecated in favor of digitalocean.getGradientaiAgents",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiAgents.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentsFilter:getGenaiAgentsFilter"
                        }
                    },
                    "onlyDeployed": {
                        "type": "boolean"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentsSort:getGenaiAgentsSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiAgents.\n",
                "properties": {
                    "agents": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentsAgent:getGenaiAgentsAgent"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentsFilter:getGenaiAgentsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "onlyDeployed": {
                        "type": "boolean"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentsSort:getGenaiAgentsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "agents",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiAgentsByOpenaiApiKey:getGenaiAgentsByOpenaiApiKey": {
            "deprecationMessage": "digitalocean.getGenaiAgentsByOpenaiApiKey has been deprecated in favor of digitalocean.getGradientaiAgentsByOpenaiApiKey",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiAgentsByOpenaiApiKey.\n",
                "properties": {
                    "uuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "uuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiAgentsByOpenaiApiKey.\n",
                "properties": {
                    "agents": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiAgentsByOpenaiApiKeyAgent:getGenaiAgentsByOpenaiApiKeyAgent"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "agents",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiIndexingJob:getGenaiIndexingJob": {
            "deprecationMessage": "digitalocean.getGenaiIndexingJob has been deprecated in favor of digitalocean.getGradientaiIndexingJob",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiIndexingJob.\n",
                "properties": {
                    "uuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "uuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiIndexingJob.\n",
                "properties": {
                    "completedDatasources": {
                        "type": "integer"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "dataSourceUuids": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "finishedAt": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "knowledgeBaseUuid": {
                        "type": "string"
                    },
                    "phase": {
                        "type": "string"
                    },
                    "startedAt": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "tokens": {
                        "type": "integer"
                    },
                    "totalDatasources": {
                        "type": "integer"
                    },
                    "totalItemsFailed": {
                        "type": "string"
                    },
                    "totalItemsIndexed": {
                        "type": "string"
                    },
                    "totalItemsSkipped": {
                        "type": "string"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "completedDatasources",
                    "createdAt",
                    "dataSourceUuids",
                    "finishedAt",
                    "knowledgeBaseUuid",
                    "phase",
                    "startedAt",
                    "status",
                    "tokens",
                    "totalDatasources",
                    "totalItemsFailed",
                    "totalItemsIndexed",
                    "totalItemsSkipped",
                    "updatedAt",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiIndexingJobDataSources:getGenaiIndexingJobDataSources": {
            "deprecationMessage": "digitalocean.getGenaiIndexingJobDataSources has been deprecated in favor of digitalocean.getGradientaiIndexingJobDataSources",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiIndexingJobDataSources.\n",
                "properties": {
                    "indexingJobUuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "indexingJobUuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiIndexingJobDataSources.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "indexedDataSources": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiIndexingJobDataSourcesIndexedDataSource:getGenaiIndexingJobDataSourcesIndexedDataSource"
                        },
                        "type": "array"
                    },
                    "indexingJobUuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "indexedDataSources",
                    "indexingJobUuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiKnowledgeBase:getGenaiKnowledgeBase": {
            "deprecationMessage": "digitalocean.getGenaiKnowledgeBase has been deprecated in favor of digitalocean.getGradientaiKnowledgeBase",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiKnowledgeBase.\n",
                "properties": {
                    "addedToAgentAt": {
                        "type": "string"
                    },
                    "databaseId": {
                        "type": "string"
                    },
                    "embeddingModelUuid": {
                        "type": "string"
                    },
                    "isPublic": {
                        "type": "boolean"
                    },
                    "lastIndexingJobs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseLastIndexingJob:getGenaiKnowledgeBaseLastIndexingJob"
                        }
                    },
                    "name": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "userId": {
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiKnowledgeBase.\n",
                "properties": {
                    "addedToAgentAt": {
                        "type": "string"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "databaseId": {
                        "type": "string"
                    },
                    "embeddingModelUuid": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "isPublic": {
                        "type": "boolean"
                    },
                    "lastIndexingJobs": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseLastIndexingJob:getGenaiKnowledgeBaseLastIndexingJob"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "tags": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "userId": {
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "updatedAt",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiKnowledgeBaseDataSources:getGenaiKnowledgeBaseDataSources": {
            "deprecationMessage": "digitalocean.getGenaiKnowledgeBaseDataSources has been deprecated in favor of digitalocean.getGradientaiKnowledgeBaseDataSources",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiKnowledgeBaseDataSources.\n",
                "properties": {
                    "knowledgeBaseUuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "knowledgeBaseUuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiKnowledgeBaseDataSources.\n",
                "properties": {
                    "datasources": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseDataSourcesDatasource:getGenaiKnowledgeBaseDataSourcesDatasource"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "knowledgeBaseUuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "datasources",
                    "knowledgeBaseUuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiKnowledgeBaseIndexingJobs:getGenaiKnowledgeBaseIndexingJobs": {
            "deprecationMessage": "digitalocean.getGenaiKnowledgeBaseIndexingJobs has been deprecated in favor of digitalocean.getGradientaiKnowledgeBaseIndexingJobs",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiKnowledgeBaseIndexingJobs.\n",
                "properties": {
                    "knowledgeBaseUuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "knowledgeBaseUuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiKnowledgeBaseIndexingJobs.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "jobs": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseIndexingJobsJob:getGenaiKnowledgeBaseIndexingJobsJob"
                        },
                        "type": "array"
                    },
                    "knowledgeBaseUuid": {
                        "type": "string"
                    },
                    "metas": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBaseIndexingJobsMeta:getGenaiKnowledgeBaseIndexingJobsMeta"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "jobs",
                    "knowledgeBaseUuid",
                    "metas",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiKnowledgeBases:getGenaiKnowledgeBases": {
            "deprecationMessage": "digitalocean.getGenaiKnowledgeBases has been deprecated in favor of digitalocean.getGradientaiKnowledgeBases",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiKnowledgeBases.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBasesFilter:getGenaiKnowledgeBasesFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBasesSort:getGenaiKnowledgeBasesSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiKnowledgeBases.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBasesFilter:getGenaiKnowledgeBasesFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "knowledgeBases": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBasesKnowledgeBase:getGenaiKnowledgeBasesKnowledgeBase"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiKnowledgeBasesSort:getGenaiKnowledgeBasesSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "knowledgeBases",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiModels:getGenaiModels": {
            "deprecationMessage": "digitalocean.getGenaiModels has been deprecated in favor of digitalocean.getGradientaiModels",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiModels.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiModelsFilter:getGenaiModelsFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiModelsSort:getGenaiModelsSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiModels.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiModelsFilter:getGenaiModelsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "models": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiModelsModel:getGenaiModelsModel"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiModelsSort:getGenaiModelsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "models",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiOpenaiApiKey:getGenaiOpenaiApiKey": {
            "deprecationMessage": "digitalocean.getGenaiOpenaiApiKey has been deprecated in favor of digitalocean.getGradientaiOpenaiApiKey",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiOpenaiApiKey.\n",
                "properties": {
                    "uuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "uuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiOpenaiApiKey.\n",
                "properties": {
                    "createdAt": {
                        "type": "string"
                    },
                    "createdBy": {
                        "type": "string"
                    },
                    "deletedAt": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "models": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeyModel:getGenaiOpenaiApiKeyModel"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "createdBy",
                    "deletedAt",
                    "models",
                    "name",
                    "updatedAt",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiOpenaiApiKeys:getGenaiOpenaiApiKeys": {
            "deprecationMessage": "digitalocean.getGenaiOpenaiApiKeys has been deprecated in favor of digitalocean.getGradientaiOpenaiApiKeys",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiOpenaiApiKeys.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeysFilter:getGenaiOpenaiApiKeysFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeysSort:getGenaiOpenaiApiKeysSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiOpenaiApiKeys.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeysFilter:getGenaiOpenaiApiKeysFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "openaiApiKeys": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeysOpenaiApiKey:getGenaiOpenaiApiKeysOpenaiApiKey"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiOpenaiApiKeysSort:getGenaiOpenaiApiKeysSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "openaiApiKeys",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGenaiRegions:getGenaiRegions": {
            "deprecationMessage": "digitalocean.getGenaiRegions has been deprecated in favor of digitalocean.getGradientaiRegions",
            "inputs": {
                "description": "A collection of arguments for invoking getGenaiRegions.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiRegionsFilter:getGenaiRegionsFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiRegionsSort:getGenaiRegionsSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGenaiRegions.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiRegionsFilter:getGenaiRegionsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "regions": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiRegionsRegion:getGenaiRegionsRegion"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGenaiRegionsSort:getGenaiRegionsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "regions",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiAgent:getGradientaiAgent": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiAgent.\n",
                "properties": {
                    "agentGuardrails": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentAgentGuardrail:getGradientaiAgentAgentGuardrail"
                        }
                    },
                    "agentId": {
                        "type": "string"
                    },
                    "anthropicApiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentAnthropicApiKey:getGradientaiAgentAnthropicApiKey"
                        }
                    },
                    "apiKeyInfos": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentApiKeyInfo:getGradientaiAgentApiKeyInfo"
                        }
                    },
                    "apiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentApiKey:getGradientaiAgentApiKey"
                        }
                    },
                    "chatbotIdentifiers": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentChatbotIdentifier:getGradientaiAgentChatbotIdentifier"
                        }
                    },
                    "chatbots": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentChatbot:getGradientaiAgentChatbot"
                        }
                    },
                    "deployments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentDeployment:getGradientaiAgentDeployment"
                        }
                    },
                    "description": {
                        "type": "string"
                    },
                    "functions": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentFunction:getGradientaiAgentFunction"
                        }
                    },
                    "ifCase": {
                        "type": "string"
                    },
                    "k": {
                        "type": "integer"
                    },
                    "knowledgeBases": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentKnowledgeBase:getGradientaiAgentKnowledgeBase"
                        }
                    },
                    "maxTokens": {
                        "type": "integer"
                    },
                    "models": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentModel:getGradientaiAgentModel"
                        }
                    },
                    "openAiApiKeys": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentOpenAiApiKey:getGradientaiAgentOpenAiApiKey"
                        }
                    },
                    "retrievalMethod": {
                        "type": "string"
                    },
                    "routeCreatedBy": {
                        "type": "string"
                    },
                    "routeName": {
                        "type": "string"
                    },
                    "routeUuid": {
                        "type": "string"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "temperature": {
                        "type": "number"
                    },
                    "templates": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentTemplate:getGradientaiAgentTemplate"
                        }
                    },
                    "topP": {
                        "type": "number"
                    },
                    "url": {
                        "type": "string"
                    },
                    "userId": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "agentId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiAgent.\n",
                "properties": {
                    "agentGuardrails": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentAgentGuardrail:getGradientaiAgentAgentGuardrail"
                        },
                        "type": "array"
                    },
                    "agentId": {
                        "type": "string"
                    },
                    "anthropicApiKeys": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentAnthropicApiKey:getGradientaiAgentAnthropicApiKey"
                        },
                        "type": "array"
                    },
                    "apiKeyInfos": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentApiKeyInfo:getGradientaiAgentApiKeyInfo"
                        },
                        "type": "array"
                    },
                    "apiKeys": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentApiKey:getGradientaiAgentApiKey"
                        },
                        "type": "array"
                    },
                    "chatbotIdentifiers": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentChatbotIdentifier:getGradientaiAgentChatbotIdentifier"
                        },
                        "type": "array"
                    },
                    "chatbots": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentChatbot:getGradientaiAgentChatbot"
                        },
                        "type": "array"
                    },
                    "childAgents": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentChildAgent:getGradientaiAgentChildAgent"
                        },
                        "type": "array"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "deployments": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentDeployment:getGradientaiAgentDeployment"
                        },
                        "type": "array"
                    },
                    "description": {
                        "type": "string"
                    },
                    "functions": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentFunction:getGradientaiAgentFunction"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "ifCase": {
                        "type": "string"
                    },
                    "instruction": {
                        "type": "string"
                    },
                    "k": {
                        "type": "integer"
                    },
                    "knowledgeBases": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentKnowledgeBase:getGradientaiAgentKnowledgeBase"
                        },
                        "type": "array"
                    },
                    "maxTokens": {
                        "type": "integer"
                    },
                    "modelUuid": {
                        "type": "string"
                    },
                    "models": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentModel:getGradientaiAgentModel"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    },
                    "openAiApiKeys": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentOpenAiApiKey:getGradientaiAgentOpenAiApiKey"
                        },
                        "type": "array"
                    },
                    "parentAgents": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentParentAgent:getGradientaiAgentParentAgent"
                        },
                        "type": "array"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "retrievalMethod": {
                        "type": "string"
                    },
                    "routeCreatedAt": {
                        "type": "string"
                    },
                    "routeCreatedBy": {
                        "type": "string"
                    },
                    "routeName": {
                        "type": "string"
                    },
                    "routeUuid": {
                        "type": "string"
                    },
                    "tags": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "temperature": {
                        "type": "number"
                    },
                    "templates": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentTemplate:getGradientaiAgentTemplate"
                        },
                        "type": "array"
                    },
                    "topP": {
                        "type": "number"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "url": {
                        "type": "string"
                    },
                    "userId": {
                        "type": "string"
                    }
                },
                "required": [
                    "agentId",
                    "childAgents",
                    "createdAt",
                    "instruction",
                    "models",
                    "modelUuid",
                    "name",
                    "parentAgents",
                    "projectId",
                    "region",
                    "routeCreatedAt",
                    "updatedAt",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiAgentVersions:getGradientaiAgentVersions": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiAgentVersions.\n",
                "properties": {
                    "agentId": {
                        "type": "string"
                    },
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsFilter:getGradientaiAgentVersionsFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsSort:getGradientaiAgentVersionsSort"
                        }
                    }
                },
                "type": "object",
                "required": [
                    "agentId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiAgentVersions.\n",
                "properties": {
                    "agentId": {
                        "type": "string"
                    },
                    "agentVersions": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsAgentVersion:getGradientaiAgentVersionsAgentVersion"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsFilter:getGradientaiAgentVersionsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentVersionsSort:getGradientaiAgentVersionsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "agentId",
                    "agentVersions",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiAgents:getGradientaiAgents": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiAgents.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentsFilter:getGradientaiAgentsFilter"
                        }
                    },
                    "onlyDeployed": {
                        "type": "boolean"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentsSort:getGradientaiAgentsSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiAgents.\n",
                "properties": {
                    "agents": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentsAgent:getGradientaiAgentsAgent"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentsFilter:getGradientaiAgentsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "onlyDeployed": {
                        "type": "boolean"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentsSort:getGradientaiAgentsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "agents",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiAgentsByOpenaiApiKey:getGradientaiAgentsByOpenaiApiKey": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiAgentsByOpenaiApiKey.\n",
                "properties": {
                    "uuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "uuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiAgentsByOpenaiApiKey.\n",
                "properties": {
                    "agents": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiAgentsByOpenaiApiKeyAgent:getGradientaiAgentsByOpenaiApiKeyAgent"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "agents",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiIndexingJob:getGradientaiIndexingJob": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiIndexingJob.\n",
                "properties": {
                    "uuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "uuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiIndexingJob.\n",
                "properties": {
                    "completedDatasources": {
                        "type": "integer"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "dataSourceUuids": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "finishedAt": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "knowledgeBaseUuid": {
                        "type": "string"
                    },
                    "phase": {
                        "type": "string"
                    },
                    "startedAt": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    },
                    "tokens": {
                        "type": "integer"
                    },
                    "totalDatasources": {
                        "type": "integer"
                    },
                    "totalItemsFailed": {
                        "type": "string"
                    },
                    "totalItemsIndexed": {
                        "type": "string"
                    },
                    "totalItemsSkipped": {
                        "type": "string"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "completedDatasources",
                    "createdAt",
                    "dataSourceUuids",
                    "finishedAt",
                    "knowledgeBaseUuid",
                    "phase",
                    "startedAt",
                    "status",
                    "tokens",
                    "totalDatasources",
                    "totalItemsFailed",
                    "totalItemsIndexed",
                    "totalItemsSkipped",
                    "updatedAt",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiIndexingJobDataSources:getGradientaiIndexingJobDataSources": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiIndexingJobDataSources.\n",
                "properties": {
                    "indexingJobUuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "indexingJobUuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiIndexingJobDataSources.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "indexedDataSources": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiIndexingJobDataSourcesIndexedDataSource:getGradientaiIndexingJobDataSourcesIndexedDataSource"
                        },
                        "type": "array"
                    },
                    "indexingJobUuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "indexedDataSources",
                    "indexingJobUuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBase:getGradientaiKnowledgeBase": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiKnowledgeBase.\n",
                "properties": {
                    "addedToAgentAt": {
                        "type": "string"
                    },
                    "databaseId": {
                        "type": "string"
                    },
                    "embeddingModelUuid": {
                        "type": "string"
                    },
                    "isPublic": {
                        "type": "boolean"
                    },
                    "lastIndexingJobs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseLastIndexingJob:getGradientaiKnowledgeBaseLastIndexingJob"
                        }
                    },
                    "name": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "userId": {
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiKnowledgeBase.\n",
                "properties": {
                    "addedToAgentAt": {
                        "type": "string"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "databaseId": {
                        "type": "string"
                    },
                    "embeddingModelUuid": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "isPublic": {
                        "type": "boolean"
                    },
                    "lastIndexingJobs": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseLastIndexingJob:getGradientaiKnowledgeBaseLastIndexingJob"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "tags": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "userId": {
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "updatedAt",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBaseDataSources:getGradientaiKnowledgeBaseDataSources": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiKnowledgeBaseDataSources.\n",
                "properties": {
                    "knowledgeBaseUuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "knowledgeBaseUuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiKnowledgeBaseDataSources.\n",
                "properties": {
                    "datasources": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseDataSourcesDatasource:getGradientaiKnowledgeBaseDataSourcesDatasource"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "knowledgeBaseUuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "datasources",
                    "knowledgeBaseUuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBaseIndexingJobs:getGradientaiKnowledgeBaseIndexingJobs": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiKnowledgeBaseIndexingJobs.\n",
                "properties": {
                    "knowledgeBaseUuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "knowledgeBaseUuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiKnowledgeBaseIndexingJobs.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "jobs": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseIndexingJobsJob:getGradientaiKnowledgeBaseIndexingJobsJob"
                        },
                        "type": "array"
                    },
                    "knowledgeBaseUuid": {
                        "type": "string"
                    },
                    "metas": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBaseIndexingJobsMeta:getGradientaiKnowledgeBaseIndexingJobsMeta"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "jobs",
                    "knowledgeBaseUuid",
                    "metas",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiKnowledgeBases:getGradientaiKnowledgeBases": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiKnowledgeBases.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBasesFilter:getGradientaiKnowledgeBasesFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBasesSort:getGradientaiKnowledgeBasesSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiKnowledgeBases.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBasesFilter:getGradientaiKnowledgeBasesFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "knowledgeBases": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBasesKnowledgeBase:getGradientaiKnowledgeBasesKnowledgeBase"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiKnowledgeBasesSort:getGradientaiKnowledgeBasesSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "knowledgeBases",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiModels:getGradientaiModels": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiModels.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiModelsFilter:getGradientaiModelsFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiModelsSort:getGradientaiModelsSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiModels.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiModelsFilter:getGradientaiModelsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "models": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiModelsModel:getGradientaiModelsModel"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiModelsSort:getGradientaiModelsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "models",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiOpenaiApiKey:getGradientaiOpenaiApiKey": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiOpenaiApiKey.\n",
                "properties": {
                    "uuid": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "uuid"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiOpenaiApiKey.\n",
                "properties": {
                    "createdAt": {
                        "type": "string"
                    },
                    "createdBy": {
                        "type": "string"
                    },
                    "deletedAt": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "models": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeyModel:getGradientaiOpenaiApiKeyModel"
                        },
                        "type": "array"
                    },
                    "name": {
                        "type": "string"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "uuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "createdBy",
                    "deletedAt",
                    "models",
                    "name",
                    "updatedAt",
                    "uuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiOpenaiApiKeys:getGradientaiOpenaiApiKeys": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiOpenaiApiKeys.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeysFilter:getGradientaiOpenaiApiKeysFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeysSort:getGradientaiOpenaiApiKeysSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiOpenaiApiKeys.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeysFilter:getGradientaiOpenaiApiKeysFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "openaiApiKeys": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeysOpenaiApiKey:getGradientaiOpenaiApiKeysOpenaiApiKey"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiOpenaiApiKeysSort:getGradientaiOpenaiApiKeysSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "openaiApiKeys",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getGradientaiRegions:getGradientaiRegions": {
            "inputs": {
                "description": "A collection of arguments for invoking getGradientaiRegions.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiRegionsFilter:getGradientaiRegionsFilter"
                        }
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiRegionsSort:getGradientaiRegionsSort"
                        }
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getGradientaiRegions.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiRegionsFilter:getGradientaiRegionsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "regions": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiRegionsRegion:getGradientaiRegionsRegion"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getGradientaiRegionsSort:getGradientaiRegionsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "regions",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getImage:getImage": {
            "description": "Get information on an image for use in other resources (e.g. creating a Droplet\nbased on snapshot). This data source provides all of the image properties as\nconfigured on your DigitalOcean account. This is useful if the image in question\nis not managed by Terraform or you need to utilize any of the image's data.\n\nAn error is triggered if zero or more than one result is returned by the query.\n\n## Example Usage\n\nGet the data about a snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example1 = digitalocean.getImage({\n    name: \"example-1.0.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample1 = digitalocean.get_image(name=\"example-1.0.0\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example1 = DigitalOcean.GetImage.Invoke(new()\n    {\n        Name = \"example-1.0.0\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tName: pulumi.StringRef(\"example-1.0.0\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example1 = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .name(\"example-1.0.0\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example1:\n    fn::invoke:\n      function: digitalocean:getImage\n      arguments:\n        name: example-1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a snapshot to create a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getImage({\n    name: \"example-1.0.0\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: example.then(example =\u003e example.id),\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_image(name=\"example-1.0.0\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=example.id,\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetImage.Invoke(new()\n    {\n        Name = \"example-1.0.0\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = example.Apply(getImageResult =\u003e getImageResult.Id),\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tName: pulumi.StringRef(\"example-1.0.0\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.Int(example.Id),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .name(\"example-1.0.0\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(example.id())\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ${example.id}\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getImage\n      arguments:\n        name: example-1.0.0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the data about an official image:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example2 = digitalocean.getImage({\n    slug: \"ubuntu-18-04-x64\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample2 = digitalocean.get_image(slug=\"ubuntu-18-04-x64\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example2 = DigitalOcean.GetImage.Invoke(new()\n    {\n        Slug = \"ubuntu-18-04-x64\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImage(ctx, \u0026digitalocean.GetImageArgs{\n\t\t\tSlug: pulumi.StringRef(\"ubuntu-18-04-x64\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example2 = DigitaloceanFunctions.getImage(GetImageArgs.builder()\n            .slug(\"ubuntu-18-04-x64\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example2:\n    fn::invoke:\n      function: digitalocean:getImage\n      arguments:\n        slug: ubuntu-18-04-x64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getImage.\n",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "The id of the image\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the image.\n"
                    },
                    "slug": {
                        "type": "string",
                        "description": "The slug of the official image.\n\nIf \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 is specified, you may also specify:\n"
                    },
                    "source": {
                        "type": "string",
                        "description": "Restrict the search to one of the following categories of images:\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getImage.\n",
                "properties": {
                    "created": {
                        "description": "When the image was created\n",
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "distribution": {
                        "description": "The name of the distribution of the OS of the image.\n",
                        "type": "string"
                    },
                    "errorMessage": {
                        "description": "Any applicable error message pertaining to the image\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The ID of the image.\n",
                        "type": "integer"
                    },
                    "image": {
                        "description": "The id of the image (legacy parameter).\n",
                        "type": "string"
                    },
                    "minDiskSize": {
                        "description": "The minimum 'disk' required for the image.\n",
                        "type": "integer"
                    },
                    "name": {
                        "description": "The name of the image.\n",
                        "type": "string"
                    },
                    "private": {
                        "description": "Is image a public image or not. Public images represent\nLinux distributions or One-Click Applications, while non-public images represent\nsnapshots and backups and are only available within your account.\n",
                        "type": "boolean"
                    },
                    "regions": {
                        "description": "A set of the regions that the image is available in.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "sizeGigabytes": {
                        "description": "The size of the image in GB.\n",
                        "type": "number"
                    },
                    "slug": {
                        "description": "Unique text identifier of the image.\n",
                        "type": "string"
                    },
                    "source": {
                        "type": "string"
                    },
                    "status": {
                        "description": "Current status of the image\n",
                        "type": "string"
                    },
                    "tags": {
                        "description": "A set of tags applied to the image\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "type": {
                        "description": "Type of the image.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "created",
                    "description",
                    "distribution",
                    "errorMessage",
                    "id",
                    "image",
                    "minDiskSize",
                    "name",
                    "private",
                    "regions",
                    "sizeGigabytes",
                    "slug",
                    "status",
                    "tags",
                    "type"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getImages:getImages": {
            "description": "Get information on images for use in other resources (e.g. creating a Droplet\nbased on a snapshot), with the ability to filter and sort the results. If no filters are specified,\nall images will be returned.\n\nThis data source is useful if the image in question is not managed by Terraform or you need to utilize any\nof the image's data.\n\nNote: You can use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.getImage`\" pulumi-lang-dotnet=\"`digitalocean.getImage`\" pulumi-lang-go=\"`getImage`\" pulumi-lang-python=\"`get_image`\" pulumi-lang-yaml=\"`digitalocean.getImage`\" pulumi-lang-java=\"`digitalocean.getImage`\"\u003e`digitalocean.getImage`\u003c/span\u003e data source to obtain metadata\nabout a single image if you already know the \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e, unique \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e to retrieve.\n\n## Example Usage\n\nUse the \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block with a \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e string and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e list to filter images.\n\nFor example to find all Ubuntu images:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst ubuntu = digitalocean.getImages({\n    filters: [{\n        key: \"distribution\",\n        values: [\"Ubuntu\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nubuntu = digitalocean.get_images(filters=[{\n    \"key\": \"distribution\",\n    \"values\": [\"Ubuntu\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ubuntu = DigitalOcean.GetImages.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"distribution\",\n                Values = new[]\n                {\n                    \"Ubuntu\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImages(ctx, \u0026digitalocean.GetImagesArgs{\n\t\t\tFilters: []digitalocean.GetImagesFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"distribution\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Ubuntu\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImagesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 ubuntu = DigitaloceanFunctions.getImages(GetImagesArgs.builder()\n            .filters(GetImagesFilterArgs.builder()\n                .key(\"distribution\")\n                .values(\"Ubuntu\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  ubuntu:\n    fn::invoke:\n      function: digitalocean:getImages\n      arguments:\n        filters:\n          - key: distribution\n            values:\n              - Ubuntu\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getImages({\n    filters: [\n        {\n            key: \"distribution\",\n            values: [\"Ubuntu\"],\n        },\n        {\n            key: \"regions\",\n            values: [\"nyc3\"],\n        },\n    ],\n    sorts: [{\n        key: \"created\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_images(filters=[\n        {\n            \"key\": \"distribution\",\n            \"values\": [\"Ubuntu\"],\n        },\n        {\n            \"key\": \"regions\",\n            \"values\": [\"nyc3\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"created\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetImages.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"distribution\",\n                Values = new[]\n                {\n                    \"Ubuntu\",\n                },\n            },\n            new DigitalOcean.Inputs.GetImagesFilterInputArgs\n            {\n                Key = \"regions\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetImagesSortInputArgs\n            {\n                Key = \"created\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetImages(ctx, \u0026digitalocean.GetImagesArgs{\n\t\t\tFilters: []digitalocean.GetImagesFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"distribution\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Ubuntu\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"regions\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetImagesSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"created\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetImagesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 available = DigitaloceanFunctions.getImages(GetImagesArgs.builder()\n            .filters(            \n                GetImagesFilterArgs.builder()\n                    .key(\"distribution\")\n                    .values(\"Ubuntu\")\n                    .build(),\n                GetImagesFilterArgs.builder()\n                    .key(\"regions\")\n                    .values(\"nyc3\")\n                    .build())\n            .sorts(GetImagesSortArgs.builder()\n                .key(\"created\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      function: digitalocean:getImages\n      arguments:\n        filters:\n          - key: distribution\n            values:\n              - Ubuntu\n          - key: regions\n            values:\n              - nyc3\n        sorts:\n          - key: created\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getImages.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getImagesFilter:getImagesFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getImagesSort:getImagesSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getImages.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getImagesFilter:getImagesFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "images": {
                        "description": "A set of images satisfying any \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e criteria. Each image has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getImagesImage:getImagesImage"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getImagesSort:getImagesSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "images",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getKubernetesCluster:getKubernetesCluster": {
            "description": "Retrieves information about a DigitalOcean Kubernetes cluster for use in other resources. This data source provides all of the cluster's properties as configured on your DigitalOcean account. This is useful if the cluster in question is not managed by Terraform.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesCluster({\n    name: \"prod-cluster-01\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_cluster(name=\"prod-cluster-01\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesCluster.Invoke(new()\n    {\n        Name = \"prod-cluster-01\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupKubernetesCluster(ctx, \u0026digitalocean.LookupKubernetesClusterArgs{\n\t\t\tName: \"prod-cluster-01\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesCluster(GetKubernetesClusterArgs.builder()\n            .name(\"prod-cluster-01\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesCluster\n      arguments:\n        name: prod-cluster-01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getKubernetesCluster.\n",
                "properties": {
                    "amdGpuDeviceMetricsExporterPlugin": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterAmdGpuDeviceMetricsExporterPlugin:getKubernetesClusterAmdGpuDeviceMetricsExporterPlugin"
                    },
                    "amdGpuDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterAmdGpuDevicePlugin:getKubernetesClusterAmdGpuDevicePlugin"
                    },
                    "clusterAutoscalerConfigurations": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getKubernetesClusterClusterAutoscalerConfiguration:getKubernetesClusterClusterAutoscalerConfiguration"
                        }
                    },
                    "kubeconfigExpireSeconds": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of Kubernetes cluster.\n"
                    },
                    "nvidiaGpuDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterNvidiaGpuDevicePlugin:getKubernetesClusterNvidiaGpuDevicePlugin"
                    },
                    "rdmaSharedDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterRdmaSharedDevicePlugin:getKubernetesClusterRdmaSharedDevicePlugin"
                    },
                    "routingAgent": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterRoutingAgent:getKubernetesClusterRoutingAgent"
                    },
                    "ssos": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getKubernetesClusterSso:getKubernetesClusterSso"
                        }
                    },
                    "tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "A list of tag names applied to the node pool.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getKubernetesCluster.\n",
                "properties": {
                    "amdGpuDeviceMetricsExporterPlugin": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterAmdGpuDeviceMetricsExporterPlugin:getKubernetesClusterAmdGpuDeviceMetricsExporterPlugin"
                    },
                    "amdGpuDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterAmdGpuDevicePlugin:getKubernetesClusterAmdGpuDevicePlugin"
                    },
                    "autoUpgrade": {
                        "description": "A boolean value indicating whether the cluster will be automatically upgraded to new patch releases during its maintenance window.\n",
                        "type": "boolean"
                    },
                    "clusterAutoscalerConfigurations": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getKubernetesClusterClusterAutoscalerConfiguration:getKubernetesClusterClusterAutoscalerConfiguration"
                        },
                        "type": "array"
                    },
                    "clusterSubnet": {
                        "description": "The range of IP addresses in the overlay network of the Kubernetes cluster.\n",
                        "type": "string"
                    },
                    "controlPlaneFirewalls": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getKubernetesClusterControlPlaneFirewall:getKubernetesClusterControlPlaneFirewall"
                        },
                        "type": "array"
                    },
                    "createdAt": {
                        "description": "The date and time when the node was created.\n",
                        "type": "string"
                    },
                    "endpoint": {
                        "description": "The base URL of the API server on the Kubernetes master node.\n",
                        "type": "string"
                    },
                    "ha": {
                        "type": "boolean"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "ipv4Address": {
                        "description": "The public IPv4 address of the Kubernetes master node.\n",
                        "type": "string"
                    },
                    "kubeConfigs": {
                        "description": "A representation of the Kubernetes cluster's kubeconfig with the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getKubernetesClusterKubeConfig:getKubernetesClusterKubeConfig"
                        },
                        "secret": true,
                        "type": "array"
                    },
                    "kubeconfigExpireSeconds": {
                        "type": "integer"
                    },
                    "maintenancePolicies": {
                        "description": "The maintenance policy of the Kubernetes cluster. Digital Ocean has a default maintenancen window.\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getKubernetesClusterMaintenancePolicy:getKubernetesClusterMaintenancePolicy"
                        },
                        "type": "array"
                    },
                    "name": {
                        "description": "The auto-generated name for the node.\n",
                        "type": "string"
                    },
                    "nodePools": {
                        "description": "A list of node pools associated with the cluster. Each node pool exports the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getKubernetesClusterNodePool:getKubernetesClusterNodePool"
                        },
                        "type": "array"
                    },
                    "nvidiaGpuDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterNvidiaGpuDevicePlugin:getKubernetesClusterNvidiaGpuDevicePlugin"
                    },
                    "rdmaSharedDevicePlugin": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterRdmaSharedDevicePlugin:getKubernetesClusterRdmaSharedDevicePlugin"
                    },
                    "region": {
                        "description": "The slug identifier for the region where the Kubernetes cluster is located.\n",
                        "type": "string"
                    },
                    "routingAgent": {
                        "$ref": "#/types/digitalocean:index/getKubernetesClusterRoutingAgent:getKubernetesClusterRoutingAgent"
                    },
                    "serviceSubnet": {
                        "description": "The range of assignable IP addresses for services running in the Kubernetes cluster.\n",
                        "type": "string"
                    },
                    "ssos": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getKubernetesClusterSso:getKubernetesClusterSso"
                        },
                        "type": "array"
                    },
                    "status": {
                        "description": "A string indicating the current status of the individual node.\n",
                        "type": "string"
                    },
                    "surgeUpgrade": {
                        "type": "boolean"
                    },
                    "tags": {
                        "description": "A list of tag names applied to the node pool.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "updatedAt": {
                        "description": "The date and time when the node was last updated.\n",
                        "type": "string"
                    },
                    "urn": {
                        "description": "The uniform resource name (URN) for the Kubernetes cluster.\n",
                        "type": "string"
                    },
                    "version": {
                        "description": "The slug identifier for the version of Kubernetes used for the cluster.\n",
                        "type": "string"
                    },
                    "vpcUuid": {
                        "description": "The ID of the VPC where the Kubernetes cluster is located.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "amdGpuDeviceMetricsExporterPlugin",
                    "amdGpuDevicePlugin",
                    "autoUpgrade",
                    "clusterSubnet",
                    "controlPlaneFirewalls",
                    "createdAt",
                    "endpoint",
                    "ha",
                    "ipv4Address",
                    "kubeConfigs",
                    "maintenancePolicies",
                    "name",
                    "nodePools",
                    "nvidiaGpuDevicePlugin",
                    "rdmaSharedDevicePlugin",
                    "region",
                    "routingAgent",
                    "serviceSubnet",
                    "status",
                    "surgeUpgrade",
                    "updatedAt",
                    "urn",
                    "version",
                    "vpcUuid",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getKubernetesVersions:getKubernetesVersions": {
            "description": "Provides access to the available DigitalOcean Kubernetes Service versions.\n\n## Example Usage\n\n### Output a list of all available versions\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nexport = async () =\u003e {\n    const example = await digitalocean.getKubernetesVersions({});\n    return {\n        \"k8s-versions\": example.validVersions,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions()\npulumi.export(\"k8s-versions\", example.valid_versions)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke();\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"k8s-versions\"] = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.ValidVersions),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"k8s-versions\", example.ValidVersions)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions(GetKubernetesVersionsArgs.builder()\n            .build());\n\n        ctx.export(\"k8s-versions\", example.validVersions());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesVersions\n      arguments: {}\noutputs:\n  k8s-versions: ${example.validVersions}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Create a Kubernetes cluster using the most recent version available\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesVersions({});\nconst example_cluster = new digitalocean.KubernetesCluster(\"example-cluster\", {\n    name: \"example-cluster\",\n    region: digitalocean.Region.LON1,\n    version: example.then(example =\u003e example.latestVersion),\n    nodePool: {\n        name: \"default\",\n        size: \"s-1vcpu-2gb\",\n        nodeCount: 3,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions()\nexample_cluster = digitalocean.KubernetesCluster(\"example-cluster\",\n    name=\"example-cluster\",\n    region=digitalocean.Region.LON1,\n    version=example.latest_version,\n    node_pool={\n        \"name\": \"default\",\n        \"size\": \"s-1vcpu-2gb\",\n        \"node_count\": 3,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke();\n\n    var example_cluster = new DigitalOcean.KubernetesCluster(\"example-cluster\", new()\n    {\n        Name = \"example-cluster\",\n        Region = DigitalOcean.Region.LON1,\n        Version = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.LatestVersion),\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"default\",\n            Size = \"s-1vcpu-2gb\",\n            NodeCount = 3,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesCluster(ctx, \"example-cluster\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"example-cluster\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionLON1),\n\t\t\tVersion: pulumi.String(example.LatestVersion),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"default\"),\n\t\t\t\tSize:      pulumi.String(\"s-1vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions(GetKubernetesVersionsArgs.builder()\n            .build());\n\n        var example_cluster = new KubernetesCluster(\"example-cluster\", KubernetesClusterArgs.builder()\n            .name(\"example-cluster\")\n            .region(\"lon1\")\n            .version(example.latestVersion())\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"default\")\n                .size(\"s-1vcpu-2gb\")\n                .nodeCount(3)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-cluster:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: example-cluster\n      region: lon1\n      version: ${example.latestVersion}\n      nodePool:\n        name: default\n        size: s-1vcpu-2gb\n        nodeCount: 3\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesVersions\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Pin a Kubernetes cluster to a specific minor version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getKubernetesVersions({\n    versionPrefix: \"1.22.\",\n});\nconst example_cluster = new digitalocean.KubernetesCluster(\"example-cluster\", {\n    name: \"example-cluster\",\n    region: digitalocean.Region.LON1,\n    version: example.then(example =\u003e example.latestVersion),\n    nodePool: {\n        name: \"default\",\n        size: \"s-1vcpu-2gb\",\n        nodeCount: 3,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_kubernetes_versions(version_prefix=\"1.22.\")\nexample_cluster = digitalocean.KubernetesCluster(\"example-cluster\",\n    name=\"example-cluster\",\n    region=digitalocean.Region.LON1,\n    version=example.latest_version,\n    node_pool={\n        \"name\": \"default\",\n        \"size\": \"s-1vcpu-2gb\",\n        \"node_count\": 3,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetKubernetesVersions.Invoke(new()\n    {\n        VersionPrefix = \"1.22.\",\n    });\n\n    var example_cluster = new DigitalOcean.KubernetesCluster(\"example-cluster\", new()\n    {\n        Name = \"example-cluster\",\n        Region = DigitalOcean.Region.LON1,\n        Version = example.Apply(getKubernetesVersionsResult =\u003e getKubernetesVersionsResult.LatestVersion),\n        NodePool = new DigitalOcean.Inputs.KubernetesClusterNodePoolArgs\n        {\n            Name = \"default\",\n            Size = \"s-1vcpu-2gb\",\n            NodeCount = 3,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetKubernetesVersions(ctx, \u0026digitalocean.GetKubernetesVersionsArgs{\n\t\t\tVersionPrefix: pulumi.StringRef(\"1.22.\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewKubernetesCluster(ctx, \"example-cluster\", \u0026digitalocean.KubernetesClusterArgs{\n\t\t\tName:    pulumi.String(\"example-cluster\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionLON1),\n\t\t\tVersion: pulumi.String(example.LatestVersion),\n\t\t\tNodePool: \u0026digitalocean.KubernetesClusterNodePoolArgs{\n\t\t\t\tName:      pulumi.String(\"default\"),\n\t\t\t\tSize:      pulumi.String(\"s-1vcpu-2gb\"),\n\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetKubernetesVersionsArgs;\nimport com.pulumi.digitalocean.KubernetesCluster;\nimport com.pulumi.digitalocean.KubernetesClusterArgs;\nimport com.pulumi.digitalocean.inputs.KubernetesClusterNodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getKubernetesVersions(GetKubernetesVersionsArgs.builder()\n            .versionPrefix(\"1.22.\")\n            .build());\n\n        var example_cluster = new KubernetesCluster(\"example-cluster\", KubernetesClusterArgs.builder()\n            .name(\"example-cluster\")\n            .region(\"lon1\")\n            .version(example.latestVersion())\n            .nodePool(KubernetesClusterNodePoolArgs.builder()\n                .name(\"default\")\n                .size(\"s-1vcpu-2gb\")\n                .nodeCount(3)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example-cluster:\n    type: digitalocean:KubernetesCluster\n    properties:\n      name: example-cluster\n      region: lon1\n      version: ${example.latestVersion}\n      nodePool:\n        name: default\n        size: s-1vcpu-2gb\n        nodeCount: 3\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getKubernetesVersions\n      arguments:\n        versionPrefix: 1.22.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getKubernetesVersions.\n",
                "properties": {
                    "versionPrefix": {
                        "type": "string",
                        "description": "If provided, Terraform will only return versions that match the string prefix. For example, `1.15.` will match all 1.15.x series releases.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getKubernetesVersions.\n",
                "properties": {
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "latestVersion": {
                        "description": "The most recent version available.\n",
                        "type": "string"
                    },
                    "validVersions": {
                        "description": "A list of available versions.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "versionPrefix": {
                        "type": "string"
                    }
                },
                "required": [
                    "latestVersion",
                    "validVersions",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getLoadBalancer:getLoadBalancer": {
            "description": "Get information on a load balancer for use in other resources. This data source\nprovides all of the load balancers properties as configured on your DigitalOcean\naccount. This is useful if the load balancer in question is not managed by\nTerraform or you need to utilize any of the load balancers data.\n\nAn error is triggered if the provided load balancer name does not exist.\n\n## Example Usage\n\nGet the load balancer by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getLoadBalancer({\n    name: \"app\",\n});\nexport const lbOutput = example.then(example =\u003e example.ip);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_load_balancer(name=\"app\")\npulumi.export(\"lbOutput\", example.ip)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetLoadBalancer.Invoke(new()\n    {\n        Name = \"app\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"lbOutput\"] = example.Apply(getLoadBalancerResult =\u003e getLoadBalancerResult.Ip),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupLoadBalancer(ctx, \u0026digitalocean.LookupLoadBalancerArgs{\n\t\t\tName: pulumi.StringRef(\"app\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"lbOutput\", example.Ip)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetLoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .name(\"app\")\n            .build());\n\n        ctx.export(\"lbOutput\", example.ip());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getLoadBalancer\n      arguments:\n        name: app\noutputs:\n  lbOutput: ${example.ip}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the load balancer by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getLoadBalancer({\n    id: \"loadbalancer_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_load_balancer(id=\"loadbalancer_id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetLoadBalancer.Invoke(new()\n    {\n        Id = \"loadbalancer_id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupLoadBalancer(ctx, \u0026digitalocean.LookupLoadBalancerArgs{\n\t\t\tId: pulumi.StringRef(\"loadbalancer_id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetLoadBalancerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getLoadBalancer(GetLoadBalancerArgs.builder()\n            .id(\"loadbalancer_id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getLoadBalancer\n      arguments:\n        id: loadbalancer_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getLoadBalancer.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The ID of load balancer.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of load balancer.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getLoadBalancer.\n",
                "properties": {
                    "algorithm": {
                        "deprecationMessage": "This field has been deprecated. You can no longer specify an algorithm for load balancers.",
                        "type": "string"
                    },
                    "disableLetsEncryptDnsRecords": {
                        "type": "boolean"
                    },
                    "domains": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getLoadBalancerDomain:getLoadBalancerDomain"
                        },
                        "type": "array"
                    },
                    "dropletIds": {
                        "items": {
                            "type": "integer"
                        },
                        "type": "array"
                    },
                    "dropletTag": {
                        "type": "string"
                    },
                    "enableBackendKeepalive": {
                        "type": "boolean"
                    },
                    "enableProxyProtocol": {
                        "type": "boolean"
                    },
                    "firewalls": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getLoadBalancerFirewall:getLoadBalancerFirewall"
                        },
                        "type": "array"
                    },
                    "forwardingRules": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getLoadBalancerForwardingRule:getLoadBalancerForwardingRule"
                        },
                        "type": "array"
                    },
                    "glbSettings": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getLoadBalancerGlbSetting:getLoadBalancerGlbSetting"
                        },
                        "type": "array"
                    },
                    "healthchecks": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getLoadBalancerHealthcheck:getLoadBalancerHealthcheck"
                        },
                        "type": "array"
                    },
                    "httpIdleTimeoutSeconds": {
                        "type": "integer"
                    },
                    "id": {
                        "type": "string"
                    },
                    "ip": {
                        "type": "string"
                    },
                    "ipv6": {
                        "type": "string"
                    },
                    "loadBalancerUrn": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "network": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "redirectHttpToHttps": {
                        "type": "boolean"
                    },
                    "region": {
                        "type": "string"
                    },
                    "size": {
                        "type": "string"
                    },
                    "sizeUnit": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "string"
                    },
                    "stickySessions": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getLoadBalancerStickySession:getLoadBalancerStickySession"
                        },
                        "type": "array"
                    },
                    "targetLoadBalancerIds": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "type": {
                        "type": "string"
                    },
                    "vpcUuid": {
                        "type": "string"
                    }
                },
                "required": [
                    "algorithm",
                    "disableLetsEncryptDnsRecords",
                    "domains",
                    "dropletIds",
                    "dropletTag",
                    "enableBackendKeepalive",
                    "enableProxyProtocol",
                    "firewalls",
                    "forwardingRules",
                    "glbSettings",
                    "healthchecks",
                    "httpIdleTimeoutSeconds",
                    "ip",
                    "ipv6",
                    "network",
                    "projectId",
                    "redirectHttpToHttps",
                    "region",
                    "size",
                    "sizeUnit",
                    "status",
                    "stickySessions",
                    "targetLoadBalancerIds",
                    "type",
                    "loadBalancerUrn",
                    "vpcUuid"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getNfs:getNfs": {
            "description": "Get information about a DigitalOcean NFS share.\n\n## Example Usage\n\nGet the NFS share by name and region:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getNfs({\n    name: \"example-nfs\",\n    region: \"nyc1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_nfs(name=\"example-nfs\",\n    region=\"nyc1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetNfs.Invoke(new()\n    {\n        Name = \"example-nfs\",\n        Region = \"nyc1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupNfs(ctx, \u0026digitalocean.LookupNfsArgs{\n\t\t\tName:   \"example-nfs\",\n\t\t\tRegion: pulumi.StringRef(\"nyc1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetNfsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getNfs(GetNfsArgs.builder()\n            .name(\"example-nfs\")\n            .region(\"nyc1\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getNfs\n      arguments:\n        name: example-nfs\n        region: nyc1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getNfs.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the NFS share.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the NFS share is located.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNfs.\n",
                "properties": {
                    "host": {
                        "description": "The host IP of the NFS server accessible from the associated VPC.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "mountPath": {
                        "description": "The mount path for accessing the NFS share.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "Name of the NFS share.\n",
                        "type": "string"
                    },
                    "performanceTier": {
                        "description": "The performance tier of the NFS share (\u003cspan pulumi-lang-nodejs=\"`standard`\" pulumi-lang-dotnet=\"`Standard`\" pulumi-lang-go=\"`standard`\" pulumi-lang-python=\"`standard`\" pulumi-lang-yaml=\"`standard`\" pulumi-lang-java=\"`standard`\"\u003e`standard`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`high`\" pulumi-lang-dotnet=\"`High`\" pulumi-lang-go=\"`high`\" pulumi-lang-python=\"`high`\" pulumi-lang-yaml=\"`high`\" pulumi-lang-java=\"`high`\"\u003e`high`\u003c/span\u003e).\n",
                        "type": "string"
                    },
                    "region": {
                        "description": "The region where the NFS share is located.\n",
                        "type": "string"
                    },
                    "size": {
                        "description": "The size of the NFS share in GiB.\n",
                        "type": "integer"
                    },
                    "status": {
                        "description": "The current status of the NFS share.\n",
                        "type": "string"
                    },
                    "tags": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "host",
                    "mountPath",
                    "name",
                    "performanceTier",
                    "size",
                    "status",
                    "tags",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getNfsSnapshot:getNfsSnapshot": {
            "description": "Get information about a DigitalOcean NFS snapshot.\n\n## Example Usage\n\nGet the NFS snapshot by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getNfsSnapshot\n      arguments:\n        id: 506f78a4-e098-11e5-ad9f-000f53306ae1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getNfsSnapshot.\n",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "nameRegex": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region where the NFS snapshot is located.\n"
                    },
                    "shareId": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "shareId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getNfsSnapshot.\n",
                "properties": {
                    "createdAt": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "nameRegex": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "shareId": {
                        "type": "string"
                    },
                    "size": {
                        "type": "integer"
                    },
                    "status": {
                        "type": "integer"
                    },
                    "tags": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "createdAt",
                    "shareId",
                    "size",
                    "status",
                    "tags",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getPartnerAttachment:getPartnerAttachment": {
            "inputs": {
                "description": "A collection of arguments for invoking getPartnerAttachment.\n",
                "properties": {
                    "bgp": {
                        "$ref": "#/types/digitalocean:index/getPartnerAttachmentBgp:getPartnerAttachmentBgp"
                    },
                    "id": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "redundancyZone": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getPartnerAttachment.\n",
                "properties": {
                    "bgp": {
                        "$ref": "#/types/digitalocean:index/getPartnerAttachmentBgp:getPartnerAttachmentBgp"
                    },
                    "childrens": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "connectionBandwidthInMbps": {
                        "type": "integer"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "naasProvider": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "parentUuid": {
                        "type": "string"
                    },
                    "redundancyZone": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "state": {
                        "type": "string"
                    },
                    "vpcIds": {
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "childrens",
                    "connectionBandwidthInMbps",
                    "createdAt",
                    "id",
                    "naasProvider",
                    "name",
                    "parentUuid",
                    "region",
                    "state",
                    "vpcIds"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getPartnerAttachmentServiceKey:getPartnerAttachmentServiceKey": {
            "inputs": {
                "description": "A collection of arguments for invoking getPartnerAttachmentServiceKey.\n",
                "properties": {
                    "attachmentId": {
                        "type": "string"
                    }
                },
                "type": "object",
                "required": [
                    "attachmentId"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getPartnerAttachmentServiceKey.\n",
                "properties": {
                    "attachmentId": {
                        "type": "string"
                    },
                    "createdAt": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "state": {
                        "type": "string"
                    },
                    "value": {
                        "type": "string"
                    }
                },
                "required": [
                    "attachmentId",
                    "createdAt",
                    "state",
                    "value",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getProject:getProject": {
            "description": "Get information on a single DigitalOcean project. If neither the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e nor \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 attributes are provided,\nthen this data source returns the default project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst _default = digitalocean.getProject({});\nconst staging = digitalocean.getProject({\n    name: \"My Staging Project\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\ndefault = digitalocean.get_project()\nstaging = digitalocean.get_project(name=\"My Staging Project\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @default = DigitalOcean.GetProject.Invoke();\n\n    var staging = DigitalOcean.GetProject.Invoke(new()\n    {\n        Name = \"My Staging Project\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.LookupProject(ctx, \u0026digitalocean.LookupProjectArgs{\n\t\t\tName: pulumi.StringRef(\"My Staging Project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var default = DigitaloceanFunctions.getProject(GetProjectArgs.builder()\n            .build());\n\n        final var staging = DigitaloceanFunctions.getProject(GetProjectArgs.builder()\n            .name(\"My Staging Project\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  default:\n    fn::invoke:\n      function: digitalocean:getProject\n      arguments: {}\n  staging:\n    fn::invoke:\n      function: digitalocean:getProject\n      arguments:\n        name: My Staging Project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getProject.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "the ID of the project to retrieve\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "the name of the project to retrieve. The data source will raise an error if more than\none project has the provided name or if no project has that name.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getProject.\n",
                "properties": {
                    "createdAt": {
                        "description": "The date and time when the project was created, (ISO8601)\n",
                        "type": "string"
                    },
                    "description": {
                        "description": "The description of the project\n",
                        "type": "string"
                    },
                    "environment": {
                        "description": "The environment of the project's resources. The possible values are: `Development`, `Staging`, `Production`.\n",
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "isDefault": {
                        "type": "boolean"
                    },
                    "name": {
                        "type": "string"
                    },
                    "ownerId": {
                        "description": "The ID of the project owner.\n",
                        "type": "integer"
                    },
                    "ownerUuid": {
                        "description": "The unique universal identifier of the project owner.\n",
                        "type": "string"
                    },
                    "purpose": {
                        "description": "The purpose of the project, (Default: \"Web Application\")\n",
                        "type": "string"
                    },
                    "resources": {
                        "description": "A set of uniform resource names (URNs) for the resources associated with the project\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "updatedAt": {
                        "description": "The date and time when the project was last updated, (ISO8601)\n",
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "description",
                    "environment",
                    "id",
                    "isDefault",
                    "name",
                    "ownerId",
                    "ownerUuid",
                    "purpose",
                    "resources",
                    "updatedAt"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getProjects:getProjects": {
            "description": "Retrieve information about all DigitalOcean projects associated with an account, with\nthe ability to filter and sort the results. If no filters are specified, all projects\nwill be returned.\n\nNote: You can use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.Project`\" pulumi-lang-dotnet=\"`digitalocean.Project`\" pulumi-lang-go=\"`Project`\" pulumi-lang-python=\"`Project`\" pulumi-lang-yaml=\"`digitalocean.Project`\" pulumi-lang-java=\"`digitalocean.Project`\"\u003e`digitalocean.Project`\u003c/span\u003e data source to\nobtain metadata about a single project if you already know the \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e to retrieve or the unique\n\u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e of the project.\n\n## Example Usage\n\nUse the \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block with a \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e string and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e list to filter projects.\n\nFor example to find all staging environment projects:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst staging = digitalocean.getProjects({\n    filters: [{\n        key: \"environment\",\n        values: [\"Staging\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nstaging = digitalocean.get_projects(filters=[{\n    \"key\": \"environment\",\n    \"values\": [\"Staging\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var staging = DigitalOcean.GetProjects.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"environment\",\n                Values = new[]\n                {\n                    \"Staging\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetProjects(ctx, \u0026digitalocean.GetProjectsArgs{\n\t\t\tFilters: []digitalocean.GetProjectsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"environment\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Staging\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 staging = DigitaloceanFunctions.getProjects(GetProjectsArgs.builder()\n            .filters(GetProjectsFilterArgs.builder()\n                .key(\"environment\")\n                .values(\"Staging\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  staging:\n    fn::invoke:\n      function: digitalocean:getProjects\n      arguments:\n        filters:\n          - key: environment\n            values:\n              - Staging\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst non_default_production = digitalocean.getProjects({\n    filters: [\n        {\n            key: \"environment\",\n            values: [\"Production\"],\n        },\n        {\n            key: \"is_default\",\n            values: [\"false\"],\n        },\n    ],\n    sorts: [{\n        key: \"name\",\n        direction: \"asc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnon_default_production = digitalocean.get_projects(filters=[\n        {\n            \"key\": \"environment\",\n            \"values\": [\"Production\"],\n        },\n        {\n            \"key\": \"is_default\",\n            \"values\": [\"false\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"asc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var non_default_production = DigitalOcean.GetProjects.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"environment\",\n                Values = new[]\n                {\n                    \"Production\",\n                },\n            },\n            new DigitalOcean.Inputs.GetProjectsFilterInputArgs\n            {\n                Key = \"is_default\",\n                Values = new[]\n                {\n                    \"false\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetProjectsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetProjects(ctx, \u0026digitalocean.GetProjectsArgs{\n\t\t\tFilters: []digitalocean.GetProjectsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"environment\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"Production\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"is_default\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"false\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetProjectsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetProjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 non-default-production = DigitaloceanFunctions.getProjects(GetProjectsArgs.builder()\n            .filters(            \n                GetProjectsFilterArgs.builder()\n                    .key(\"environment\")\n                    .values(\"Production\")\n                    .build(),\n                GetProjectsFilterArgs.builder()\n                    .key(\"is_default\")\n                    .values(\"false\")\n                    .build())\n            .sorts(GetProjectsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  non-default-production:\n    fn::invoke:\n      function: digitalocean:getProjects\n      arguments:\n        filters:\n          - key: environment\n            values:\n              - Production\n          - key: is_default\n            values:\n              - 'false'\n        sorts:\n          - key: name\n            direction: asc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getProjects.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getProjectsFilter:getProjectsFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getProjectsSort:getProjectsSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getProjects.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getProjectsFilter:getProjectsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "projects": {
                        "description": "A set of projects satisfying any \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e criteria. Each project has\nthe following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getProjectsProject:getProjectsProject"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getProjectsSort:getProjectsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "projects",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getRecord:getRecord": {
            "description": "Get information on a DNS record. This data source provides the name, TTL, and zone\nfile as configured on your DigitalOcean account. This is useful if the record\nin question is not managed by Terraform.\n\nAn error is triggered if the provided domain name or record are not managed with\nyour DigitalOcean account.\n\n## Example Usage\n\nGet data from a DNS record:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getRecord({\n    domain: \"example.com\",\n    name: \"test\",\n});\nexport const recordType = example.then(example =\u003e example.type);\nexport const recordTtl = example.then(example =\u003e example.ttl);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_record(domain=\"example.com\",\n    name=\"test\")\npulumi.export(\"recordType\", example.type)\npulumi.export(\"recordTtl\", example.ttl)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetRecord.Invoke(new()\n    {\n        Domain = \"example.com\",\n        Name = \"test\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"recordType\"] = example.Apply(getRecordResult =\u003e getRecordResult.Type),\n        [\"recordTtl\"] = example.Apply(getRecordResult =\u003e getRecordResult.Ttl),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.GetRecord(ctx, \u0026digitalocean.GetRecordArgs{\n\t\t\tDomain: \"example.com\",\n\t\t\tName:   \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"recordType\", example.Type)\n\t\tctx.Export(\"recordTtl\", example.Ttl)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRecordArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getRecord(GetRecordArgs.builder()\n            .domain(\"example.com\")\n            .name(\"test\")\n            .build());\n\n        ctx.export(\"recordType\", example.type());\n        ctx.export(\"recordTtl\", example.ttl());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getRecord\n      arguments:\n        domain: example.com\n        name: test\noutputs:\n  recordType: ${example.type}\n  recordTtl: ${example.ttl}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n```\n  $ pulumi up\n\ndata.digitalocean_record.example: Refreshing state...\n\nApply complete! Resources: 0 added, 0 changed, 0 destroyed.\n\nOutputs:\n\nrecord_ttl = 3600\nrecord_type = A\n```\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRecord.\n",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "The domain name of the record.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the record.\n"
                    }
                },
                "type": "object",
                "required": [
                    "domain",
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getRecord.\n",
                "properties": {
                    "data": {
                        "description": "Variable data depending on record type. For example, the \"data\" value for an A record would be the IPv4 address to which the domain will be mapped. For a CAA record, it would contain the domain name of the CA being granted permission to issue certificates.\n",
                        "type": "string"
                    },
                    "domain": {
                        "type": "string"
                    },
                    "flags": {
                        "description": "An unsigned integer between 0-255 used for CAA records.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "port": {
                        "description": "The port for SRV records.\n",
                        "type": "integer"
                    },
                    "priority": {
                        "description": "The priority for SRV and MX records.\n",
                        "type": "integer"
                    },
                    "tag": {
                        "description": "The parameter tag for CAA records.\n",
                        "type": "string"
                    },
                    "ttl": {
                        "description": "This value is the time to live for the record, in seconds. This defines the time frame that clients can cache queried information before a refresh should be requested.\n",
                        "type": "integer"
                    },
                    "type": {
                        "description": "The type of the DNS record.\n",
                        "type": "string"
                    },
                    "weight": {
                        "description": "The weight for SRV records.\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "data",
                    "domain",
                    "flags",
                    "name",
                    "port",
                    "priority",
                    "tag",
                    "ttl",
                    "type",
                    "weight",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getRecords:getRecords": {
            "description": "Retrieve information about all DNS records within a domain, with the ability to filter and sort the results.\nIf no filters are specified, all records will be returned.\n\n## Example Usage\n\nGet data for all MX records in a domain:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\nimport * as std from \"@pulumi/std\";\n\nconst example = digitalocean.getRecords({\n    domain: \"example.com\",\n    filters: [{\n        key: \"type\",\n        values: [\"MX\"],\n    }],\n});\nexport const mailServers = example.then(example =\u003e std.join({\n    separator: \",\",\n    input: example.records.map(__item =\u003e __item.value),\n})).then(invoke =\u003e invoke.result);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\nimport pulumi_std as std\n\nexample = digitalocean.get_records(domain=\"example.com\",\n    filters=[{\n        \"key\": \"type\",\n        \"values\": [\"MX\"],\n    }])\npulumi.export(\"mailServers\", std.join(separator=\",\",\n    input=[__item.value for __item in example.records]).result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetRecords.Invoke(new()\n    {\n        Domain = \"example.com\",\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetRecordsFilterInputArgs\n            {\n                Key = \"type\",\n                Values = new[]\n                {\n                    \"MX\",\n                },\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"mailServers\"] = Std.Join.Invoke(new()\n        {\n            Separator = \",\",\n            Input = example.Apply(getRecordsResult =\u003e getRecordsResult.Records).Select(__item =\u003e __item.Value).ToList(),\n        }).Apply(invoke =\u003e invoke.Result),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nexample, err := digitalocean.GetRecords(ctx, \u0026digitalocean.GetRecordsArgs{\nDomain: \"example.com\",\nFilters: []digitalocean.GetRecordsFilter{\n{\nKey: \"type\",\nValues: []string{\n\"MX\",\n},\n},\n},\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"mailServers\", pulumi.String(std.Join(ctx, \u0026std.JoinArgs{\nSeparator: \",\",\nInput: %!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:11,17-41),\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.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRecordsArgs;\nimport com.pulumi.std.StdFunctions;\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 example = DigitaloceanFunctions.getRecords(GetRecordsArgs.builder()\n            .domain(\"example.com\")\n            .filters(GetRecordsFilterArgs.builder()\n                .key(\"type\")\n                .values(\"MX\")\n                .build())\n            .build());\n\n        ctx.export(\"mailServers\", StdFunctions.join(JoinArgs.builder()\n            .separator(\",\")\n            .input(example.records().stream().map(element -\u003e element.value()).collect(toList()))\n            .build()).result());\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRecords.\n",
                "properties": {
                    "domain": {
                        "type": "string",
                        "description": "The domain name to search for DNS records\n"
                    },
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRecordsFilter:getRecordsFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRecordsSort:getRecordsSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object",
                "required": [
                    "domain"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getRecords.\n",
                "properties": {
                    "domain": {
                        "description": "Domain of the DNS record.\n",
                        "type": "string"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRecordsFilter:getRecordsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "records": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRecordsRecord:getRecordsRecord"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRecordsSort:getRecordsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "domain",
                    "records",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getRegion:getRegion": {
            "description": "Get information on a single DigitalOcean region. This is useful to find out \nwhat Droplet sizes and features are supported within a region.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst sfo2 = digitalocean.getRegion({\n    slug: \"sfo2\",\n});\nexport const regionName = sfo2.then(sfo2 =\u003e sfo2.name);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsfo2 = digitalocean.get_region(slug=\"sfo2\")\npulumi.export(\"regionName\", sfo2.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sfo2 = DigitalOcean.GetRegion.Invoke(new()\n    {\n        Slug = \"sfo2\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"regionName\"] = sfo2.Apply(getRegionResult =\u003e getRegionResult.Name),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsfo2, err := digitalocean.GetRegion(ctx, \u0026digitalocean.GetRegionArgs{\n\t\t\tSlug: \"sfo2\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"regionName\", sfo2.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sfo2 = DigitaloceanFunctions.getRegion(GetRegionArgs.builder()\n            .slug(\"sfo2\")\n            .build());\n\n        ctx.export(\"regionName\", sfo2.name());\n    }\n}\n```\n```yaml\nvariables:\n  sfo2:\n    fn::invoke:\n      function: digitalocean:getRegion\n      arguments:\n        slug: sfo2\noutputs:\n  regionName: ${sfo2.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRegion.\n",
                "properties": {
                    "slug": {
                        "type": "string",
                        "description": "A human-readable string that is used as a unique identifier for each region.\n"
                    }
                },
                "type": "object",
                "required": [
                    "slug"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getRegion.\n",
                "properties": {
                    "available": {
                        "description": "A boolean value that represents whether new Droplets can be created in this region.\n",
                        "type": "boolean"
                    },
                    "features": {
                        "description": "A set of features available in this region.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "description": "The display name of the region.\n",
                        "type": "string"
                    },
                    "sizes": {
                        "description": "A set of identifying slugs for the Droplet sizes available in this region.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "slug": {
                        "description": "A human-readable string that is used as a unique identifier for each region.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "available",
                    "features",
                    "name",
                    "sizes",
                    "slug",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getRegions:getRegions": {
            "description": "Retrieve information about all supported DigitalOcean regions, with the ability to\nfilter and sort the results. If no filters are specified, all regions will be returned.\n\nNote: You can use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.getRegion`\" pulumi-lang-dotnet=\"`digitalocean.getRegion`\" pulumi-lang-go=\"`getRegion`\" pulumi-lang-python=\"`get_region`\" pulumi-lang-yaml=\"`digitalocean.getRegion`\" pulumi-lang-java=\"`digitalocean.getRegion`\"\u003e`digitalocean.getRegion`\u003c/span\u003e data source\nto obtain metadata about a single region if you already know the \u003cspan pulumi-lang-nodejs=\"`slug`\" pulumi-lang-dotnet=\"`Slug`\" pulumi-lang-go=\"`slug`\" pulumi-lang-python=\"`slug`\" pulumi-lang-yaml=\"`slug`\" pulumi-lang-java=\"`slug`\"\u003e`slug`\u003c/span\u003e to retrieve.\n\n## Example Usage\n\nUse the \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block with a \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e string and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e list to filter regions.\n\nFor example to find all available regions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getRegions({\n    filters: [{\n        key: \"available\",\n        values: [\"true\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_regions(filters=[{\n    \"key\": \"available\",\n    \"values\": [\"true\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetRegions.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"available\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetRegions(ctx, \u0026digitalocean.GetRegionsArgs{\n\t\t\tFilters: []digitalocean.GetRegionsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"available\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 available = DigitaloceanFunctions.getRegions(GetRegionsArgs.builder()\n            .filters(GetRegionsFilterArgs.builder()\n                .key(\"available\")\n                .values(\"true\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      function: digitalocean:getRegions\n      arguments:\n        filters:\n          - key: available\n            values:\n              - 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can filter on multiple fields and sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst available = digitalocean.getRegions({\n    filters: [\n        {\n            key: \"available\",\n            values: [\"true\"],\n        },\n        {\n            key: \"features\",\n            values: [\"private_networking\"],\n        },\n    ],\n    sorts: [{\n        key: \"name\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\navailable = digitalocean.get_regions(filters=[\n        {\n            \"key\": \"available\",\n            \"values\": [\"true\"],\n        },\n        {\n            \"key\": \"features\",\n            \"values\": [\"private_networking\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var available = DigitalOcean.GetRegions.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"available\",\n                Values = new[]\n                {\n                    \"true\",\n                },\n            },\n            new DigitalOcean.Inputs.GetRegionsFilterInputArgs\n            {\n                Key = \"features\",\n                Values = new[]\n                {\n                    \"private_networking\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetRegionsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetRegions(ctx, \u0026digitalocean.GetRegionsArgs{\n\t\t\tFilters: []digitalocean.GetRegionsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"available\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey: \"features\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"private_networking\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetRegionsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetRegionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 available = DigitaloceanFunctions.getRegions(GetRegionsArgs.builder()\n            .filters(            \n                GetRegionsFilterArgs.builder()\n                    .key(\"available\")\n                    .values(\"true\")\n                    .build(),\n                GetRegionsFilterArgs.builder()\n                    .key(\"features\")\n                    .values(\"private_networking\")\n                    .build())\n            .sorts(GetRegionsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  available:\n    fn::invoke:\n      function: digitalocean:getRegions\n      arguments:\n        filters:\n          - key: available\n            values:\n              - 'true'\n          - key: features\n            values:\n              - private_networking\n        sorts:\n          - key: name\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getRegions.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRegionsFilter:getRegionsFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRegionsSort:getRegionsSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getRegions.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRegionsFilter:getRegionsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "regions": {
                        "description": "A set of regions satisfying any \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e criteria. Each region has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRegionsRegion:getRegionsRegion"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getRegionsSort:getRegionsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "regions",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getReservedIp:getReservedIp": {
            "description": "Get information on a reserved IP. This data source provides the region and Droplet id\nas configured on your DigitalOcean account. This is useful if the reserved IP\nin question is not managed by Terraform or you need to find the Droplet the IP is\nattached to.\n\nAn error is triggered if the provided reserved IP does not exist.\n\n## Example Usage\n\nGet the reserved IP:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst config = new pulumi.Config();\nconst publicIp = config.requireObject\u003cany\u003e(\"publicIp\");\nconst example = digitalocean.getReservedIp({\n    ipAddress: publicIp,\n});\nexport const fipOutput = example.then(example =\u003e example.dropletId);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nconfig = pulumi.Config()\npublic_ip = config.require_object(\"publicIp\")\nexample = digitalocean.get_reserved_ip(ip_address=public_ip)\npulumi.export(\"fipOutput\", example.droplet_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var config = new Config();\n    var publicIp = config.RequireObject\u003cdynamic\u003e(\"publicIp\");\n    var example = DigitalOcean.GetReservedIp.Invoke(new()\n    {\n        IpAddress = publicIp,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"fipOutput\"] = example.Apply(getReservedIpResult =\u003e getReservedIpResult.DropletId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tpublicIp := cfg.RequireObject(\"publicIp\")\n\t\texample, err := digitalocean.LookupReservedIp(ctx, \u0026digitalocean.LookupReservedIpArgs{\n\t\t\tIpAddress: publicIp,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"fipOutput\", example.DropletId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetReservedIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var config = ctx.config();\n        final var publicIp = config.require(\"publicIp\");\n        final var example = DigitaloceanFunctions.getReservedIp(GetReservedIpArgs.builder()\n            .ipAddress(publicIp)\n            .build());\n\n        ctx.export(\"fipOutput\", example.dropletId());\n    }\n}\n```\n```yaml\nconfiguration:\n  publicIp:\n    type: dynamic\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getReservedIp\n      arguments:\n        ipAddress: ${publicIp}\noutputs:\n  fipOutput: ${example.dropletId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getReservedIp.\n",
                "properties": {
                    "ipAddress": {
                        "type": "string",
                        "description": "The allocated IP address of the specific reserved IP to retrieve.\n"
                    }
                },
                "type": "object",
                "required": [
                    "ipAddress"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getReservedIp.\n",
                "properties": {
                    "dropletId": {
                        "description": "The Droplet id that the reserved IP has been assigned to.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "ipAddress": {
                        "type": "string"
                    },
                    "region": {
                        "description": "The region that the reserved IP is reserved to.\n",
                        "type": "string"
                    },
                    "urn": {
                        "description": "The uniform resource name of the reserved IP.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "dropletId",
                    "ipAddress",
                    "region",
                    "urn",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getReservedIpv6:getReservedIpv6": {
            "description": "Get information on a reserved IPv6. This data source provides the\u003cspan pulumi-lang-nodejs=\" regionSlug \" pulumi-lang-dotnet=\" RegionSlug \" pulumi-lang-go=\" regionSlug \" pulumi-lang-python=\" region_slug \" pulumi-lang-yaml=\" regionSlug \" pulumi-lang-java=\" regionSlug \"\u003e region_slug \u003c/span\u003eand droplet id as configured on your DigitalOcean account. This is useful if the reserved IPv6 in question is not managed by Terraform or you need to find the Droplet the IP is\nattached to.\n\nAn error is triggered if the provided reserved IPv6 does not exist.\n\n## Example Usage\n\nGet the reserved IPv6:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst foo = new digitalocean.ReservedIpv6(\"foo\", {regionSlug: \"nyc3\"});\nconst foobar = digitalocean.getReservedIpv6Output({\n    ip: foo.ip,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nfoo = digitalocean.ReservedIpv6(\"foo\", region_slug=\"nyc3\")\nfoobar = digitalocean.get_reserved_ipv6_output(ip=foo.ip)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var foo = new DigitalOcean.ReservedIpv6(\"foo\", new()\n    {\n        RegionSlug = \"nyc3\",\n    });\n\n    var foobar = DigitalOcean.GetReservedIpv6.Invoke(new()\n    {\n        Ip = foo.Ip,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoo, err := digitalocean.NewReservedIpv6(ctx, \"foo\", \u0026digitalocean.ReservedIpv6Args{\n\t\t\tRegionSlug: pulumi.String(\"nyc3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = digitalocean.LookupReservedIpv6Output(ctx, digitalocean.GetReservedIpv6OutputArgs{\n\t\t\tIp: foo.Ip,\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.ReservedIpv6;\nimport com.pulumi.digitalocean.ReservedIpv6Args;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetReservedIpv6Args;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var foo = new ReservedIpv6(\"foo\", ReservedIpv6Args.builder()\n            .regionSlug(\"nyc3\")\n            .build());\n\n        final var foobar = DigitaloceanFunctions.getReservedIpv6(GetReservedIpv6Args.builder()\n            .ip(foo.ip())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foo:\n    type: digitalocean:ReservedIpv6\n    properties:\n      regionSlug: nyc3\nvariables:\n  foobar:\n    fn::invoke:\n      function: digitalocean:getReservedIpv6\n      arguments:\n        ip: ${foo.ip}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getReservedIpv6.\n",
                "properties": {
                    "ip": {
                        "type": "string",
                        "description": "The allocated IPv6 address of the specific reserved IPv6 to retrieve.\n"
                    }
                },
                "type": "object",
                "required": [
                    "ip"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getReservedIpv6.\n",
                "properties": {
                    "dropletId": {
                        "description": "The Droplet id that the reserved IP has been assigned to.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "ip": {
                        "type": "string"
                    },
                    "regionSlug": {
                        "description": "The region that the reserved IPv6 is reserved to.\n",
                        "type": "string"
                    },
                    "urn": {
                        "description": "The uniform resource name of the reserved IPv6.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "dropletId",
                    "ip",
                    "regionSlug",
                    "urn",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getSizes:getSizes": {
            "description": "Retrieves information about the Droplet sizes that DigitalOcean supports, with\nthe ability to filter and sort the results. If no filters are specified, all sizes\nwill be returned.\n\n## Example Usage\n\nMost common usage will probably be to supply a size to Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst main = digitalocean.getSizes({\n    filters: [{\n        key: \"slug\",\n        values: [\"s-1vcpu-1gb\"],\n    }],\n});\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.SGP1,\n    size: digitalocean.DropletSlug[main.then(main =\u003e main.sizes)[0].slug],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmain = digitalocean.get_sizes(filters=[{\n    \"key\": \"slug\",\n    \"values\": [\"s-1vcpu-1gb\"],\n}])\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.SGP1,\n    size=digitalocean.DropletSlug(main.sizes[0][\"slug\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = DigitalOcean.GetSizes.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSizesFilterInputArgs\n            {\n                Key = \"slug\",\n                Values = new[]\n                {\n                    \"s-1vcpu-1gb\",\n                },\n            },\n        },\n    });\n\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.SGP1,\n        Size = System.Enum.Parse\u003cDigitalOcean.DropletSlug\u003e(main.Apply(getSizesResult =\u003e getSizesResult.Sizes)[0].Slug),\n    });\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.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSizesArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = DigitaloceanFunctions.getSizes(GetSizesArgs.builder()\n            .filters(GetSizesFilterArgs.builder()\n                .key(\"slug\")\n                .values(\"s-1vcpu-1gb\")\n                .build())\n            .build());\n\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"sgp1\")\n            .size(main.sizes()[0].slug())\n            .build());\n\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe data source also supports multiple filters and sorts. For example, to fetch sizes with 1 or 2 virtual CPU that are available \"sgp1\" region, then pick the cheapest one:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst main = digitalocean.getSizes({\n    filters: [\n        {\n            key: \"vcpus\",\n            values: [\n                \"1\",\n                \"2\",\n            ],\n        },\n        {\n            key: \"regions\",\n            values: [\"sgp1\"],\n        },\n    ],\n    sorts: [{\n        key: \"price_monthly\",\n        direction: \"asc\",\n    }],\n});\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.SGP1,\n    size: digitalocean.DropletSlug[main.then(main =\u003e main.sizes)[0].slug],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmain = digitalocean.get_sizes(filters=[\n        {\n            \"key\": \"vcpus\",\n            \"values\": [\n                \"1\",\n                \"2\",\n            ],\n        },\n        {\n            \"key\": \"regions\",\n            \"values\": [\"sgp1\"],\n        },\n    ],\n    sorts=[{\n        \"key\": \"price_monthly\",\n        \"direction\": \"asc\",\n    }])\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.SGP1,\n    size=digitalocean.DropletSlug(main.sizes[0][\"slug\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = DigitalOcean.GetSizes.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSizesFilterInputArgs\n            {\n                Key = \"vcpus\",\n                Values = new[]\n                {\n                    \"1\",\n                    \"2\",\n                },\n            },\n            new DigitalOcean.Inputs.GetSizesFilterInputArgs\n            {\n                Key = \"regions\",\n                Values = new[]\n                {\n                    \"sgp1\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetSizesSortInputArgs\n            {\n                Key = \"price_monthly\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.SGP1,\n        Size = System.Enum.Parse\u003cDigitalOcean.DropletSlug\u003e(main.Apply(getSizesResult =\u003e getSizesResult.Sizes)[0].Slug),\n    });\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.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSizesArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = DigitaloceanFunctions.getSizes(GetSizesArgs.builder()\n            .filters(            \n                GetSizesFilterArgs.builder()\n                    .key(\"vcpus\")\n                    .values(                    \n                        \"1\",\n                        \"2\")\n                    .build(),\n                GetSizesFilterArgs.builder()\n                    .key(\"regions\")\n                    .values(\"sgp1\")\n                    .build())\n            .sorts(GetSizesSortArgs.builder()\n                .key(\"price_monthly\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"sgp1\")\n            .size(main.sizes()[0].slug())\n            .build());\n\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe data source can also handle multiple sorts. In which case, the sort will be applied in the order it is defined. For example, to sort by memory in ascending order, then sort by disk in descending order between sizes with same memory:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst main = digitalocean.getSizes({\n    sorts: [\n        {\n            key: \"memory\",\n            direction: \"asc\",\n        },\n        {\n            key: \"disk\",\n            direction: \"desc\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmain = digitalocean.get_sizes(sorts=[\n    {\n        \"key\": \"memory\",\n        \"direction\": \"asc\",\n    },\n    {\n        \"key\": \"disk\",\n        \"direction\": \"desc\",\n    },\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var main = DigitalOcean.GetSizes.Invoke(new()\n    {\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetSizesSortInputArgs\n            {\n                Key = \"memory\",\n                Direction = \"asc\",\n            },\n            new DigitalOcean.Inputs.GetSizesSortInputArgs\n            {\n                Key = \"disk\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSizes(ctx, \u0026digitalocean.GetSizesArgs{\n\t\t\tSorts: []digitalocean.GetSizesSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"memory\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tKey:       \"disk\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSizesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var main = DigitaloceanFunctions.getSizes(GetSizesArgs.builder()\n            .sorts(            \n                GetSizesSortArgs.builder()\n                    .key(\"memory\")\n                    .direction(\"asc\")\n                    .build(),\n                GetSizesSortArgs.builder()\n                    .key(\"disk\")\n                    .direction(\"desc\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  main:\n    fn::invoke:\n      function: digitalocean:getSizes\n      arguments:\n        sorts:\n          - key: memory\n            direction: asc\n          - key: disk\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSizes.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSizesFilter:getSizesFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSizesSort:getSizesSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getSizes.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSizesFilter:getSizesFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "sizes": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSizesSize:getSizesSize"
                        },
                        "type": "array"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSizesSort:getSizesSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "sizes",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getSpacesBucket:getSpacesBucket": {
            "description": "Get information on a Spaces bucket for use in other resources. This is useful if the Spaces bucket in question\nis not managed by Terraform or you need to utilize any of the bucket's data.\n\n## Example Usage\n\nGet the bucket by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getSpacesBucket({\n    name: \"my-spaces-bucket\",\n    region: \"nyc3\",\n});\nexport const bucketDomainName = example.then(example =\u003e example.bucketDomainName);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_spaces_bucket(name=\"my-spaces-bucket\",\n    region=\"nyc3\")\npulumi.export(\"bucketDomainName\", example.bucket_domain_name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetSpacesBucket.Invoke(new()\n    {\n        Name = \"my-spaces-bucket\",\n        Region = \"nyc3\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"bucketDomainName\"] = example.Apply(getSpacesBucketResult =\u003e getSpacesBucketResult.BucketDomainName),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupSpacesBucket(ctx, \u0026digitalocean.LookupSpacesBucketArgs{\n\t\t\tName:   \"my-spaces-bucket\",\n\t\t\tRegion: \"nyc3\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"bucketDomainName\", example.BucketDomainName)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getSpacesBucket(GetSpacesBucketArgs.builder()\n            .name(\"my-spaces-bucket\")\n            .region(\"nyc3\")\n            .build());\n\n        ctx.export(\"bucketDomainName\", example.bucketDomainName());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getSpacesBucket\n      arguments:\n        name: my-spaces-bucket\n        region: nyc3\noutputs:\n  bucketDomainName: ${example.bucketDomainName}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSpacesBucket.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the Spaces bucket.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The slug of the region where the bucket is stored.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name",
                    "region"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getSpacesBucket.\n",
                "properties": {
                    "bucketDomainName": {
                        "description": "The FQDN of the bucket (e.g. bucket-name.nyc3.digitaloceanspaces.com)\n",
                        "type": "string"
                    },
                    "endpoint": {
                        "description": "The FQDN of the bucket without the bucket name (e.g. nyc3.digitaloceanspaces.com)\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Spaces bucket\n",
                        "type": "string"
                    },
                    "region": {
                        "description": "The slug of the region where the bucket is stored.\n",
                        "type": "string"
                    },
                    "urn": {
                        "description": "The uniform resource name of the bucket\n",
                        "type": "string"
                    }
                },
                "required": [
                    "bucketDomainName",
                    "endpoint",
                    "name",
                    "region",
                    "urn",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getSpacesBucketObject:getSpacesBucketObject": {
            "description": "The Spaces object data source allows access to the metadata and\n_optionally_ (see below) content of an object stored inside a Spaces bucket.\n\n\u003e **Note:** The content of an object (\u003cspan pulumi-lang-nodejs=\"`body`\" pulumi-lang-dotnet=\"`Body`\" pulumi-lang-go=\"`body`\" pulumi-lang-python=\"`body`\" pulumi-lang-yaml=\"`body`\" pulumi-lang-java=\"`body`\"\u003e`body`\u003c/span\u003e field) is available only for objects which have a human-readable\n`Content-Type` (`text/*` and `application/json`). This is to prevent printing unsafe characters and potentially\ndownloading large amount of data which would be thrown away in favor of metadata.\n\n## Example Usage\n\nThe following example retrieves a text object (which must have a `Content-Type`\nvalue starting with `text/`) and uses it as the \u003cspan pulumi-lang-nodejs=\"`userData`\" pulumi-lang-dotnet=\"`UserData`\" pulumi-lang-go=\"`userData`\" pulumi-lang-python=\"`user_data`\" pulumi-lang-yaml=\"`userData`\" pulumi-lang-java=\"`userData`\"\u003e`user_data`\u003c/span\u003e for a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst bootstrapScript = digitalocean.getSpacesBucketObject({\n    bucket: \"ourcorp-deploy-config\",\n    region: \"nyc3\",\n    key: \"droplet-bootstrap-script.sh\",\n});\nconst web = new digitalocean.Droplet(\"web\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"web-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    userData: bootstrapScript.then(bootstrapScript =\u003e bootstrapScript.body),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nbootstrap_script = digitalocean.get_spaces_bucket_object(bucket=\"ourcorp-deploy-config\",\n    region=\"nyc3\",\n    key=\"droplet-bootstrap-script.sh\")\nweb = digitalocean.Droplet(\"web\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"web-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    user_data=bootstrap_script.body)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bootstrapScript = DigitalOcean.GetSpacesBucketObject.Invoke(new()\n    {\n        Bucket = \"ourcorp-deploy-config\",\n        Region = \"nyc3\",\n        Key = \"droplet-bootstrap-script.sh\",\n    });\n\n    var web = new DigitalOcean.Droplet(\"web\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"web-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        UserData = bootstrapScript.Apply(getSpacesBucketObjectResult =\u003e getSpacesBucketObjectResult.Body),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbootstrapScript, err := digitalocean.LookupSpacesBucketObject(ctx, \u0026digitalocean.LookupSpacesBucketObjectArgs{\n\t\t\tBucket: \"ourcorp-deploy-config\",\n\t\t\tRegion: \"nyc3\",\n\t\t\tKey:    \"droplet-bootstrap-script.sh\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"web\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:    pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:     pulumi.String(\"web-1\"),\n\t\t\tRegion:   pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:     pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tUserData: pulumi.String(bootstrapScript.Body),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketObjectArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 bootstrapScript = DigitaloceanFunctions.getSpacesBucketObject(GetSpacesBucketObjectArgs.builder()\n            .bucket(\"ourcorp-deploy-config\")\n            .region(\"nyc3\")\n            .key(\"droplet-bootstrap-script.sh\")\n            .build());\n\n        var web = new Droplet(\"web\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"web-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .userData(bootstrapScript.body())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  web:\n    type: digitalocean:Droplet\n    properties:\n      image: ubuntu-18-04-x64\n      name: web-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      userData: ${bootstrapScript.body}\nvariables:\n  bootstrapScript:\n    fn::invoke:\n      function: digitalocean:getSpacesBucketObject\n      arguments:\n        bucket: ourcorp-deploy-config\n        region: nyc3\n        key: droplet-bootstrap-script.sh\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSpacesBucketObject.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "The name of the bucket to read the object from.\n"
                    },
                    "key": {
                        "type": "string",
                        "description": "The full path to the object inside the bucket\n"
                    },
                    "range": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string",
                        "description": "The slug of the region where the bucket is stored.\n"
                    },
                    "versionId": {
                        "type": "string",
                        "description": "Specific version ID of the object returned (defaults to latest version)\n"
                    }
                },
                "type": "object",
                "required": [
                    "bucket",
                    "key",
                    "region"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getSpacesBucketObject.\n",
                "properties": {
                    "body": {
                        "description": "Object data (see **limitations above** to understand cases in which this field is actually available)\n",
                        "type": "string"
                    },
                    "bucket": {
                        "type": "string"
                    },
                    "cacheControl": {
                        "description": "Specifies caching behavior along the request/reply chain.\n",
                        "type": "string"
                    },
                    "contentDisposition": {
                        "description": "Specifies presentational information for the object.\n",
                        "type": "string"
                    },
                    "contentEncoding": {
                        "description": "Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field.\n",
                        "type": "string"
                    },
                    "contentLanguage": {
                        "description": "The language the content is in.\n",
                        "type": "string"
                    },
                    "contentLength": {
                        "description": "Size of the body in bytes.\n",
                        "type": "integer"
                    },
                    "contentType": {
                        "description": "A standard MIME type describing the format of the object data.\n",
                        "type": "string"
                    },
                    "etag": {
                        "description": "[ETag](https://en.wikipedia.org/wiki/HTTP_ETag) generated for the object (an MD5 sum of the object content in case it's not encrypted)\n",
                        "type": "string"
                    },
                    "expiration": {
                        "description": "If the object expiration is configured (see [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)), the field includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded.\n",
                        "type": "string"
                    },
                    "expires": {
                        "description": "The date and time at which the object is no longer cacheable.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "key": {
                        "type": "string"
                    },
                    "lastModified": {
                        "description": "Last modified date of the object in RFC1123 format (e.g. `Mon, 02 Jan 2006 15:04:05 MST`)\n",
                        "type": "string"
                    },
                    "metadata": {
                        "additionalProperties": {
                            "type": "string"
                        },
                        "description": "A map of metadata stored with the object in Spaces\n",
                        "type": "object"
                    },
                    "range": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "versionId": {
                        "description": "The latest version ID of the object returned.\n",
                        "type": "string"
                    },
                    "websiteRedirectLocation": {
                        "description": "If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Spaces stores the value of this header in the object metadata.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "body",
                    "bucket",
                    "cacheControl",
                    "contentDisposition",
                    "contentEncoding",
                    "contentLanguage",
                    "contentLength",
                    "contentType",
                    "etag",
                    "expiration",
                    "expires",
                    "key",
                    "lastModified",
                    "metadata",
                    "region",
                    "versionId",
                    "websiteRedirectLocation",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getSpacesBucketObjects:getSpacesBucketObjects": {
            "description": "\u003e **NOTE on \u003cspan pulumi-lang-nodejs=\"`maxKeys`\" pulumi-lang-dotnet=\"`MaxKeys`\" pulumi-lang-go=\"`maxKeys`\" pulumi-lang-python=\"`max_keys`\" pulumi-lang-yaml=\"`maxKeys`\" pulumi-lang-java=\"`maxKeys`\"\u003e`max_keys`\u003c/span\u003e:** Retrieving very large numbers of keys can adversely affect Terraform's performance.\n\nThe bucket-objects data source returns keys (i.e., file names) and other metadata about objects in a Spaces bucket.\n\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSpacesBucketObjects.\n",
                "properties": {
                    "bucket": {
                        "type": "string",
                        "description": "Lists object keys in this Spaces bucket\n"
                    },
                    "delimiter": {
                        "type": "string",
                        "description": "A character used to group keys (Default: none)\n"
                    },
                    "encodingType": {
                        "type": "string",
                        "description": "Encodes keys using this method (Default: none; besides none, only \"url\" can be used)\n"
                    },
                    "maxKeys": {
                        "type": "integer",
                        "description": "Maximum object keys to return (Default: 1000)\n"
                    },
                    "prefix": {
                        "type": "string",
                        "description": "Limits results to object keys with this prefix (Default: none)\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The slug of the region where the bucket is stored.\n"
                    }
                },
                "type": "object",
                "required": [
                    "bucket",
                    "region"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getSpacesBucketObjects.\n",
                "properties": {
                    "bucket": {
                        "type": "string"
                    },
                    "commonPrefixes": {
                        "description": "List of any keys between \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e and the next occurrence of \u003cspan pulumi-lang-nodejs=\"`delimiter`\" pulumi-lang-dotnet=\"`Delimiter`\" pulumi-lang-go=\"`delimiter`\" pulumi-lang-python=\"`delimiter`\" pulumi-lang-yaml=\"`delimiter`\" pulumi-lang-java=\"`delimiter`\"\u003e`delimiter`\u003c/span\u003e (i.e., similar to subdirectories of the \u003cspan pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\"\u003e`prefix`\u003c/span\u003e \"directory\"); the list is only returned when you specify \u003cspan pulumi-lang-nodejs=\"`delimiter`\" pulumi-lang-dotnet=\"`Delimiter`\" pulumi-lang-go=\"`delimiter`\" pulumi-lang-python=\"`delimiter`\" pulumi-lang-yaml=\"`delimiter`\" pulumi-lang-java=\"`delimiter`\"\u003e`delimiter`\u003c/span\u003e\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "delimiter": {
                        "type": "string"
                    },
                    "encodingType": {
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "keys": {
                        "description": "List of strings representing object keys\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "maxKeys": {
                        "type": "integer"
                    },
                    "owners": {
                        "description": "List of strings representing object owner IDs\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "prefix": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    }
                },
                "required": [
                    "bucket",
                    "commonPrefixes",
                    "keys",
                    "owners",
                    "region",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getSpacesBuckets:getSpacesBuckets": {
            "description": "Get information on Spaces buckets for use in other resources, with the ability to filter and sort the results.\nIf no filters are specified, all Spaces buckets will be returned.\n\nNote: You can use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.SpacesBucket`\" pulumi-lang-dotnet=\"`digitalocean.SpacesBucket`\" pulumi-lang-go=\"`SpacesBucket`\" pulumi-lang-python=\"`SpacesBucket`\" pulumi-lang-yaml=\"`digitalocean.SpacesBucket`\" pulumi-lang-java=\"`digitalocean.SpacesBucket`\"\u003e`digitalocean.SpacesBucket`\u003c/span\u003e data source to\nobtain metadata about a single bucket if you already know its \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e.\n\n## Example Usage\n\nUse the \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block with a \u003cspan pulumi-lang-nodejs=\"`key`\" pulumi-lang-dotnet=\"`Key`\" pulumi-lang-go=\"`key`\" pulumi-lang-python=\"`key`\" pulumi-lang-yaml=\"`key`\" pulumi-lang-java=\"`key`\"\u003e`key`\u003c/span\u003e string and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e list to filter buckets.\n\nGet all buckets in a region:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst nyc3 = digitalocean.getSpacesBuckets({\n    filters: [{\n        key: \"region\",\n        values: [\"nyc3\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnyc3 = digitalocean.get_spaces_buckets(filters=[{\n    \"key\": \"region\",\n    \"values\": [\"nyc3\"],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nyc3 = DigitalOcean.GetSpacesBuckets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsFilterInputArgs\n            {\n                Key = \"region\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSpacesBuckets(ctx, \u0026digitalocean.GetSpacesBucketsArgs{\n\t\t\tFilters: []digitalocean.GetSpacesBucketsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"region\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 nyc3 = DigitaloceanFunctions.getSpacesBuckets(GetSpacesBucketsArgs.builder()\n            .filters(GetSpacesBucketsFilterArgs.builder()\n                .key(\"region\")\n                .values(\"nyc3\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  nyc3:\n    fn::invoke:\n      function: digitalocean:getSpacesBuckets\n      arguments:\n        filters:\n          - key: region\n            values:\n              - nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\nYou can sort the results as well:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst nyc3 = digitalocean.getSpacesBuckets({\n    filters: [{\n        key: \"region\",\n        values: [\"nyc3\"],\n    }],\n    sorts: [{\n        key: \"name\",\n        direction: \"desc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nnyc3 = digitalocean.get_spaces_buckets(filters=[{\n        \"key\": \"region\",\n        \"values\": [\"nyc3\"],\n    }],\n    sorts=[{\n        \"key\": \"name\",\n        \"direction\": \"desc\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var nyc3 = DigitalOcean.GetSpacesBuckets.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsFilterInputArgs\n            {\n                Key = \"region\",\n                Values = new[]\n                {\n                    \"nyc3\",\n                },\n            },\n        },\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetSpacesBucketsSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"desc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSpacesBuckets(ctx, \u0026digitalocean.GetSpacesBucketsArgs{\n\t\t\tFilters: []digitalocean.GetSpacesBucketsFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"region\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"nyc3\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSorts: []digitalocean.GetSpacesBucketsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"desc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesBucketsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 nyc3 = DigitaloceanFunctions.getSpacesBuckets(GetSpacesBucketsArgs.builder()\n            .filters(GetSpacesBucketsFilterArgs.builder()\n                .key(\"region\")\n                .values(\"nyc3\")\n                .build())\n            .sorts(GetSpacesBucketsSortArgs.builder()\n                .key(\"name\")\n                .direction(\"desc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  nyc3:\n    fn::invoke:\n      function: digitalocean:getSpacesBuckets\n      arguments:\n        filters:\n          - key: region\n            values:\n              - nyc3\n        sorts:\n          - key: name\n            direction: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSpacesBuckets.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSpacesBucketsFilter:getSpacesBucketsFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSpacesBucketsSort:getSpacesBucketsSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getSpacesBuckets.\n",
                "properties": {
                    "buckets": {
                        "description": "A list of Spaces buckets satisfying any \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e criteria. Each bucket has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSpacesBucketsBucket:getSpacesBucketsBucket"
                        },
                        "type": "array"
                    },
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSpacesBucketsFilter:getSpacesBucketsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSpacesBucketsSort:getSpacesBucketsSort"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "buckets",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getSpacesKey:getSpacesKey": {
            "description": "Get information on a Spaces key for use in other resources. This is useful if the Spaces key in question\nis not managed by Terraform or you need to utilize any of the key's data.\n\n## Example Usage\n\nGet the key by access key ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getSpacesKey({\n    accessKey: \"ACCESS_KEY_ID\",\n});\nexport const keyGrants = example.then(example =\u003e example.grants);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_spaces_key(access_key=\"ACCESS_KEY_ID\")\npulumi.export(\"keyGrants\", example.grants)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetSpacesKey.Invoke(new()\n    {\n        AccessKey = \"ACCESS_KEY_ID\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"keyGrants\"] = example.Apply(getSpacesKeyResult =\u003e getSpacesKeyResult.Grants),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupSpacesKey(ctx, \u0026digitalocean.LookupSpacesKeyArgs{\n\t\t\tAccessKey: \"ACCESS_KEY_ID\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"keyGrants\", example.Grants)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSpacesKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getSpacesKey(GetSpacesKeyArgs.builder()\n            .accessKey(\"ACCESS_KEY_ID\")\n            .build());\n\n        ctx.export(\"keyGrants\", example.grants());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getSpacesKey\n      arguments:\n        accessKey: ACCESS_KEY_ID\noutputs:\n  keyGrants: ${example.grants}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSpacesKey.\n",
                "properties": {
                    "accessKey": {
                        "type": "string",
                        "description": "The Access Key ID of the Spaces key.\n"
                    }
                },
                "type": "object",
                "required": [
                    "accessKey"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getSpacesKey.\n",
                "properties": {
                    "accessKey": {
                        "description": "The access key ID of the Spaces key\n",
                        "type": "string"
                    },
                    "createdAt": {
                        "description": "The creation time of the Spaces key\n",
                        "type": "string"
                    },
                    "grants": {
                        "description": "The list of grants associated with the Spaces key.\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSpacesKeyGrant:getSpacesKeyGrant"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the Spaces key\n",
                        "type": "string"
                    }
                },
                "required": [
                    "accessKey",
                    "createdAt",
                    "grants",
                    "name",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getSshKey:getSshKey": {
            "description": "Get information on a ssh key. This data source provides the name, public key,\nand fingerprint as configured on your DigitalOcean account. This is useful if\nthe ssh key in question is not managed by Terraform or you need to utilize any\nof the keys data.\n\nAn error is triggered if the provided ssh key name does not exist.\n\n## Example Usage\n\nGet the ssh key:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getSshKey({\n    name: \"example\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    sshKeys: [example.then(example =\u003e example.id)],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_ssh_key(name=\"example\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    ssh_keys=[example.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetSshKey.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        SshKeys = new[]\n        {\n            example.Apply(getSshKeyResult =\u003e getSshKeyResult.Id),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupSshKey(ctx, \u0026digitalocean.LookupSshKeyArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tSshKeys: pulumi.StringArray{\n\t\t\t\tpulumi.Int(example.Id),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeyArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getSshKey(GetSshKeyArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .sshKeys(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ubuntu-18-04-x64\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      sshKeys:\n        - ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getSshKey\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSshKey.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the ssh key.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getSshKey.\n",
                "properties": {
                    "fingerprint": {
                        "description": "The fingerprint of the public key of the ssh key.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The ID of the ssh key.\n",
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "publicKey": {
                        "description": "The public key of the ssh key.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "fingerprint",
                    "id",
                    "name",
                    "publicKey"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getSshKeys:getSshKeys": {
            "description": "Get information on SSH Keys for use in other resources.\n\nThis data source is useful if the SSH Keys in question are not managed by Terraform or you need to\nutilize any of the SSH Keys' data.\n\nNote: You can use the \u003cspan pulumi-lang-nodejs=\"`digitalocean.SshKey`\" pulumi-lang-dotnet=\"`digitalocean.SshKey`\" pulumi-lang-go=\"`SshKey`\" pulumi-lang-python=\"`SshKey`\" pulumi-lang-yaml=\"`digitalocean.SshKey`\" pulumi-lang-java=\"`digitalocean.SshKey`\"\u003e`digitalocean.SshKey`\u003c/span\u003e data source to obtain metadata\nabout a single SSH Key if you already know the unique \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 to retrieve.\n\n## Example Usage\n\nFor example, to find all SSH keys:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst keys = digitalocean.getSshKeys({\n    sorts: [{\n        key: \"name\",\n        direction: \"asc\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkeys = digitalocean.get_ssh_keys(sorts=[{\n    \"key\": \"name\",\n    \"direction\": \"asc\",\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var keys = DigitalOcean.GetSshKeys.Invoke(new()\n    {\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetSshKeysSortInputArgs\n            {\n                Key = \"name\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSshKeys(ctx, \u0026digitalocean.GetSshKeysArgs{\n\t\t\tSorts: []digitalocean.GetSshKeysSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"name\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeysArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 keys = DigitaloceanFunctions.getSshKeys(GetSshKeysArgs.builder()\n            .sorts(GetSshKeysSortArgs.builder()\n                .key(\"name\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  keys:\n    fn::invoke:\n      function: digitalocean:getSshKeys\n      arguments:\n        sorts:\n          - key: name\n            direction: asc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOr to find ones matching specific values:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst keys = digitalocean.getSshKeys({\n    filters: [{\n        key: \"name\",\n        values: [\n            \"laptop\",\n            \"desktop\",\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nkeys = digitalocean.get_ssh_keys(filters=[{\n    \"key\": \"name\",\n    \"values\": [\n        \"laptop\",\n        \"desktop\",\n    ],\n}])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var keys = DigitalOcean.GetSshKeys.Invoke(new()\n    {\n        Filters = new[]\n        {\n            new DigitalOcean.Inputs.GetSshKeysFilterInputArgs\n            {\n                Key = \"name\",\n                Values = new[]\n                {\n                    \"laptop\",\n                    \"desktop\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.GetSshKeys(ctx, \u0026digitalocean.GetSshKeysArgs{\n\t\t\tFilters: []digitalocean.GetSshKeysFilter{\n\t\t\t\t{\n\t\t\t\t\tKey: \"name\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"laptop\",\n\t\t\t\t\t\t\"desktop\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetSshKeysArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 keys = DigitaloceanFunctions.getSshKeys(GetSshKeysArgs.builder()\n            .filters(GetSshKeysFilterArgs.builder()\n                .key(\"name\")\n                .values(                \n                    \"laptop\",\n                    \"desktop\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  keys:\n    fn::invoke:\n      function: digitalocean:getSshKeys\n      arguments:\n        filters:\n          - key: name\n            values:\n              - laptop\n              - desktop\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getSshKeys.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSshKeysFilter:getSshKeysFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSshKeysSort:getSshKeysSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getSshKeys.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSshKeysFilter:getSshKeysFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSshKeysSort:getSshKeysSort"
                        },
                        "type": "array"
                    },
                    "sshKeys": {
                        "description": "A list of SSH Keys. Each SSH Key has the following attributes:\n",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getSshKeysSshKey:getSshKeysSshKey"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "sshKeys",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getTag:getTag": {
            "description": "Get information on a tag. This data source provides the name as configured on\nyour DigitalOcean account. This is useful if the tag name in question is not\nmanaged by Terraform or you need validate if the tag exists in the account.\n\nAn error is triggered if the provided tag name does not exist.\n\n## Example Usage\n\nGet the tag:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getTag({\n    name: \"example\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    image: \"ubuntu-18-04-x64\",\n    name: \"example-1\",\n    region: digitalocean.Region.NYC2,\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    tags: [example.then(example =\u003e example.name)],\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_tag(name=\"example\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    image=\"ubuntu-18-04-x64\",\n    name=\"example-1\",\n    region=digitalocean.Region.NYC2,\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    tags=[example.name])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetTag.Invoke(new()\n    {\n        Name = \"example\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Image = \"ubuntu-18-04-x64\",\n        Name = \"example-1\",\n        Region = DigitalOcean.Region.NYC2,\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Tags = new[]\n        {\n            example.Apply(getTagResult =\u003e getTagResult.Name),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupTag(ctx, \u0026digitalocean.LookupTagArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tName:   pulumi.String(\"example-1\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC2),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(example.Name),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetTagArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getTag(GetTagArgs.builder()\n            .name(\"example\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .image(\"ubuntu-18-04-x64\")\n            .name(\"example-1\")\n            .region(\"nyc2\")\n            .size(\"s-1vcpu-1gb\")\n            .tags(example.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      image: ubuntu-18-04-x64\n      name: example-1\n      region: nyc2\n      size: s-1vcpu-1gb\n      tags:\n        - ${example.name}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getTag\n      arguments:\n        name: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getTag.\n",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The name of the tag.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getTag.\n",
                "properties": {
                    "databasesCount": {
                        "description": "A count of the database clusters that the tag is applied to.\n",
                        "type": "integer"
                    },
                    "dropletsCount": {
                        "description": "A count of the Droplets the tag is applied to.\n",
                        "type": "integer"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "imagesCount": {
                        "description": "A count of the images that the tag is applied to.\n",
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "totalResourceCount": {
                        "description": "A count of the total number of resources that the tag is applied to.\n",
                        "type": "integer"
                    },
                    "volumeSnapshotsCount": {
                        "description": "A count of the volume snapshots that the tag is applied to.\n",
                        "type": "integer"
                    },
                    "volumesCount": {
                        "description": "A count of the volumes that the tag is applied to.\n",
                        "type": "integer"
                    }
                },
                "required": [
                    "databasesCount",
                    "dropletsCount",
                    "imagesCount",
                    "name",
                    "totalResourceCount",
                    "volumeSnapshotsCount",
                    "volumesCount",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getTags:getTags": {
            "description": "Returns a list of tags in your DigitalOcean account, with the ability to\nfilter and sort the results. If no filters are specified, all tags will be\nreturned.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst list = digitalocean.getTags({\n    sorts: [{\n        key: \"total_resource_count\",\n        direction: \"asc\",\n    }],\n});\nexport const sortedTags = list.then(list =\u003e list.tags);\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nlist = digitalocean.get_tags(sorts=[{\n    \"key\": \"total_resource_count\",\n    \"direction\": \"asc\",\n}])\npulumi.export(\"sortedTags\", list.tags)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var list = DigitalOcean.GetTags.Invoke(new()\n    {\n        Sorts = new[]\n        {\n            new DigitalOcean.Inputs.GetTagsSortInputArgs\n            {\n                Key = \"total_resource_count\",\n                Direction = \"asc\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"sortedTags\"] = list.Apply(getTagsResult =\u003e getTagsResult.Tags),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlist, err := digitalocean.GetTags(ctx, \u0026digitalocean.GetTagsArgs{\n\t\t\tSorts: []digitalocean.GetTagsSort{\n\t\t\t\t{\n\t\t\t\t\tKey:       \"total_resource_count\",\n\t\t\t\t\tDirection: pulumi.StringRef(\"asc\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sortedTags\", list.Tags)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetTagsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 list = DigitaloceanFunctions.getTags(GetTagsArgs.builder()\n            .sorts(GetTagsSortArgs.builder()\n                .key(\"total_resource_count\")\n                .direction(\"asc\")\n                .build())\n            .build());\n\n        ctx.export(\"sortedTags\", list.tags());\n    }\n}\n```\n```yaml\nvariables:\n  list:\n    fn::invoke:\n      function: digitalocean:getTags\n      arguments:\n        sorts:\n          - key: total_resource_count\n            direction: asc\noutputs:\n  sortedTags: ${list.tags}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getTags.\n",
                "properties": {
                    "filters": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getTagsFilter:getTagsFilter"
                        },
                        "description": "Filter the results.\nThe \u003cspan pulumi-lang-nodejs=\"`filter`\" pulumi-lang-dotnet=\"`Filter`\" pulumi-lang-go=\"`filter`\" pulumi-lang-python=\"`filter`\" pulumi-lang-yaml=\"`filter`\" pulumi-lang-java=\"`filter`\"\u003e`filter`\u003c/span\u003e block is documented below.\n"
                    },
                    "sorts": {
                        "type": "array",
                        "items": {
                            "$ref": "#/types/digitalocean:index/getTagsSort:getTagsSort"
                        },
                        "description": "Sort the results.\nThe \u003cspan pulumi-lang-nodejs=\"`sort`\" pulumi-lang-dotnet=\"`Sort`\" pulumi-lang-go=\"`sort`\" pulumi-lang-python=\"`sort`\" pulumi-lang-yaml=\"`sort`\" pulumi-lang-java=\"`sort`\"\u003e`sort`\u003c/span\u003e block is documented below.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getTags.\n",
                "properties": {
                    "filters": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getTagsFilter:getTagsFilter"
                        },
                        "type": "array"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "sorts": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getTagsSort:getTagsSort"
                        },
                        "type": "array"
                    },
                    "tags": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getTagsTag:getTagsTag"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "tags",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getVolume:getVolume": {
            "description": "Get information on a volume for use in other resources. This data source provides\nall of the volumes properties as configured on your DigitalOcean account. This is\nuseful if the volume in question is not managed by Terraform or you need to utilize\nany of the volumes data.\n\nAn error is triggered if the provided volume name does not exist.\n\n## Example Usage\n\nGet the volume:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVolume({\n    name: \"app-data\",\n    region: \"nyc3\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_volume(name=\"app-data\",\n    region=\"nyc3\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVolume.Invoke(new()\n    {\n        Name = \"app-data\",\n        Region = \"nyc3\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVolume(ctx, \u0026digitalocean.LookupVolumeArgs{\n\t\t\tName:   \"app-data\",\n\t\t\tRegion: pulumi.StringRef(\"nyc3\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVolume(GetVolumeArgs.builder()\n            .name(\"app-data\")\n            .region(\"nyc3\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVolume\n      arguments:\n        name: app-data\n        region: nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a volume to attach it to a Droplet:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVolume({\n    name: \"app-data\",\n    region: \"nyc3\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"foo\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n});\nconst foobar = new digitalocean.VolumeAttachment(\"foobar\", {\n    dropletId: exampleDroplet.id,\n    volumeId: example.then(example =\u003e example.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_volume(name=\"app-data\",\n    region=\"nyc3\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"foo\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3)\nfoobar = digitalocean.VolumeAttachment(\"foobar\",\n    droplet_id=example_droplet.id,\n    volume_id=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVolume.Invoke(new()\n    {\n        Name = \"app-data\",\n        Region = \"nyc3\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"foo\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n    });\n\n    var foobar = new DigitalOcean.VolumeAttachment(\"foobar\", new()\n    {\n        DropletId = exampleDroplet.Id,\n        VolumeId = example.Apply(getVolumeResult =\u003e getVolumeResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVolume(ctx, \u0026digitalocean.LookupVolumeArgs{\n\t\t\tName:   \"app-data\",\n\t\t\tRegion: pulumi.StringRef(\"nyc3\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDroplet, err := digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:   pulumi.String(\"foo\"),\n\t\t\tSize:   pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:  pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion: pulumi.String(digitalocean.RegionNYC3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolumeAttachment(ctx, \"foobar\", \u0026digitalocean.VolumeAttachmentArgs{\n\t\t\tDropletId: exampleDroplet.ID(),\n\t\t\tVolumeId:  pulumi.String(example.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport com.pulumi.digitalocean.VolumeAttachment;\nimport com.pulumi.digitalocean.VolumeAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVolume(GetVolumeArgs.builder()\n            .name(\"app-data\")\n            .region(\"nyc3\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"foo\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .build());\n\n        var foobar = new VolumeAttachment(\"foobar\", VolumeAttachmentArgs.builder()\n            .dropletId(exampleDroplet.id())\n            .volumeId(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: foo\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n  foobar:\n    type: digitalocean:VolumeAttachment\n    properties:\n      dropletId: ${exampleDroplet.id}\n      volumeId: ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVolume\n      arguments:\n        name: app-data\n        region: nyc3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVolume.\n",
                "properties": {
                    "description": {
                        "type": "string",
                        "description": "Text describing a block storage volume.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of block storage volume.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The region the block storage volume is provisioned in.\n"
                    }
                },
                "type": "object",
                "required": [
                    "name"
                ]
            },
            "outputs": {
                "description": "A collection of values returned by getVolume.\n",
                "properties": {
                    "description": {
                        "description": "Text describing a block storage volume.\n",
                        "type": "string"
                    },
                    "dropletIds": {
                        "description": "A list of associated Droplet ids.\n",
                        "items": {
                            "type": "integer"
                        },
                        "type": "array"
                    },
                    "filesystemLabel": {
                        "description": "Filesystem label currently in-use on the block storage volume.\n",
                        "type": "string"
                    },
                    "filesystemType": {
                        "description": "Filesystem type currently in-use on the block storage volume.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "size": {
                        "description": "The size of the block storage volume in GiB.\n",
                        "type": "integer"
                    },
                    "tags": {
                        "description": "A list of the tags associated to the Volume.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "urn": {
                        "description": "The uniform resource name for the storage volume.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "dropletIds",
                    "filesystemLabel",
                    "filesystemType",
                    "name",
                    "size",
                    "tags",
                    "urn",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getVolumeSnapshot:getVolumeSnapshot": {
            "description": "Volume snapshots are saved instances of a block storage volume. Use this data\nsource to retrieve the ID of a DigitalOcean volume snapshot for use in other\nresources.\n\n## Example Usage\n\nGet the volume snapshot:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst snapshot = digitalocean.getVolumeSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsnapshot = digitalocean.get_volume_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var snapshot = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  snapshot:\n    fn::invoke:\n      function: digitalocean:getVolumeSnapshot\n      arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a volume snapshot to create a new volume based on it:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst snapshot = digitalocean.getVolumeSnapshot({\n    nameRegex: \"^web\",\n    region: \"nyc3\",\n    mostRecent: true,\n});\nconst foobar = new digitalocean.Volume(\"foobar\", {\n    region: digitalocean.Region.NYC3,\n    name: \"baz\",\n    size: 100,\n    snapshotId: snapshot.then(snapshot =\u003e snapshot.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nsnapshot = digitalocean.get_volume_snapshot(name_regex=\"^web\",\n    region=\"nyc3\",\n    most_recent=True)\nfoobar = digitalocean.Volume(\"foobar\",\n    region=digitalocean.Region.NYC3,\n    name=\"baz\",\n    size=100,\n    snapshot_id=snapshot.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var snapshot = DigitalOcean.GetVolumeSnapshot.Invoke(new()\n    {\n        NameRegex = \"^web\",\n        Region = \"nyc3\",\n        MostRecent = true,\n    });\n\n    var foobar = new DigitalOcean.Volume(\"foobar\", new()\n    {\n        Region = DigitalOcean.Region.NYC3,\n        Name = \"baz\",\n        Size = 100,\n        SnapshotId = snapshot.Apply(getVolumeSnapshotResult =\u003e getVolumeSnapshotResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsnapshot, err := digitalocean.LookupVolumeSnapshot(ctx, \u0026digitalocean.LookupVolumeSnapshotArgs{\n\t\t\tNameRegex:  pulumi.StringRef(\"^web\"),\n\t\t\tRegion:     pulumi.StringRef(\"nyc3\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewVolume(ctx, \"foobar\", \u0026digitalocean.VolumeArgs{\n\t\t\tRegion:     pulumi.String(digitalocean.RegionNYC3),\n\t\t\tName:       pulumi.String(\"baz\"),\n\t\t\tSize:       pulumi.Int(100),\n\t\t\tSnapshotId: pulumi.String(snapshot.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVolumeSnapshotArgs;\nimport com.pulumi.digitalocean.Volume;\nimport com.pulumi.digitalocean.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var snapshot = DigitaloceanFunctions.getVolumeSnapshot(GetVolumeSnapshotArgs.builder()\n            .nameRegex(\"^web\")\n            .region(\"nyc3\")\n            .mostRecent(true)\n            .build());\n\n        var foobar = new Volume(\"foobar\", VolumeArgs.builder()\n            .region(\"nyc3\")\n            .name(\"baz\")\n            .size(100)\n            .snapshotId(snapshot.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  foobar:\n    type: digitalocean:Volume\n    properties:\n      region: nyc3\n      name: baz\n      size: 100\n      snapshotId: ${snapshot.id}\nvariables:\n  snapshot:\n    fn::invoke:\n      function: digitalocean:getVolumeSnapshot\n      arguments:\n        nameRegex: ^web\n        region: nyc3\n        mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVolumeSnapshot.\n",
                "properties": {
                    "mostRecent": {
                        "type": "boolean",
                        "description": "If more than one result is returned, use the most recent volume snapshot.\n\n\u003e **NOTE:** If more or less than a single match is returned by the search,\nTerraform will fail. Ensure that your search is specific enough to return\na single volume snapshot ID only, or use \u003cspan pulumi-lang-nodejs=\"`mostRecent`\" pulumi-lang-dotnet=\"`MostRecent`\" pulumi-lang-go=\"`mostRecent`\" pulumi-lang-python=\"`most_recent`\" pulumi-lang-yaml=\"`mostRecent`\" pulumi-lang-java=\"`mostRecent`\"\u003e`most_recent`\u003c/span\u003e to choose the most recent one.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of the volume snapshot.\n"
                    },
                    "nameRegex": {
                        "type": "string",
                        "description": "A regex string to apply to the volume snapshot list returned by DigitalOcean. This allows more advanced filtering not supported from the DigitalOcean API. This filtering is done locally on what DigitalOcean returns.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "A \"slug\" representing a DigitalOcean region (e.g. \u003cspan pulumi-lang-nodejs=\"`nyc1`\" pulumi-lang-dotnet=\"`Nyc1`\" pulumi-lang-go=\"`nyc1`\" pulumi-lang-python=\"`nyc1`\" pulumi-lang-yaml=\"`nyc1`\" pulumi-lang-java=\"`nyc1`\"\u003e`nyc1`\u003c/span\u003e). If set, only volume snapshots available in the region will be returned.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getVolumeSnapshot.\n",
                "properties": {
                    "createdAt": {
                        "description": "The date and time the volume snapshot was created.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The provider-assigned unique ID for this managed resource.",
                        "type": "string"
                    },
                    "minDiskSize": {
                        "description": "The minimum size in gigabytes required for a volume to be created based on this volume snapshot.\n",
                        "type": "integer"
                    },
                    "mostRecent": {
                        "type": "boolean"
                    },
                    "name": {
                        "type": "string"
                    },
                    "nameRegex": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "regions": {
                        "description": "A list of DigitalOcean region \"slugs\" indicating where the volume snapshot is available.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "size": {
                        "description": "The billable size of the volume snapshot in gigabytes.\n",
                        "type": "number"
                    },
                    "tags": {
                        "description": "A list of the tags associated to the volume snapshot.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    },
                    "volumeId": {
                        "description": "The ID of the volume from which the volume snapshot originated.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "minDiskSize",
                    "regions",
                    "size",
                    "tags",
                    "volumeId",
                    "id"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getVpc:getVpc": {
            "description": "Retrieve information about a VPC for use in other resources.\n\nThis data source provides all of the VPC's properties as configured on your\nDigitalOcean account. This is useful if the VPC in question is not managed by\nTerraform or you need to utilize any of the VPC's data.\n\nVPCs may be looked up by \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e. Specifying a \u003cspan pulumi-lang-nodejs=\"`region`\" pulumi-lang-dotnet=\"`Region`\" pulumi-lang-go=\"`region`\" pulumi-lang-python=\"`region`\" pulumi-lang-yaml=\"`region`\" pulumi-lang-java=\"`region`\"\u003e`region`\u003c/span\u003e will\nreturn that that region's default VPC.\n\n## Example Usage\n\n### VPC By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpc({\n    name: \"example-network\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc(name=\"example-network\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpc.Invoke(new()\n    {\n        Name = \"example-network\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpc(ctx, \u0026digitalocean.LookupVpcArgs{\n\t\t\tName: pulumi.StringRef(\"example-network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpc(GetVpcArgs.builder()\n            .name(\"example-network\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpc\n      arguments:\n        name: example-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC to assign a Droplet to it:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpc({\n    name: \"example-network\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc(name=\"example-network\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpc.Invoke(new()\n    {\n        Name = \"example-network\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcResult =\u003e getVpcResult.Id),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpc(ctx, \u0026digitalocean.LookupVpcArgs{\n\t\t\tName: pulumi.StringRef(\"example-network\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpc(GetVpcArgs.builder()\n            .name(\"example-network\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.id}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpc\n      arguments:\n        name: example-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVpc.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The unique identifier of an existing VPC.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of an existing VPC.\n"
                    },
                    "region": {
                        "type": "string",
                        "description": "The DigitalOcean region slug for the VPC's location.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getVpc.\n",
                "properties": {
                    "createdAt": {
                        "description": "The date and time of when the VPC was created.\n",
                        "type": "string"
                    },
                    "default": {
                        "description": "A boolean indicating whether or not the VPC is the default one for the region.\n",
                        "type": "boolean"
                    },
                    "description": {
                        "description": "A free-form text field describing the VPC.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The unique identifier for the VPC.\n",
                        "type": "string"
                    },
                    "ipRange": {
                        "description": "The range of IP addresses for the VPC in CIDR notation.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the VPC.\n",
                        "type": "string"
                    },
                    "region": {
                        "description": "The DigitalOcean region slug for the VPC's location.\n",
                        "type": "string"
                    },
                    "urn": {
                        "description": "The uniform resource name (URN) for the VPC.\n",
                        "type": "string"
                    }
                },
                "required": [
                    "createdAt",
                    "default",
                    "description",
                    "id",
                    "ipRange",
                    "name",
                    "region",
                    "urn"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getVpcNatGateway:getVpcNatGateway": {
            "description": "Get information on a VPC NAT Gateway for use with other managed resources  This datasource provides all the VPC\nNAT Gateway properties as configured on the DigitalOcean account. This is useful if the VPC NAT Gateway in question\nis not managed by Terraform, or any of the relevant data would need to be referenced in other managed resources.\n\nNOTE: VPC NAT Gateway is currently in Private Preview.\n\n## Example Usage\n\nGet the VPC NAT Gateway by name:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst my_imported_vpc_nat_gateway = digitalocean.getVpcNatGateway({\n    name: my_existing_vpc_nat_gateway.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmy_imported_vpc_nat_gateway = digitalocean.get_vpc_nat_gateway(name=my_existing_vpc_nat_gateway[\"name\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_imported_vpc_nat_gateway = DigitalOcean.GetVpcNatGateway.Invoke(new()\n    {\n        Name = my_existing_vpc_nat_gateway.Name,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpcNatGateway(ctx, \u0026digitalocean.LookupVpcNatGatewayArgs{\n\t\t\tName: pulumi.StringRef(my_existing_vpc_nat_gateway.Name),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcNatGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 my-imported-vpc-nat-gateway = DigitaloceanFunctions.getVpcNatGateway(GetVpcNatGatewayArgs.builder()\n            .name(my_existing_vpc_nat_gateway.name())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  my-imported-vpc-nat-gateway:\n    fn::invoke:\n      function: digitalocean:getVpcNatGateway\n      arguments:\n        name: ${[\"my-existing-vpc-nat-gateway\"].name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nGet the VPC NAT Gateway by ID:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst my_imported_vpc_nat_gateway = digitalocean.getVpcNatGateway({\n    id: my_existing_vpc_nat_gateway.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nmy_imported_vpc_nat_gateway = digitalocean.get_vpc_nat_gateway(id=my_existing_vpc_nat_gateway[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var my_imported_vpc_nat_gateway = DigitalOcean.GetVpcNatGateway.Invoke(new()\n    {\n        Id = my_existing_vpc_nat_gateway.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpcNatGateway(ctx, \u0026digitalocean.LookupVpcNatGatewayArgs{\n\t\t\tId: pulumi.StringRef(my_existing_vpc_nat_gateway.Id),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcNatGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic 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 my-imported-vpc-nat-gateway = DigitaloceanFunctions.getVpcNatGateway(GetVpcNatGatewayArgs.builder()\n            .id(my_existing_vpc_nat_gateway.id())\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  my-imported-vpc-nat-gateway:\n    fn::invoke:\n      function: digitalocean:getVpcNatGateway\n      arguments:\n        id: ${[\"my-existing-vpc-nat-gateway\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVpcNatGateway.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The ID of VPC NAT Gateway.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of VPC NAT Gateway.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getVpcNatGateway.\n",
                "properties": {
                    "createdAt": {
                        "type": "string"
                    },
                    "egresses": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getVpcNatGatewayEgress:getVpcNatGatewayEgress"
                        },
                        "type": "array"
                    },
                    "icmpTimeoutSeconds": {
                        "type": "integer"
                    },
                    "id": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "projectId": {
                        "type": "string"
                    },
                    "region": {
                        "type": "string"
                    },
                    "size": {
                        "type": "integer"
                    },
                    "state": {
                        "type": "string"
                    },
                    "tcpTimeoutSeconds": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string"
                    },
                    "udpTimeoutSeconds": {
                        "type": "integer"
                    },
                    "updatedAt": {
                        "type": "string"
                    },
                    "vpcs": {
                        "items": {
                            "$ref": "#/types/digitalocean:index/getVpcNatGatewayVpc:getVpcNatGatewayVpc"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "createdAt",
                    "egresses",
                    "icmpTimeoutSeconds",
                    "projectId",
                    "region",
                    "size",
                    "state",
                    "tcpTimeoutSeconds",
                    "type",
                    "udpTimeoutSeconds",
                    "updatedAt",
                    "vpcs"
                ],
                "type": "object"
            }
        },
        "digitalocean:index/getVpcPeering:getVpcPeering": {
            "description": "Retrieve information about a VPC Peering for use in other resources.\n\nThis data source provides all of the VPC Peering's properties as configured on your \nDigitalOcean account. This is useful if the VPC Peering in question is not managed by \nTerraform or you need to utilize any of the VPC Peering's data.\n\nVPC Peerings may be looked up by \u003cspan pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\"\u003e`id`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e.\n\n## Example Usage\n\n### VPC Peering By Id\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    id: \"example-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(id=\"example-id\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Id = \"example-id\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tId: pulumi.StringRef(\"example-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .id(\"example-id\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpcPeering\n      arguments:\n        id: example-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC Peering in other resources:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    id: \"example-id\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.vpcIds?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(id=\"example-id\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.vpc_ids[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Id = \"example-id\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcPeeringResult =\u003e getVpcPeeringResult.VpcIds[0]),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tId: pulumi.StringRef(\"example-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.VpcIds[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .id(\"example-id\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.vpcIds()[0])\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.vpcIds[0]}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpcPeering\n      arguments:\n        id: example-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### VPC Peering By Name\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    name: \"example-peering\",\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(name=\"example-peering\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Name = \"example-peering\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tName: pulumi.StringRef(\"example-peering\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .name(\"example-peering\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpcPeering\n      arguments:\n        name: example-peering\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nReuse the data about a VPC Peering in other resources:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as digitalocean from \"@pulumi/digitalocean\";\n\nconst example = digitalocean.getVpcPeering({\n    name: \"example-peering\",\n});\nconst exampleDroplet = new digitalocean.Droplet(\"example\", {\n    name: \"example-01\",\n    size: digitalocean.DropletSlug.DropletS1VCPU1GB,\n    image: \"ubuntu-18-04-x64\",\n    region: digitalocean.Region.NYC3,\n    vpcUuid: example.then(example =\u003e example.vpcIds?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_digitalocean as digitalocean\n\nexample = digitalocean.get_vpc_peering(name=\"example-peering\")\nexample_droplet = digitalocean.Droplet(\"example\",\n    name=\"example-01\",\n    size=digitalocean.DropletSlug.DROPLET_S1_VCPU1_GB,\n    image=\"ubuntu-18-04-x64\",\n    region=digitalocean.Region.NYC3,\n    vpc_uuid=example.vpc_ids[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing DigitalOcean = Pulumi.DigitalOcean;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = DigitalOcean.GetVpcPeering.Invoke(new()\n    {\n        Name = \"example-peering\",\n    });\n\n    var exampleDroplet = new DigitalOcean.Droplet(\"example\", new()\n    {\n        Name = \"example-01\",\n        Size = DigitalOcean.DropletSlug.DropletS1VCPU1GB,\n        Image = \"ubuntu-18-04-x64\",\n        Region = DigitalOcean.Region.NYC3,\n        VpcUuid = example.Apply(getVpcPeeringResult =\u003e getVpcPeeringResult.VpcIds[0]),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-digitalocean/sdk/v4/go/digitalocean\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := digitalocean.LookupVpcPeering(ctx, \u0026digitalocean.LookupVpcPeeringArgs{\n\t\t\tName: pulumi.StringRef(\"example-peering\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = digitalocean.NewDroplet(ctx, \"example\", \u0026digitalocean.DropletArgs{\n\t\t\tName:    pulumi.String(\"example-01\"),\n\t\t\tSize:    pulumi.String(digitalocean.DropletSlugDropletS1VCPU1GB),\n\t\t\tImage:   pulumi.String(\"ubuntu-18-04-x64\"),\n\t\t\tRegion:  pulumi.String(digitalocean.RegionNYC3),\n\t\t\tVpcUuid: pulumi.String(example.VpcIds[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.digitalocean.DigitaloceanFunctions;\nimport com.pulumi.digitalocean.inputs.GetVpcPeeringArgs;\nimport com.pulumi.digitalocean.Droplet;\nimport com.pulumi.digitalocean.DropletArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = DigitaloceanFunctions.getVpcPeering(GetVpcPeeringArgs.builder()\n            .name(\"example-peering\")\n            .build());\n\n        var exampleDroplet = new Droplet(\"exampleDroplet\", DropletArgs.builder()\n            .name(\"example-01\")\n            .size(\"s-1vcpu-1gb\")\n            .image(\"ubuntu-18-04-x64\")\n            .region(\"nyc3\")\n            .vpcUuid(example.vpcIds()[0])\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  exampleDroplet:\n    type: digitalocean:Droplet\n    name: example\n    properties:\n      name: example-01\n      size: s-1vcpu-1gb\n      image: ubuntu-18-04-x64\n      region: nyc3\n      vpcUuid: ${example.vpcIds[0]}\nvariables:\n  example:\n    fn::invoke:\n      function: digitalocean:getVpcPeering\n      arguments:\n        name: example-peering\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
            "inputs": {
                "description": "A collection of arguments for invoking getVpcPeering.\n",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "The unique identifier of an existing VPC Peering.\n"
                    },
                    "name": {
                        "type": "string",
                        "description": "The name of an existing VPC Peering.\n"
                    },
                    "vpcIds": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "The list of VPC IDs involved in the peering.\n"
                    }
                },
                "type": "object"
            },
            "outputs": {
                "description": "A collection of values returned by getVpcPeering.\n",
                "properties": {
                    "createdAt": {
                        "description": "The date and time of when the VPC Peering was created.\n",
                        "type": "string"
                    },
                    "id": {
                        "description": "The unique identifier for the VPC Peering.\n",
                        "type": "string"
                    },
                    "name": {
                        "description": "The name of the VPC Peering.\n",
                        "type": "string"
                    },
                    "status": {
                        "description": "The status of the VPC Peering.\n",
                        "type": "string"
                    },
                    "vpcIds": {
                        "description": "The list of VPC IDs involved in the peering.\n",
                        "items": {
                            "type": "string"
                        },
                        "type": "array"
                    }
                },
                "required": [
                    "createdAt",
                    "id",
                    "name",
                    "status",
                    "vpcIds"
                ],
                "type": "object"
            }
        },
        "pulumi:providers:digitalocean/terraformConfig": {
            "description": "This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.",
            "inputs": {
                "properties": {
                    "__self__": {
                        "type": "ref",
                        "$ref": "#/provider"
                    }
                },
                "type": "pulumi:providers:digitalocean/terraformConfig",
                "required": [
                    "__self__"
                ]
            },
            "outputs": {
                "properties": {
                    "result": {
                        "additionalProperties": {
                            "$ref": "pulumi.json#/Any"
                        },
                        "type": "object"
                    }
                },
                "required": [
                    "result"
                ],
                "type": "object"
            }
        }
    }
}