{
  "name": "coder",
  "version": "2.13.1",
  "description": "A Pulumi provider dynamically bridged from coder.",
  "attribution": "This Pulumi package is based on the [`coder` Terraform Provider](https://github.com/coder/terraform-provider-coder).",
  "repository": "https://github.com/coder/terraform-provider-coder",
  "publisher": "coder",
  "meta": {
    "moduleFormat": "(.*)(?:/[^/]*)"
  },
  "language": {
    "csharp": {
      "compatibility": "tfbridge20",
      "liftSingleValueMethodReturns": true,
      "respectSchemaVersion": true
    },
    "go": {
      "generateExtraInputTypes": true,
      "importBasePath": "github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder",
      "liftSingleValueMethodReturns": true,
      "respectSchemaVersion": true,
      "rootPackageName": "coder"
    },
    "java": {
      "basePackage": "",
      "buildFiles": "",
      "gradleNexusPublishPluginVersion": "",
      "gradleTest": ""
    },
    "nodejs": {
      "compatibility": "tfbridge20",
      "disableUnionOutputTypes": true,
      "liftSingleValueMethodReturns": true,
      "packageDescription": "A Pulumi provider dynamically bridged from coder.",
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/coder/terraform-provider-coder)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> please consult the source [`terraform-provider-coder` repo](https://github.com/coder/terraform-provider-coder/issues).",
      "respectSchemaVersion": true
    },
    "python": {
      "compatibility": "tfbridge20",
      "pyproject": {
        "enabled": true
      },
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/coder/terraform-provider-coder)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> please consult the source [`terraform-provider-coder` repo](https://github.com/coder/terraform-provider-coder/issues).",
      "respectSchemaVersion": true
    }
  },
  "config": {
    "variables": {
      "url": {
        "type": "string",
        "description": "The URL to access Coder.\n"
      }
    }
  },
  "types": {
    "coder:index/AgentDisplayApps:AgentDisplayApps": {
      "properties": {
        "portForwardingHelper": {
          "type": "boolean",
          "description": "Display the port-forwarding helper button in the agent bar.\n"
        },
        "sshHelper": {
          "type": "boolean",
          "description": "Display the SSH helper button in the agent bar.\n"
        },
        "vscode": {
          "type": "boolean",
          "description": "Display the VSCode Desktop app in the agent bar.\n"
        },
        "vscodeInsiders": {
          "type": "boolean",
          "description": "Display the VSCode Insiders app in the agent bar.\n"
        },
        "webTerminal": {
          "type": "boolean",
          "description": "Display the web terminal app in the agent bar.\n"
        }
      },
      "type": "object"
    },
    "coder:index/AgentMetadata:AgentMetadata": {
      "properties": {
        "displayName": {
          "type": "string",
          "description": "The user-facing name of this value.\n"
        },
        "interval": {
          "type": "number",
          "description": "The interval in seconds at which to refresh this metadata item.\n"
        },
        "key": {
          "type": "string",
          "description": "The key of this metadata item.\n"
        },
        "order": {
          "type": "number",
          "description": "The order determines the position of agent metadata in the UI presentation. The lowest order is shown first and metadata with equal order are sorted by key (ascending order).\n"
        },
        "script": {
          "type": "string",
          "description": "The script that retrieves the value of this metadata item.\n"
        },
        "timeout": {
          "type": "number",
          "description": "The maximum time the command is allowed to run in seconds.\n"
        }
      },
      "type": "object",
      "required": [
        "interval",
        "key",
        "script"
      ]
    },
    "coder:index/AgentResourcesMonitoring:AgentResourcesMonitoring": {
      "properties": {
        "memory": {
          "$ref": "#/types/coder:index%2FAgentResourcesMonitoringMemory:AgentResourcesMonitoringMemory",
          "description": "The memory monitoring configuration for this agent.\n"
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/coder:index%2FAgentResourcesMonitoringVolume:AgentResourcesMonitoringVolume"
          },
          "description": "The volumes monitoring configuration for this agent.\n"
        }
      },
      "type": "object"
    },
    "coder:index/AgentResourcesMonitoringMemory:AgentResourcesMonitoringMemory": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable memory monitoring for this agent.\n"
        },
        "threshold": {
          "type": "number",
          "description": "The memory usage threshold in percentage at which to trigger an alert. Value should be between 0 and 100.\n"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "threshold"
      ]
    },
    "coder:index/AgentResourcesMonitoringVolume:AgentResourcesMonitoringVolume": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable volume monitoring for this agent.\n"
        },
        "path": {
          "type": "string",
          "description": "The path of the volume to monitor.\n"
        },
        "threshold": {
          "type": "number",
          "description": "The volume usage threshold in percentage at which to trigger an alert. Value should be between 0 and 100.\n"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "path",
        "threshold"
      ]
    },
    "coder:index/AiTaskSidebarApp:AiTaskSidebarApp": {
      "properties": {
        "id": {
          "type": "string",
          "description": "A reference to an existing `coder.App` resource in your template.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "coder:index/AppHealthcheck:AppHealthcheck": {
      "properties": {
        "interval": {
          "type": "number",
          "description": "Duration in seconds to wait between healthcheck requests.\n"
        },
        "threshold": {
          "type": "number",
          "description": "Number of consecutive heathcheck failures before returning an unhealthy status.\n"
        },
        "url": {
          "type": "string",
          "description": "HTTP address used determine the application readiness. A successful health check is a HTTP response code less than 500 returned before `healthcheck.interval` seconds.\n"
        }
      },
      "type": "object",
      "required": [
        "interval",
        "threshold",
        "url"
      ]
    },
    "coder:index/MetadataItem:MetadataItem": {
      "properties": {
        "isNull": {
          "type": "boolean"
        },
        "key": {
          "type": "string",
          "description": "The key of this metadata item.\n"
        },
        "sensitive": {
          "type": "boolean",
          "description": "Set to `true` to for items such as API keys whose values should be hidden from view by default. Note that this does not prevent metadata from being retrieved using the API, so it is not suitable for secrets that should not be exposed to workspace users.\n"
        },
        "value": {
          "type": "string",
          "description": "The value of this metadata item. Supports basic Markdown, including hyperlinks.\n"
        }
      },
      "type": "object",
      "required": [
        "key"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "isNull",
            "key"
          ]
        }
      }
    },
    "coder:index/getParameterOption:getParameterOption": {
      "properties": {
        "description": {
          "type": "string",
          "description": "Describe what selecting this value does.\n"
        },
        "icon": {
          "type": "string",
          "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
        },
        "name": {
          "type": "string",
          "description": "The display name of this value in the UI.\n"
        },
        "value": {
          "type": "string",
          "description": "The value of this option set on the parameter if selected.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "value"
      ]
    },
    "coder:index/getParameterValidation:getParameterValidation": {
      "properties": {
        "error": {
          "type": "string",
          "description": "An error message to display if the value breaks the validation rules. The following placeholders are supported: `{max}`, `{min}`, and `{value}`.\n"
        },
        "max": {
          "type": "number",
          "description": "The maximum value of a number parameter.\n"
        },
        "maxDisabled": {
          "type": "boolean",
          "description": "Helper field to check if `max` is present\n"
        },
        "min": {
          "type": "number",
          "description": "The minimum value of a number parameter.\n"
        },
        "minDisabled": {
          "type": "boolean",
          "description": "Helper field to check if `min` is present\n"
        },
        "monotonic": {
          "type": "string",
          "description": "Number monotonicity, either increasing or decreasing.\n"
        },
        "regex": {
          "type": "string",
          "description": "A regex for the input parameter to match against.\n"
        }
      },
      "type": "object",
      "required": [
        "maxDisabled",
        "minDisabled"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "coder:index/getWorkspaceOwnerRbacRole:getWorkspaceOwnerRbacRole": {
      "properties": {
        "name": {
          "type": "string"
        },
        "orgId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "name",
        "orgId"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "coder:index/getWorkspacePresetPrebuilds:getWorkspacePresetPrebuilds": {
      "properties": {
        "expirationPolicy": {
          "$ref": "#/types/coder:index%2FgetWorkspacePresetPrebuildsExpirationPolicy:getWorkspacePresetPrebuildsExpirationPolicy",
          "description": "Configuration block that defines TTL (time-to-live) behavior for prebuilds. Use this to automatically invalidate and delete prebuilds after a certain period, ensuring they stay up-to-date.\n"
        },
        "instances": {
          "type": "number",
          "description": "The number of workspaces to keep in reserve for this preset.\n"
        },
        "scheduling": {
          "$ref": "#/types/coder:index%2FgetWorkspacePresetPrebuildsScheduling:getWorkspacePresetPrebuildsScheduling",
          "description": "Configuration block that defines scheduling behavior for prebuilds. Use this to automatically adjust the number of prebuild instances based on a schedule.\n"
        }
      },
      "type": "object",
      "required": [
        "instances"
      ]
    },
    "coder:index/getWorkspacePresetPrebuildsExpirationPolicy:getWorkspacePresetPrebuildsExpirationPolicy": {
      "properties": {
        "ttl": {
          "type": "number",
          "description": "Time in seconds after which an unclaimed prebuild is considered expired and eligible for cleanup.\n"
        }
      },
      "type": "object",
      "required": [
        "ttl"
      ]
    },
    "coder:index/getWorkspacePresetPrebuildsScheduling:getWorkspacePresetPrebuildsScheduling": {
      "properties": {
        "schedules": {
          "type": "array",
          "items": {
            "$ref": "#/types/coder:index%2FgetWorkspacePresetPrebuildsSchedulingSchedule:getWorkspacePresetPrebuildsSchedulingSchedule"
          },
          "description": "One or more schedule blocks that define when to scale the number of prebuild instances.\n"
        },
        "timezone": {
          "type": "string",
          "description": "The timezone to use for the prebuild schedules (e.g., \"UTC\", \"America/New*York\").\nTimezone must be a valid timezone in the IANA timezone database.\nSee https://en.wikipedia.org/wiki/List*of*tz*database*time*zones for a complete list of valid timezone identifiers and https://www.iana.org/time-zones for the official IANA timezone database.\n"
        }
      },
      "type": "object",
      "required": [
        "schedules",
        "timezone"
      ]
    },
    "coder:index/getWorkspacePresetPrebuildsSchedulingSchedule:getWorkspacePresetPrebuildsSchedulingSchedule": {
      "properties": {
        "cron": {
          "type": "string",
          "description": "A cron expression that defines when this schedule should be active. The cron expression must be in the format \"* HOUR DOM MONTH DAY-OF-WEEK\" where HOUR is 0-23, DOM (day-of-month) is 1-31, MONTH is 1-12, and DAY-OF-WEEK is 0-6 (Sunday-Saturday). The minute field must be \"*\" to ensure the schedule covers entire hours rather than specific minute intervals.\n"
        },
        "instances": {
          "type": "number",
          "description": "The number of prebuild instances to maintain during this schedule period.\n"
        }
      },
      "type": "object",
      "required": [
        "cron",
        "instances"
      ]
    }
  },
  "provider": {
    "description": "The provider type for the coder 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": {
      "url": {
        "type": "string",
        "description": "The URL to access Coder.\n"
      }
    },
    "type": "object",
    "inputProperties": {
      "url": {
        "type": "string",
        "description": "The URL to access Coder.\n"
      }
    }
  },
  "resources": {
    "coder:index/agent:Agent": {
      "description": "Use this resource to associate an agent.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\n\nexport = async () => {\n    const me = await coder.getWorkspace({});\n    const devAgent = new coder.Agent(\"devAgent\", {\n        os: \"linux\",\n        arch: \"amd64\",\n        dir: \"/workspace\",\n        apiKeyScope: \"all\",\n        displayApps: {\n            vscode: true,\n            vscodeInsiders: false,\n            webTerminal: true,\n            sshHelper: false,\n        },\n        metadatas: [\n            {\n                displayName: \"CPU Usage\",\n                key: \"cpu_usage\",\n                script: \"coder stat cpu\",\n                interval: 10,\n                timeout: 1,\n                order: 2,\n            },\n            {\n                displayName: \"RAM Usage\",\n                key: \"ram_usage\",\n                script: \"coder stat mem\",\n                interval: 10,\n                timeout: 1,\n                order: 1,\n            },\n        ],\n        order: 1,\n    });\n    const devkubernetes_pod: kubernetes.index.Kubernetes_pod[] = [];\n    for (const range = {value: 0}; range.value < me.startCount; range.value++) {\n        devkubernetes_pod.push(new kubernetes.index.Kubernetes_pod(`devkubernetes_pod-${range.value}`, {spec: [{\n            container: [{\n                command: [\n                    \"sh\",\n                    \"-c\",\n                    devAgent.initScript,\n                ],\n                env: [{\n                    name: \"CODER_AGENT_TOKEN\",\n                    value: devAgent.token,\n                }],\n            }],\n        }]}));\n    }\n}\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\nimport pulumi_kubernetes as kubernetes\n\nme = coder.get_workspace()\ndev_agent = coder.Agent(\"devAgent\",\n    os=\"linux\",\n    arch=\"amd64\",\n    dir=\"/workspace\",\n    api_key_scope=\"all\",\n    display_apps={\n        \"vscode\": True,\n        \"vscode_insiders\": False,\n        \"web_terminal\": True,\n        \"ssh_helper\": False,\n    },\n    metadatas=[\n        {\n            \"display_name\": \"CPU Usage\",\n            \"key\": \"cpu_usage\",\n            \"script\": \"coder stat cpu\",\n            \"interval\": 10,\n            \"timeout\": 1,\n            \"order\": 2,\n        },\n        {\n            \"display_name\": \"RAM Usage\",\n            \"key\": \"ram_usage\",\n            \"script\": \"coder stat mem\",\n            \"interval\": 10,\n            \"timeout\": 1,\n            \"order\": 1,\n        },\n    ],\n    order=1)\ndevkubernetes_pod = []\nfor range in [{\"value\": i} for i in range(0, me.start_count)]:\n    devkubernetes_pod.append(kubernetes.index.Kubernetes_pod(f\"devkubernetes_pod-{range['value']}\", spec=[{\n        container: [{\n            command: [\n                sh,\n                -c,\n                dev_agent.init_script,\n            ],\n            env: [{\n                name: CODER_AGENT_TOKEN,\n                value: dev_agent.token,\n            }],\n        }],\n    }]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\nusing Kubernetes = Pulumi.Kubernetes;\n\nreturn await Deployment.RunAsync(async() => \n{\n    var me = await Coder.GetWorkspace.InvokeAsync();\n\n    var devAgent = new Coder.Agent(\"devAgent\", new()\n    {\n        Os = \"linux\",\n        Arch = \"amd64\",\n        Dir = \"/workspace\",\n        ApiKeyScope = \"all\",\n        DisplayApps = new Coder.Inputs.AgentDisplayAppsArgs\n        {\n            Vscode = true,\n            VscodeInsiders = false,\n            WebTerminal = true,\n            SshHelper = false,\n        },\n        Metadatas = new[]\n        {\n            new Coder.Inputs.AgentMetadataArgs\n            {\n                DisplayName = \"CPU Usage\",\n                Key = \"cpu_usage\",\n                Script = \"coder stat cpu\",\n                Interval = 10,\n                Timeout = 1,\n                Order = 2,\n            },\n            new Coder.Inputs.AgentMetadataArgs\n            {\n                DisplayName = \"RAM Usage\",\n                Key = \"ram_usage\",\n                Script = \"coder stat mem\",\n                Interval = 10,\n                Timeout = 1,\n                Order = 1,\n            },\n        },\n        Order = 1,\n    });\n\n    var devkubernetes_pod = new List<Kubernetes.Index.Kubernetes_pod>();\n    for (var rangeIndex = 0; rangeIndex < me.StartCount; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        devkubernetes_pod.Add(new Kubernetes.Index.Kubernetes_pod($\"devkubernetes_pod-{range.Value}\", new()\n        {\n            Spec = new[]\n            {\n                \n                {\n                    { \"container\", new[]\n                    {\n                        \n                        {\n                            { \"command\", new[]\n                            {\n                                \"sh\",\n                                \"-c\",\n                                devAgent.InitScript,\n                            } },\n                            { \"env\", new[]\n                            {\n                                \n                                {\n                                    { \"name\", \"CODER_AGENT_TOKEN\" },\n                                    { \"value\", devAgent.Token },\n                                },\n                            } },\n                        },\n                    } },\n                },\n            },\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kubernetes/sdk/go/kubernetes\"\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := coder.GetWorkspace(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdevAgent, err := coder.NewAgent(ctx, \"devAgent\", &coder.AgentArgs{\n\t\t\tOs:          pulumi.String(\"linux\"),\n\t\t\tArch:        pulumi.String(\"amd64\"),\n\t\t\tDir:         pulumi.String(\"/workspace\"),\n\t\t\tApiKeyScope: pulumi.String(\"all\"),\n\t\t\tDisplayApps: &coder.AgentDisplayAppsArgs{\n\t\t\t\tVscode:         pulumi.Bool(true),\n\t\t\t\tVscodeInsiders: pulumi.Bool(false),\n\t\t\t\tWebTerminal:    pulumi.Bool(true),\n\t\t\t\tSshHelper:      pulumi.Bool(false),\n\t\t\t},\n\t\t\tMetadatas: coder.AgentMetadataArray{\n\t\t\t\t&coder.AgentMetadataArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"CPU Usage\"),\n\t\t\t\t\tKey:         pulumi.String(\"cpu_usage\"),\n\t\t\t\t\tScript:      pulumi.String(\"coder stat cpu\"),\n\t\t\t\t\tInterval:    pulumi.Float64(10),\n\t\t\t\t\tTimeout:     pulumi.Float64(1),\n\t\t\t\t\tOrder:       pulumi.Float64(2),\n\t\t\t\t},\n\t\t\t\t&coder.AgentMetadataArgs{\n\t\t\t\t\tDisplayName: pulumi.String(\"RAM Usage\"),\n\t\t\t\t\tKey:         pulumi.String(\"ram_usage\"),\n\t\t\t\t\tScript:      pulumi.String(\"coder stat mem\"),\n\t\t\t\t\tInterval:    pulumi.Float64(10),\n\t\t\t\t\tTimeout:     pulumi.Float64(1),\n\t\t\t\t\tOrder:       pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOrder: pulumi.Float64(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar devkubernetes_pod []*kubernetes.Kubernetes_pod\n\t\tfor index := 0; index < me.StartCount; index++ {\n\t\t\tkey0 := index\n\t\t\t_ := index\n\t\t\t__res, err := kubernetes.NewKubernetes_pod(ctx, fmt.Sprintf(\"devkubernetes_pod-%v\", key0), &kubernetes.Kubernetes_podArgs{\n\t\t\t\tSpec: []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"container\": []map[string]interface{}{\n\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\"command\": []interface{}{\n\t\t\t\t\t\t\t\t\t\"sh\",\n\t\t\t\t\t\t\t\t\t\"-c\",\n\t\t\t\t\t\t\t\t\tdevAgent.InitScript,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"env\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\"name\":  \"CODER_AGENT_TOKEN\",\n\t\t\t\t\t\t\t\t\t\t\"value\": devAgent.Token,\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\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tdevkubernetes_pod = append(devkubernetes_pod, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.coder.CoderFunctions;\nimport com.pulumi.coder.Agent;\nimport com.pulumi.coder.AgentArgs;\nimport com.pulumi.coder.inputs.AgentDisplayAppsArgs;\nimport com.pulumi.coder.inputs.AgentMetadataArgs;\nimport com.pulumi.kubernetes.kubernetes_pod;\nimport com.pulumi.kubernetes.Kubernetes_podArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var me = CoderFunctions.getWorkspace();\n\n        var devAgent = new Agent(\"devAgent\", AgentArgs.builder()\n            .os(\"linux\")\n            .arch(\"amd64\")\n            .dir(\"/workspace\")\n            .apiKeyScope(\"all\")\n            .displayApps(AgentDisplayAppsArgs.builder()\n                .vscode(true)\n                .vscodeInsiders(false)\n                .webTerminal(true)\n                .sshHelper(false)\n                .build())\n            .metadatas(            \n                AgentMetadataArgs.builder()\n                    .displayName(\"CPU Usage\")\n                    .key(\"cpu_usage\")\n                    .script(\"coder stat cpu\")\n                    .interval(10)\n                    .timeout(1)\n                    .order(2)\n                    .build(),\n                AgentMetadataArgs.builder()\n                    .displayName(\"RAM Usage\")\n                    .key(\"ram_usage\")\n                    .script(\"coder stat mem\")\n                    .interval(10)\n                    .timeout(1)\n                    .order(1)\n                    .build())\n            .order(1)\n            .build());\n\n        for (var i = 0; i < me.applyValue(getWorkspaceResult -> getWorkspaceResult.startCount()); i++) {\n            new Kubernetes_pod(\"devkubernetes_pod-\" + i, Kubernetes_podArgs.builder()\n                .spec(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n                .build());\n\n        \n}\n    }\n}\n```\n```yaml\nresources:\n  devAgent:\n    type: coder:Agent\n    properties:\n      os: linux\n      arch: amd64\n      dir: /workspace\n      apiKeyScope: all\n      displayApps:\n        vscode: true\n        vscodeInsiders: false\n        webTerminal: true\n        sshHelper: false\n      metadatas:\n        - displayName: CPU Usage\n          key: cpu_usage\n          script: coder stat cpu\n          interval: 10\n          timeout: 1\n          order: 2\n        - displayName: RAM Usage\n          key: ram_usage\n          script: coder stat mem\n          interval: 10\n          timeout: 1\n          order: 1\n      order: 1\n  devkubernetes_pod:\n    type: kubernetes:kubernetes_pod\n    properties:\n      spec:\n        - container:\n            - command:\n                - sh\n                - -c\n                - ${devAgent.initScript}\n              env:\n                - name: CODER_AGENT_TOKEN\n                  value: ${devAgent.token}\n    options: {}\nvariables:\n  me:\n    fn::invoke:\n      function: coder:getWorkspace\n      arguments: {}\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "apiKeyScope": {
          "type": "string",
          "description": "Controls what API routes the agent token can access. Options: `all` (full access) or `no_user_data` (blocks `/external-auth`, `/gitsshkey`, and `/gitauth` routes)\n"
        },
        "arch": {
          "type": "string",
          "description": "The architecture the agent will run on. Must be one of: `\"amd64\"`, `\"armv7\"`, `\"arm64\"`.\n"
        },
        "auth": {
          "type": "string",
          "description": "The authentication type the agent will use. Must be one of: `\"token\"`, `\"google-instance-identity\"`, `\"aws-instance-identity\"`, `\"azure-instance-identity\"`.\n"
        },
        "connectionTimeout": {
          "type": "number",
          "description": "Time in seconds until the agent is marked as timed out when a connection with the server cannot be established. A value of zero never marks the agent as timed out.\n"
        },
        "dir": {
          "type": "string",
          "description": "The starting directory when a user creates a shell session. Defaults to `\"$HOME\"`.\n"
        },
        "displayApps": {
          "$ref": "#/types/coder:index%2FAgentDisplayApps:AgentDisplayApps",
          "description": "The list of built-in apps to display in the agent bar.\n"
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of environment variables to set inside the workspace.\n"
        },
        "initScript": {
          "type": "string",
          "description": "Run this script on startup of an instance to initialize the agent.\n"
        },
        "metadatas": {
          "type": "array",
          "items": {
            "$ref": "#/types/coder:index%2FAgentMetadata:AgentMetadata"
          },
          "description": "Each `metadata` block defines a single item consisting of a key/value pair. This feature is in alpha and may break in future releases.\n"
        },
        "motdFile": {
          "type": "string",
          "description": "The path to a file within the workspace containing a message to display to users when they login via SSH. A typical value would be `\"/etc/motd\"`.\n"
        },
        "order": {
          "type": "number",
          "description": "The order determines the position of agents in the UI presentation. The lowest order is shown first and agents with equal order are sorted by name (ascending order).\n"
        },
        "os": {
          "type": "string",
          "description": "The operating system the agent will run on. Must be one of: `\"linux\"`, `\"darwin\"`, or `\"windows\"`.\n"
        },
        "resourcesMonitoring": {
          "$ref": "#/types/coder:index%2FAgentResourcesMonitoring:AgentResourcesMonitoring",
          "description": "The resources monitoring configuration for this agent.\n"
        },
        "shutdownScript": {
          "type": "string",
          "description": "A script to run before the agent is stopped. The script should exit when it is done to signal that the workspace can be stopped. This option is an alias for defining a `coder.Script` resource with `run_on_stop` set to `true`.\n"
        },
        "startupScript": {
          "type": "string",
          "description": "A script to run after the agent starts. The script should exit when it is done to signal that the agent is ready. This option is an alias for defining a `coder.Script` resource with `run_on_start` set to `true`.\n"
        },
        "startupScriptBehavior": {
          "type": "string",
          "description": "This option sets the behavior of the `startup_script`. When set to `\"blocking\"`, the `startup_script` must exit before the workspace is ready. When set to `\"non-blocking\"`, the `startup_script` may run in the background and the workspace will be ready immediately. Default is `\"non-blocking\"`, although `\"blocking\"` is recommended. This option is an alias for defining a `coder.Script` resource with `start_blocks_login` set to `true` (blocking).\n"
        },
        "token": {
          "type": "string",
          "description": "Set the environment variable `CODER_AGENT_TOKEN` with this token to authenticate an agent.\n",
          "secret": true
        },
        "troubleshootingUrl": {
          "type": "string",
          "description": "A URL to a document with instructions for troubleshooting problems with the agent.\n"
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "arch",
        "initScript",
        "os",
        "token"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "apiKeyScope": {
          "type": "string",
          "description": "Controls what API routes the agent token can access. Options: `all` (full access) or `no_user_data` (blocks `/external-auth`, `/gitsshkey`, and `/gitauth` routes)\n"
        },
        "arch": {
          "type": "string",
          "description": "The architecture the agent will run on. Must be one of: `\"amd64\"`, `\"armv7\"`, `\"arm64\"`.\n"
        },
        "auth": {
          "type": "string",
          "description": "The authentication type the agent will use. Must be one of: `\"token\"`, `\"google-instance-identity\"`, `\"aws-instance-identity\"`, `\"azure-instance-identity\"`.\n"
        },
        "connectionTimeout": {
          "type": "number",
          "description": "Time in seconds until the agent is marked as timed out when a connection with the server cannot be established. A value of zero never marks the agent as timed out.\n"
        },
        "dir": {
          "type": "string",
          "description": "The starting directory when a user creates a shell session. Defaults to `\"$HOME\"`.\n"
        },
        "displayApps": {
          "$ref": "#/types/coder:index%2FAgentDisplayApps:AgentDisplayApps",
          "description": "The list of built-in apps to display in the agent bar.\n"
        },
        "env": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A mapping of environment variables to set inside the workspace.\n"
        },
        "metadatas": {
          "type": "array",
          "items": {
            "$ref": "#/types/coder:index%2FAgentMetadata:AgentMetadata"
          },
          "description": "Each `metadata` block defines a single item consisting of a key/value pair. This feature is in alpha and may break in future releases.\n"
        },
        "motdFile": {
          "type": "string",
          "description": "The path to a file within the workspace containing a message to display to users when they login via SSH. A typical value would be `\"/etc/motd\"`.\n"
        },
        "order": {
          "type": "number",
          "description": "The order determines the position of agents in the UI presentation. The lowest order is shown first and agents with equal order are sorted by name (ascending order).\n"
        },
        "os": {
          "type": "string",
          "description": "The operating system the agent will run on. Must be one of: `\"linux\"`, `\"darwin\"`, or `\"windows\"`.\n"
        },
        "resourcesMonitoring": {
          "$ref": "#/types/coder:index%2FAgentResourcesMonitoring:AgentResourcesMonitoring",
          "description": "The resources monitoring configuration for this agent.\n"
        },
        "shutdownScript": {
          "type": "string",
          "description": "A script to run before the agent is stopped. The script should exit when it is done to signal that the workspace can be stopped. This option is an alias for defining a `coder.Script` resource with `run_on_stop` set to `true`.\n"
        },
        "startupScript": {
          "type": "string",
          "description": "A script to run after the agent starts. The script should exit when it is done to signal that the agent is ready. This option is an alias for defining a `coder.Script` resource with `run_on_start` set to `true`.\n"
        },
        "startupScriptBehavior": {
          "type": "string",
          "description": "This option sets the behavior of the `startup_script`. When set to `\"blocking\"`, the `startup_script` must exit before the workspace is ready. When set to `\"non-blocking\"`, the `startup_script` may run in the background and the workspace will be ready immediately. Default is `\"non-blocking\"`, although `\"blocking\"` is recommended. This option is an alias for defining a `coder.Script` resource with `start_blocks_login` set to `true` (blocking).\n"
        },
        "troubleshootingUrl": {
          "type": "string",
          "description": "A URL to a document with instructions for troubleshooting problems with the agent.\n"
        }
      },
      "requiredInputs": [
        "arch",
        "os"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Agent resources.\n",
        "properties": {
          "agentId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "apiKeyScope": {
            "type": "string",
            "description": "Controls what API routes the agent token can access. Options: `all` (full access) or `no_user_data` (blocks `/external-auth`, `/gitsshkey`, and `/gitauth` routes)\n"
          },
          "arch": {
            "type": "string",
            "description": "The architecture the agent will run on. Must be one of: `\"amd64\"`, `\"armv7\"`, `\"arm64\"`.\n"
          },
          "auth": {
            "type": "string",
            "description": "The authentication type the agent will use. Must be one of: `\"token\"`, `\"google-instance-identity\"`, `\"aws-instance-identity\"`, `\"azure-instance-identity\"`.\n"
          },
          "connectionTimeout": {
            "type": "number",
            "description": "Time in seconds until the agent is marked as timed out when a connection with the server cannot be established. A value of zero never marks the agent as timed out.\n"
          },
          "dir": {
            "type": "string",
            "description": "The starting directory when a user creates a shell session. Defaults to `\"$HOME\"`.\n"
          },
          "displayApps": {
            "$ref": "#/types/coder:index%2FAgentDisplayApps:AgentDisplayApps",
            "description": "The list of built-in apps to display in the agent bar.\n"
          },
          "env": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A mapping of environment variables to set inside the workspace.\n"
          },
          "initScript": {
            "type": "string",
            "description": "Run this script on startup of an instance to initialize the agent.\n"
          },
          "metadatas": {
            "type": "array",
            "items": {
              "$ref": "#/types/coder:index%2FAgentMetadata:AgentMetadata"
            },
            "description": "Each `metadata` block defines a single item consisting of a key/value pair. This feature is in alpha and may break in future releases.\n"
          },
          "motdFile": {
            "type": "string",
            "description": "The path to a file within the workspace containing a message to display to users when they login via SSH. A typical value would be `\"/etc/motd\"`.\n"
          },
          "order": {
            "type": "number",
            "description": "The order determines the position of agents in the UI presentation. The lowest order is shown first and agents with equal order are sorted by name (ascending order).\n"
          },
          "os": {
            "type": "string",
            "description": "The operating system the agent will run on. Must be one of: `\"linux\"`, `\"darwin\"`, or `\"windows\"`.\n"
          },
          "resourcesMonitoring": {
            "$ref": "#/types/coder:index%2FAgentResourcesMonitoring:AgentResourcesMonitoring",
            "description": "The resources monitoring configuration for this agent.\n"
          },
          "shutdownScript": {
            "type": "string",
            "description": "A script to run before the agent is stopped. The script should exit when it is done to signal that the workspace can be stopped. This option is an alias for defining a `coder.Script` resource with `run_on_stop` set to `true`.\n"
          },
          "startupScript": {
            "type": "string",
            "description": "A script to run after the agent starts. The script should exit when it is done to signal that the agent is ready. This option is an alias for defining a `coder.Script` resource with `run_on_start` set to `true`.\n"
          },
          "startupScriptBehavior": {
            "type": "string",
            "description": "This option sets the behavior of the `startup_script`. When set to `\"blocking\"`, the `startup_script` must exit before the workspace is ready. When set to `\"non-blocking\"`, the `startup_script` may run in the background and the workspace will be ready immediately. Default is `\"non-blocking\"`, although `\"blocking\"` is recommended. This option is an alias for defining a `coder.Script` resource with `start_blocks_login` set to `true` (blocking).\n"
          },
          "token": {
            "type": "string",
            "description": "Set the environment variable `CODER_AGENT_TOKEN` with this token to authenticate an agent.\n",
            "secret": true
          },
          "troubleshootingUrl": {
            "type": "string",
            "description": "A URL to a document with instructions for troubleshooting problems with the agent.\n"
          }
        },
        "type": "object"
      }
    },
    "coder:index/agentInstance:AgentInstance": {
      "description": "Use this resource to associate an instance ID with an agent for zero-trust authentication. This association is done automatically for `\"google_compute_instance\"`, `\"aws_instance\"`, `\"azurerm_linux_virtual_machine\"`, and `\"azurerm_windows_virtual_machine\"` resources.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\nimport * as google from \"@pulumi/google\";\n\nconst devAgent = new coder.Agent(\"devAgent\", {\n    os: \"linux\",\n    arch: \"amd64\",\n    auth: \"google-instance-identity\",\n});\nconst devgoogle_compute_instance = new google.index.Google_compute_instance(\"devgoogle_compute_instance\", {zone: \"us-central1-a\"});\nconst devAgentInstance = new coder.AgentInstance(\"devAgentInstance\", {\n    agentId: devAgent.agentId,\n    instanceId: devgoogle_compute_instance.instanceId,\n});\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\nimport pulumi_google as google\n\ndev_agent = coder.Agent(\"devAgent\",\n    os=\"linux\",\n    arch=\"amd64\",\n    auth=\"google-instance-identity\")\ndevgoogle_compute_instance = google.index.Google_compute_instance(\"devgoogle_compute_instance\", zone=us-central1-a)\ndev_agent_instance = coder.AgentInstance(\"devAgentInstance\",\n    agent_id=dev_agent.agent_id,\n    instance_id=devgoogle_compute_instance[\"instanceId\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\nusing Google = Pulumi.Google;\n\nreturn await Deployment.RunAsync(() => \n{\n    var devAgent = new Coder.Agent(\"devAgent\", new()\n    {\n        Os = \"linux\",\n        Arch = \"amd64\",\n        Auth = \"google-instance-identity\",\n    });\n\n    var devgoogle_compute_instance = new Google.Index.Google_compute_instance(\"devgoogle_compute_instance\", new()\n    {\n        Zone = \"us-central1-a\",\n    });\n\n    var devAgentInstance = new Coder.AgentInstance(\"devAgentInstance\", new()\n    {\n        AgentId = devAgent.AgentId,\n        InstanceId = devgoogle_compute_instance.InstanceId,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-google/sdk/go/google\"\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevAgent, err := coder.NewAgent(ctx, \"devAgent\", &coder.AgentArgs{\n\t\t\tOs:   pulumi.String(\"linux\"),\n\t\t\tArch: pulumi.String(\"amd64\"),\n\t\t\tAuth: pulumi.String(\"google-instance-identity\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdevgoogle_compute_instance, err := google.NewGoogle_compute_instance(ctx, \"devgoogle_compute_instance\", &google.Google_compute_instanceArgs{\n\t\t\tZone: \"us-central1-a\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.NewAgentInstance(ctx, \"devAgentInstance\", &coder.AgentInstanceArgs{\n\t\t\tAgentId:    devAgent.AgentId,\n\t\t\tInstanceId: devgoogle_compute_instance.InstanceId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.coder.Agent;\nimport com.pulumi.coder.AgentArgs;\nimport com.pulumi.google.google_compute_instance;\nimport com.pulumi.google.Google_compute_instanceArgs;\nimport com.pulumi.coder.AgentInstance;\nimport com.pulumi.coder.AgentInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var devAgent = new Agent(\"devAgent\", AgentArgs.builder()\n            .os(\"linux\")\n            .arch(\"amd64\")\n            .auth(\"google-instance-identity\")\n            .build());\n\n        var devgoogle_compute_instance = new Google_compute_instance(\"devgoogle_compute_instance\", Google_compute_instanceArgs.builder()\n            .zone(\"us-central1-a\")\n            .build());\n\n        var devAgentInstance = new AgentInstance(\"devAgentInstance\", AgentInstanceArgs.builder()\n            .agentId(devAgent.agentId())\n            .instanceId(devgoogle_compute_instance.instanceId())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  devAgent:\n    type: coder:Agent\n    properties:\n      os: linux\n      arch: amd64\n      auth: google-instance-identity\n  devgoogle_compute_instance:\n    type: google:google_compute_instance\n    properties:\n      zone: us-central1-a\n  devAgentInstance:\n    type: coder:AgentInstance\n    properties:\n      agentId: ${devAgent.agentId}\n      instanceId: ${devgoogle_compute_instance.instanceId}\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "agentInstanceId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "instanceId": {
          "type": "string",
          "description": "The instance identifier of a provisioned resource.\n"
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "agentInstanceId",
        "instanceId"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "agentInstanceId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "instanceId": {
          "type": "string",
          "description": "The instance identifier of a provisioned resource.\n"
        }
      },
      "requiredInputs": [
        "agentId",
        "instanceId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering AgentInstance resources.\n",
        "properties": {
          "agentId": {
            "type": "string",
            "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
          },
          "agentInstanceId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "instanceId": {
            "type": "string",
            "description": "The instance identifier of a provisioned resource.\n"
          }
        },
        "type": "object"
      }
    },
    "coder:index/aiTask:AiTask": {
      "description": "Use this resource to define Coder tasks.\n",
      "properties": {
        "appId": {
          "type": "string",
          "description": "The ID of the `coder.App` resource that provides the AI interface for this task.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "True when executing in a Coder Task context, false when in a Coder Workspace context.\n"
        },
        "prompt": {
          "type": "string",
          "description": "The prompt text provided to the task by Coder. > The `prompt` field is only populated in Coder v2.28 and later.\n"
        },
        "sidebarApp": {
          "$ref": "#/types/coder:index%2FAiTaskSidebarApp:AiTaskSidebarApp",
          "description": "The coder*app to display in the sidebar. Usually a chat interface with the AI agent running in the workspace, like https://github.com/coder/agentapi.\n",
          "deprecationMessage": "Deprecated"
        }
      },
      "type": "object",
      "required": [
        "appId",
        "enabled",
        "prompt"
      ],
      "inputProperties": {
        "appId": {
          "type": "string",
          "description": "The ID of the `coder.App` resource that provides the AI interface for this task.\n"
        },
        "sidebarApp": {
          "$ref": "#/types/coder:index%2FAiTaskSidebarApp:AiTaskSidebarApp",
          "description": "The coder*app to display in the sidebar. Usually a chat interface with the AI agent running in the workspace, like https://github.com/coder/agentapi.\n",
          "deprecationMessage": "Deprecated"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering AiTask resources.\n",
        "properties": {
          "appId": {
            "type": "string",
            "description": "The ID of the `coder.App` resource that provides the AI interface for this task.\n"
          },
          "enabled": {
            "type": "boolean",
            "description": "True when executing in a Coder Task context, false when in a Coder Workspace context.\n"
          },
          "prompt": {
            "type": "string",
            "description": "The prompt text provided to the task by Coder. > The `prompt` field is only populated in Coder v2.28 and later.\n"
          },
          "sidebarApp": {
            "$ref": "#/types/coder:index%2FAiTaskSidebarApp:AiTaskSidebarApp",
            "description": "The coder*app to display in the sidebar. Usually a chat interface with the AI agent running in the workspace, like https://github.com/coder/agentapi.\n",
            "deprecationMessage": "Deprecated"
          }
        },
        "type": "object"
      }
    },
    "coder:index/app:App": {
      "description": "Use this resource to define shortcuts to access applications in a workspace.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\n\nconst me = coder.getWorkspace({});\nconst dev = new coder.Agent(\"dev\", {\n    os: \"linux\",\n    arch: \"amd64\",\n    dir: \"/workspace\",\n    startupScript: `curl -fsSL https://code-server.dev/install.sh | sh\ncode-server --auth none --port 13337\n`,\n});\nconst code_server = new coder.App(\"code-server\", {\n    agentId: dev.agentId,\n    slug: \"code-server\",\n    displayName: \"VS Code\",\n    icon: me.then(me => `${me.accessUrl}/icon/code.svg`),\n    url: \"http://localhost:13337\",\n    tooltip: \"You need to [Install Coder Desktop](https://coder.com/docs/user-guides/desktop#install-coder-desktop) to use this button.\",\n    share: \"owner\",\n    subdomain: false,\n    openIn: \"window\",\n    healthcheck: {\n        url: \"http://localhost:13337/healthz\",\n        interval: 5,\n        threshold: 6,\n    },\n});\nconst vim = new coder.App(\"vim\", {\n    agentId: dev.agentId,\n    slug: \"vim\",\n    displayName: \"Vim\",\n    icon: me.then(me => `${me.accessUrl}/icon/vim.svg`),\n    command: \"vim\",\n});\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\n\nme = coder.get_workspace()\ndev = coder.Agent(\"dev\",\n    os=\"linux\",\n    arch=\"amd64\",\n    dir=\"/workspace\",\n    startup_script=\"\"\"curl -fsSL https://code-server.dev/install.sh | sh\ncode-server --auth none --port 13337\n\"\"\")\ncode_server = coder.App(\"code-server\",\n    agent_id=dev.agent_id,\n    slug=\"code-server\",\n    display_name=\"VS Code\",\n    icon=f\"{me.access_url}/icon/code.svg\",\n    url=\"http://localhost:13337\",\n    tooltip=\"You need to [Install Coder Desktop](https://coder.com/docs/user-guides/desktop#install-coder-desktop) to use this button.\",\n    share=\"owner\",\n    subdomain=False,\n    open_in=\"window\",\n    healthcheck={\n        \"url\": \"http://localhost:13337/healthz\",\n        \"interval\": 5,\n        \"threshold\": 6,\n    })\nvim = coder.App(\"vim\",\n    agent_id=dev.agent_id,\n    slug=\"vim\",\n    display_name=\"Vim\",\n    icon=f\"{me.access_url}/icon/vim.svg\",\n    command=\"vim\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\n\nreturn await Deployment.RunAsync(() => \n{\n    var me = Coder.GetWorkspace.Invoke();\n\n    var dev = new Coder.Agent(\"dev\", new()\n    {\n        Os = \"linux\",\n        Arch = \"amd64\",\n        Dir = \"/workspace\",\n        StartupScript = @\"curl -fsSL https://code-server.dev/install.sh | sh\ncode-server --auth none --port 13337\n\",\n    });\n\n    var code_server = new Coder.App(\"code-server\", new()\n    {\n        AgentId = dev.AgentId,\n        Slug = \"code-server\",\n        DisplayName = \"VS Code\",\n        Icon = $\"{me.Apply(getWorkspaceResult => getWorkspaceResult.AccessUrl)}/icon/code.svg\",\n        Url = \"http://localhost:13337\",\n        Tooltip = \"You need to [Install Coder Desktop](https://coder.com/docs/user-guides/desktop#install-coder-desktop) to use this button.\",\n        Share = \"owner\",\n        Subdomain = false,\n        OpenIn = \"window\",\n        Healthcheck = new Coder.Inputs.AppHealthcheckArgs\n        {\n            Url = \"http://localhost:13337/healthz\",\n            Interval = 5,\n            Threshold = 6,\n        },\n    });\n\n    var vim = new Coder.App(\"vim\", new()\n    {\n        AgentId = dev.AgentId,\n        Slug = \"vim\",\n        DisplayName = \"Vim\",\n        Icon = $\"{me.Apply(getWorkspaceResult => getWorkspaceResult.AccessUrl)}/icon/vim.svg\",\n        Command = \"vim\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := coder.GetWorkspace(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdev, err := coder.NewAgent(ctx, \"dev\", &coder.AgentArgs{\n\t\t\tOs:            pulumi.String(\"linux\"),\n\t\t\tArch:          pulumi.String(\"amd64\"),\n\t\t\tDir:           pulumi.String(\"/workspace\"),\n\t\t\tStartupScript: pulumi.String(\"curl -fsSL https://code-server.dev/install.sh | sh\\ncode-server --auth none --port 13337\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.NewApp(ctx, \"code-server\", &coder.AppArgs{\n\t\t\tAgentId:     dev.AgentId,\n\t\t\tSlug:        pulumi.String(\"code-server\"),\n\t\t\tDisplayName: pulumi.String(\"VS Code\"),\n\t\t\tIcon:        pulumi.Sprintf(\"%v/icon/code.svg\", me.AccessUrl),\n\t\t\tUrl:         pulumi.String(\"http://localhost:13337\"),\n\t\t\tTooltip:     pulumi.String(\"You need to [Install Coder Desktop](https://coder.com/docs/user-guides/desktop#install-coder-desktop) to use this button.\"),\n\t\t\tShare:       pulumi.String(\"owner\"),\n\t\t\tSubdomain:   pulumi.Bool(false),\n\t\t\tOpenIn:      pulumi.String(\"window\"),\n\t\t\tHealthcheck: &coder.AppHealthcheckArgs{\n\t\t\t\tUrl:       pulumi.String(\"http://localhost:13337/healthz\"),\n\t\t\t\tInterval:  pulumi.Float64(5),\n\t\t\t\tThreshold: pulumi.Float64(6),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.NewApp(ctx, \"vim\", &coder.AppArgs{\n\t\t\tAgentId:     dev.AgentId,\n\t\t\tSlug:        pulumi.String(\"vim\"),\n\t\t\tDisplayName: pulumi.String(\"Vim\"),\n\t\t\tIcon:        pulumi.Sprintf(\"%v/icon/vim.svg\", me.AccessUrl),\n\t\t\tCommand:     pulumi.String(\"vim\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.coder.CoderFunctions;\nimport com.pulumi.coder.Agent;\nimport com.pulumi.coder.AgentArgs;\nimport com.pulumi.coder.App;\nimport com.pulumi.coder.AppArgs;\nimport com.pulumi.coder.inputs.AppHealthcheckArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var me = CoderFunctions.getWorkspace();\n\n        var dev = new Agent(\"dev\", AgentArgs.builder()\n            .os(\"linux\")\n            .arch(\"amd64\")\n            .dir(\"/workspace\")\n            .startupScript(\"\"\"\ncurl -fsSL https://code-server.dev/install.sh | sh\ncode-server --auth none --port 13337\n            \"\"\")\n            .build());\n\n        var code_server = new App(\"code-server\", AppArgs.builder()\n            .agentId(dev.agentId())\n            .slug(\"code-server\")\n            .displayName(\"VS Code\")\n            .icon(String.format(\"%s/icon/code.svg\", me.applyValue(getWorkspaceResult -> getWorkspaceResult.accessUrl())))\n            .url(\"http://localhost:13337\")\n            .tooltip(\"You need to [Install Coder Desktop](https://coder.com/docs/user-guides/desktop#install-coder-desktop) to use this button.\")\n            .share(\"owner\")\n            .subdomain(false)\n            .openIn(\"window\")\n            .healthcheck(AppHealthcheckArgs.builder()\n                .url(\"http://localhost:13337/healthz\")\n                .interval(5)\n                .threshold(6)\n                .build())\n            .build());\n\n        var vim = new App(\"vim\", AppArgs.builder()\n            .agentId(dev.agentId())\n            .slug(\"vim\")\n            .displayName(\"Vim\")\n            .icon(String.format(\"%s/icon/vim.svg\", me.applyValue(getWorkspaceResult -> getWorkspaceResult.accessUrl())))\n            .command(\"vim\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  dev:\n    type: coder:Agent\n    properties:\n      os: linux\n      arch: amd64\n      dir: /workspace\n      startupScript: |\n        curl -fsSL https://code-server.dev/install.sh | sh\n        code-server --auth none --port 13337\n  code-server:\n    type: coder:App\n    properties:\n      agentId: ${dev.agentId}\n      slug: code-server\n      displayName: VS Code\n      icon: ${me.accessUrl}/icon/code.svg\n      url: http://localhost:13337\n      tooltip: You need to [Install Coder Desktop](https://coder.com/docs/user-guides/desktop#install-coder-desktop) to use this button.\n      share: owner\n      subdomain: false\n      openIn: window\n      healthcheck:\n        url: http://localhost:13337/healthz\n        interval: 5\n        threshold: 6\n  vim:\n    type: coder:App\n    properties:\n      agentId: ${dev.agentId}\n      slug: vim\n      displayName: Vim\n      icon: ${me.accessUrl}/icon/vim.svg\n      command: vim\nvariables:\n  me:\n    fn::invoke:\n      function: coder:getWorkspace\n      arguments: {}\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "appId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "command": {
          "type": "string",
          "description": "A command to run in a terminal opening this app. In the web, this will open in a new tab. In the CLI, this will SSH and execute the command. Either `command` or `url` may be specified, but not both.\n"
        },
        "displayName": {
          "type": "string",
          "description": "A display name to identify the app. Defaults to the slug.\n"
        },
        "external": {
          "type": "boolean",
          "description": "Specifies whether `url` is opened on the client machine instead of proxied through the workspace.\n"
        },
        "group": {
          "type": "string",
          "description": "The name of a group that this app belongs to.\n"
        },
        "healthcheck": {
          "$ref": "#/types/coder:index%2FAppHealthcheck:AppHealthcheck",
          "description": "HTTP health checking to determine the application readiness.\n"
        },
        "hidden": {
          "type": "boolean",
          "description": "Determines if the app is visible in the UI (minimum Coder version: v2.16).\n"
        },
        "icon": {
          "type": "string",
          "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
        },
        "openIn": {
          "type": "string",
          "description": "Determines where the app will be opened. Valid values are `\"tab\"` and `\"slim-window\" (default)`. `\"tab\"` opens in a new tab in the same browser window. `\"slim-window\"` opens a new browser window without navigation controls.\n"
        },
        "order": {
          "type": "number",
          "description": "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order).\n"
        },
        "share": {
          "type": "string",
          "description": "Determines the level which the application is shared at. Valid levels are `\"owner\"` (default), `\"authenticated\"` and `\"public\"`. Level `\"owner\"` disables sharing on the app, so only the workspace owner can access it. Level `\"authenticated\"` shares the app with all authenticated users. Level `\"public\"` shares it with any user, including unauthenticated users. Permitted application sharing levels can be configured site-wide via a flag on `coder server` (Enterprise only).\n"
        },
        "slug": {
          "type": "string",
          "description": "A hostname-friendly name for the app. This is used in URLs to access the app. May contain alphanumerics and hyphens. Cannot start/end with a hyphen or contain two consecutive hyphens.\n"
        },
        "subdomain": {
          "type": "boolean",
          "description": "Determines whether the app will be accessed via it's own subdomain or whether it will be accessed via a path on Coder. If wildcards have not been setup by the administrator then apps with `subdomain` set to `true` will not be accessible. Defaults to `false`.\n"
        },
        "tooltip": {
          "type": "string",
          "description": "Markdown text that is displayed when hovering over workspace apps.\n"
        },
        "url": {
          "type": "string",
          "description": "An external url if `external=true` or a URL to be proxied to from inside the workspace. This should be of the form `http://localhost:PORT[/SUBPATH]`. Either `command` or `url` may be specified, but not both.\n"
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "appId",
        "slug"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "appId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "command": {
          "type": "string",
          "description": "A command to run in a terminal opening this app. In the web, this will open in a new tab. In the CLI, this will SSH and execute the command. Either `command` or `url` may be specified, but not both.\n"
        },
        "displayName": {
          "type": "string",
          "description": "A display name to identify the app. Defaults to the slug.\n"
        },
        "external": {
          "type": "boolean",
          "description": "Specifies whether `url` is opened on the client machine instead of proxied through the workspace.\n"
        },
        "group": {
          "type": "string",
          "description": "The name of a group that this app belongs to.\n"
        },
        "healthcheck": {
          "$ref": "#/types/coder:index%2FAppHealthcheck:AppHealthcheck",
          "description": "HTTP health checking to determine the application readiness.\n"
        },
        "hidden": {
          "type": "boolean",
          "description": "Determines if the app is visible in the UI (minimum Coder version: v2.16).\n"
        },
        "icon": {
          "type": "string",
          "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
        },
        "openIn": {
          "type": "string",
          "description": "Determines where the app will be opened. Valid values are `\"tab\"` and `\"slim-window\" (default)`. `\"tab\"` opens in a new tab in the same browser window. `\"slim-window\"` opens a new browser window without navigation controls.\n"
        },
        "order": {
          "type": "number",
          "description": "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order).\n"
        },
        "share": {
          "type": "string",
          "description": "Determines the level which the application is shared at. Valid levels are `\"owner\"` (default), `\"authenticated\"` and `\"public\"`. Level `\"owner\"` disables sharing on the app, so only the workspace owner can access it. Level `\"authenticated\"` shares the app with all authenticated users. Level `\"public\"` shares it with any user, including unauthenticated users. Permitted application sharing levels can be configured site-wide via a flag on `coder server` (Enterprise only).\n"
        },
        "slug": {
          "type": "string",
          "description": "A hostname-friendly name for the app. This is used in URLs to access the app. May contain alphanumerics and hyphens. Cannot start/end with a hyphen or contain two consecutive hyphens.\n"
        },
        "subdomain": {
          "type": "boolean",
          "description": "Determines whether the app will be accessed via it's own subdomain or whether it will be accessed via a path on Coder. If wildcards have not been setup by the administrator then apps with `subdomain` set to `true` will not be accessible. Defaults to `false`.\n"
        },
        "tooltip": {
          "type": "string",
          "description": "Markdown text that is displayed when hovering over workspace apps.\n"
        },
        "url": {
          "type": "string",
          "description": "An external url if `external=true` or a URL to be proxied to from inside the workspace. This should be of the form `http://localhost:PORT[/SUBPATH]`. Either `command` or `url` may be specified, but not both.\n"
        }
      },
      "requiredInputs": [
        "agentId",
        "slug"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering App resources.\n",
        "properties": {
          "agentId": {
            "type": "string",
            "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
          },
          "appId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "command": {
            "type": "string",
            "description": "A command to run in a terminal opening this app. In the web, this will open in a new tab. In the CLI, this will SSH and execute the command. Either `command` or `url` may be specified, but not both.\n"
          },
          "displayName": {
            "type": "string",
            "description": "A display name to identify the app. Defaults to the slug.\n"
          },
          "external": {
            "type": "boolean",
            "description": "Specifies whether `url` is opened on the client machine instead of proxied through the workspace.\n"
          },
          "group": {
            "type": "string",
            "description": "The name of a group that this app belongs to.\n"
          },
          "healthcheck": {
            "$ref": "#/types/coder:index%2FAppHealthcheck:AppHealthcheck",
            "description": "HTTP health checking to determine the application readiness.\n"
          },
          "hidden": {
            "type": "boolean",
            "description": "Determines if the app is visible in the UI (minimum Coder version: v2.16).\n"
          },
          "icon": {
            "type": "string",
            "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
          },
          "openIn": {
            "type": "string",
            "description": "Determines where the app will be opened. Valid values are `\"tab\"` and `\"slim-window\" (default)`. `\"tab\"` opens in a new tab in the same browser window. `\"slim-window\"` opens a new browser window without navigation controls.\n"
          },
          "order": {
            "type": "number",
            "description": "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order).\n"
          },
          "share": {
            "type": "string",
            "description": "Determines the level which the application is shared at. Valid levels are `\"owner\"` (default), `\"authenticated\"` and `\"public\"`. Level `\"owner\"` disables sharing on the app, so only the workspace owner can access it. Level `\"authenticated\"` shares the app with all authenticated users. Level `\"public\"` shares it with any user, including unauthenticated users. Permitted application sharing levels can be configured site-wide via a flag on `coder server` (Enterprise only).\n"
          },
          "slug": {
            "type": "string",
            "description": "A hostname-friendly name for the app. This is used in URLs to access the app. May contain alphanumerics and hyphens. Cannot start/end with a hyphen or contain two consecutive hyphens.\n"
          },
          "subdomain": {
            "type": "boolean",
            "description": "Determines whether the app will be accessed via it's own subdomain or whether it will be accessed via a path on Coder. If wildcards have not been setup by the administrator then apps with `subdomain` set to `true` will not be accessible. Defaults to `false`.\n"
          },
          "tooltip": {
            "type": "string",
            "description": "Markdown text that is displayed when hovering over workspace apps.\n"
          },
          "url": {
            "type": "string",
            "description": "An external url if `external=true` or a URL to be proxied to from inside the workspace. This should be of the form `http://localhost:PORT[/SUBPATH]`. Either `command` or `url` may be specified, but not both.\n"
          }
        },
        "type": "object"
      }
    },
    "coder:index/devcontainer:Devcontainer": {
      "description": "Define a Dev Container the agent should know of and attempt to autostart.\n\n> This resource is only available in Coder v2.21 and later.\n",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "configPath": {
          "type": "string",
          "description": "The path to the Dev Container configuration file (devcontainer.json).\n"
        },
        "devcontainerId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "workspaceFolder": {
          "type": "string",
          "description": "The workspace folder to for the Dev Container.\n"
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "devcontainerId",
        "workspaceFolder"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "configPath": {
          "type": "string",
          "description": "The path to the Dev Container configuration file (devcontainer.json).\n"
        },
        "devcontainerId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "workspaceFolder": {
          "type": "string",
          "description": "The workspace folder to for the Dev Container.\n"
        }
      },
      "requiredInputs": [
        "agentId",
        "workspaceFolder"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Devcontainer resources.\n",
        "properties": {
          "agentId": {
            "type": "string",
            "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
          },
          "configPath": {
            "type": "string",
            "description": "The path to the Dev Container configuration file (devcontainer.json).\n"
          },
          "devcontainerId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "workspaceFolder": {
            "type": "string",
            "description": "The workspace folder to for the Dev Container.\n"
          }
        },
        "type": "object"
      }
    },
    "coder:index/env:Env": {
      "description": "Use this resource to set an environment variable in a workspace. Note that this resource cannot be used to overwrite existing environment variables set on the `coder.Agent` resource.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\n\nconst me = coder.getWorkspace({});\nconst dev = new coder.Agent(\"dev\", {\n    os: \"linux\",\n    arch: \"amd64\",\n    dir: \"/workspace\",\n});\nconst welcomeMessage = new coder.Env(\"welcomeMessage\", {\n    agentId: dev.agentId,\n    value: \"Welcome to your Coder workspace!\",\n});\nconst internalApiUrl = new coder.Env(\"internalApiUrl\", {\n    agentId: dev.agentId,\n    value: \"https://api.internal.company.com/v1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\n\nme = coder.get_workspace()\ndev = coder.Agent(\"dev\",\n    os=\"linux\",\n    arch=\"amd64\",\n    dir=\"/workspace\")\nwelcome_message = coder.Env(\"welcomeMessage\",\n    agent_id=dev.agent_id,\n    value=\"Welcome to your Coder workspace!\")\ninternal_api_url = coder.Env(\"internalApiUrl\",\n    agent_id=dev.agent_id,\n    value=\"https://api.internal.company.com/v1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\n\nreturn await Deployment.RunAsync(() => \n{\n    var me = Coder.GetWorkspace.Invoke();\n\n    var dev = new Coder.Agent(\"dev\", new()\n    {\n        Os = \"linux\",\n        Arch = \"amd64\",\n        Dir = \"/workspace\",\n    });\n\n    var welcomeMessage = new Coder.Env(\"welcomeMessage\", new()\n    {\n        AgentId = dev.AgentId,\n        Value = \"Welcome to your Coder workspace!\",\n    });\n\n    var internalApiUrl = new Coder.Env(\"internalApiUrl\", new()\n    {\n        AgentId = dev.AgentId,\n        Value = \"https://api.internal.company.com/v1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := coder.GetWorkspace(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdev, err := coder.NewAgent(ctx, \"dev\", &coder.AgentArgs{\n\t\t\tOs:   pulumi.String(\"linux\"),\n\t\t\tArch: pulumi.String(\"amd64\"),\n\t\t\tDir:  pulumi.String(\"/workspace\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.NewEnv(ctx, \"welcomeMessage\", &coder.EnvArgs{\n\t\t\tAgentId: dev.AgentId,\n\t\t\tValue:   pulumi.String(\"Welcome to your Coder workspace!\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.NewEnv(ctx, \"internalApiUrl\", &coder.EnvArgs{\n\t\t\tAgentId: dev.AgentId,\n\t\t\tValue:   pulumi.String(\"https://api.internal.company.com/v1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.coder.CoderFunctions;\nimport com.pulumi.coder.Agent;\nimport com.pulumi.coder.AgentArgs;\nimport com.pulumi.coder.Env;\nimport com.pulumi.coder.EnvArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var me = CoderFunctions.getWorkspace();\n\n        var dev = new Agent(\"dev\", AgentArgs.builder()\n            .os(\"linux\")\n            .arch(\"amd64\")\n            .dir(\"/workspace\")\n            .build());\n\n        var welcomeMessage = new Env(\"welcomeMessage\", EnvArgs.builder()\n            .agentId(dev.agentId())\n            .value(\"Welcome to your Coder workspace!\")\n            .build());\n\n        var internalApiUrl = new Env(\"internalApiUrl\", EnvArgs.builder()\n            .agentId(dev.agentId())\n            .value(\"https://api.internal.company.com/v1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  dev:\n    type: coder:Agent\n    properties:\n      os: linux\n      arch: amd64\n      dir: /workspace\n  welcomeMessage:\n    type: coder:Env\n    properties:\n      agentId: ${dev.agentId}\n      value: Welcome to your Coder workspace!\n  internalApiUrl:\n    type: coder:Env\n    properties:\n      agentId: ${dev.agentId}\n      value: https://api.internal.company.com/v1\nvariables:\n  me:\n    fn::invoke:\n      function: coder:getWorkspace\n      arguments: {}\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "envId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the environment variable.\n"
        },
        "value": {
          "type": "string",
          "description": "The value of the environment variable.\n"
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "envId",
        "name"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "envId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the environment variable.\n"
        },
        "value": {
          "type": "string",
          "description": "The value of the environment variable.\n"
        }
      },
      "requiredInputs": [
        "agentId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Env resources.\n",
        "properties": {
          "agentId": {
            "type": "string",
            "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
          },
          "envId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the environment variable.\n"
          },
          "value": {
            "type": "string",
            "description": "The value of the environment variable.\n"
          }
        },
        "type": "object"
      }
    },
    "coder:index/externalAgent:ExternalAgent": {
      "description": "Define an external agent to be used in a workspace.\n\n> **Warning:** External agents require a [Premium](https://coder.com/pricing) Coder license.\n",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "externalAgentId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "externalAgentId"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "externalAgentId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "requiredInputs": [
        "agentId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ExternalAgent resources.\n",
        "properties": {
          "agentId": {
            "type": "string",
            "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
          },
          "externalAgentId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          }
        },
        "type": "object"
      }
    },
    "coder:index/metadata:Metadata": {
      "description": "Use this resource to attach metadata to a resource. They will be displayed in the Coder dashboard alongside the resource. The resource containing the agent, and it's metadata, will be shown by default. \n\nAlternatively, to attach metadata to the agent, use a `metadata` block within a `coder.Agent` resource.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\nimport * as kubernetes from \"@pulumi/kubernetes\";\nimport * as tls from \"@pulumi/tls\";\n\nexport = async () => {\n    const me = await coder.getWorkspace({});\n    const dev: kubernetes.index.Kubernetes_pod[] = [];\n    for (const range = {value: 0}; range.value < me.startCount; range.value++) {\n        dev.push(new kubernetes.index.Kubernetes_pod(`dev-${range.value}`, {\n            metadata: [{\n                name: \"k8s_example\",\n                namespace: \"example\",\n            }],\n            spec: [{}],\n        }));\n    }\n    const exampleKeyPair = new tls.index.Tls_private_key(\"exampleKeyPair\", {\n        algorithm: \"ECDSA\",\n        ecdsaCurve: \"P256\",\n    });\n    const podInfo: coder.Metadata[] = [];\n    for (const range = {value: 0}; range.value < me.startCount; range.value++) {\n        podInfo.push(new coder.Metadata(`podInfo-${range.value}`, {\n            resourceId: dev[0].id,\n            dailyCost: 200,\n            items: [\n                {\n                    key: \"description\",\n                    value: \"This description will show up in the Coder dashboard.\",\n                },\n                {\n                    key: \"pod_uid\",\n                    value: dev[0].uid,\n                },\n                {\n                    key: \"public_key\",\n                    value: exampleKeyPair.publicKeyOpenssh,\n                    sensitive: true,\n                },\n            ],\n        }));\n    }\n}\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\nimport pulumi_kubernetes as kubernetes\nimport pulumi_tls as tls\n\nme = coder.get_workspace()\ndev = []\nfor range in [{\"value\": i} for i in range(0, me.start_count)]:\n    dev.append(kubernetes.index.Kubernetes_pod(f\"dev-{range['value']}\",\n        metadata=[{\n            name: k8s_example,\n            namespace: example,\n        }],\n        spec=[{}]))\nexample_key_pair = tls.index.Tls_private_key(\"exampleKeyPair\",\n    algorithm=ECDSA,\n    ecdsa_curve=P256)\npod_info = []\nfor range in [{\"value\": i} for i in range(0, me.start_count)]:\n    pod_info.append(coder.Metadata(f\"podInfo-{range['value']}\",\n        resource_id=dev[0][\"id\"],\n        daily_cost=200,\n        items=[\n            {\n                \"key\": \"description\",\n                \"value\": \"This description will show up in the Coder dashboard.\",\n            },\n            {\n                \"key\": \"pod_uid\",\n                \"value\": dev[0][\"uid\"],\n            },\n            {\n                \"key\": \"public_key\",\n                \"value\": example_key_pair[\"publicKeyOpenssh\"],\n                \"sensitive\": True,\n            },\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\nusing Kubernetes = Pulumi.Kubernetes;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(async() => \n{\n    var me = await Coder.GetWorkspace.InvokeAsync();\n\n    var dev = new List<Kubernetes.Index.Kubernetes_pod>();\n    for (var rangeIndex = 0; rangeIndex < me.StartCount; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        dev.Add(new Kubernetes.Index.Kubernetes_pod($\"dev-{range.Value}\", new()\n        {\n            Metadata = new[]\n            {\n                \n                {\n                    { \"name\", \"k8s_example\" },\n                    { \"namespace\", \"example\" },\n                },\n            },\n            Spec = new[]\n            {\n                null,\n            },\n        }));\n    }\n    var exampleKeyPair = new Tls.Index.Tls_private_key(\"exampleKeyPair\", new()\n    {\n        Algorithm = \"ECDSA\",\n        EcdsaCurve = \"P256\",\n    });\n\n    var podInfo = new List<Coder.Metadata>();\n    for (var rangeIndex = 0; rangeIndex < me.StartCount; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        podInfo.Add(new Coder.Metadata($\"podInfo-{range.Value}\", new()\n        {\n            ResourceId = dev[0].Id,\n            DailyCost = 200,\n            Items = new[]\n            {\n                new Coder.Inputs.MetadataItemArgs\n                {\n                    Key = \"description\",\n                    Value = \"This description will show up in the Coder dashboard.\",\n                },\n                new Coder.Inputs.MetadataItemArgs\n                {\n                    Key = \"pod_uid\",\n                    Value = dev[0].Uid,\n                },\n                new Coder.Inputs.MetadataItemArgs\n                {\n                    Key = \"public_key\",\n                    Value = exampleKeyPair.PublicKeyOpenssh,\n                    Sensitive = true,\n                },\n            },\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kubernetes/sdk/go/kubernetes\"\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi-tls/sdk/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := coder.GetWorkspace(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar dev []*kubernetes.Kubernetes_pod\n\t\tfor index := 0; index < me.StartCount; index++ {\n\t\t\tkey0 := index\n\t\t\t_ := index\n\t\t\t__res, err := kubernetes.NewKubernetes_pod(ctx, fmt.Sprintf(\"dev-%v\", key0), &kubernetes.Kubernetes_podArgs{\n\t\t\t\tMetadata: []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"name\":      \"k8s_example\",\n\t\t\t\t\t\t\"namespace\": \"example\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSpec: []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{},\n\t\t\t\t},\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tdev = append(dev, __res)\n\t\t}\n\t\texampleKeyPair, err := tls.NewTls_private_key(ctx, \"exampleKeyPair\", &tls.Tls_private_keyArgs{\n\t\t\tAlgorithm:  \"ECDSA\",\n\t\t\tEcdsaCurve: \"P256\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar podInfo []*coder.Metadata\n\t\tfor index := 0; index < me.StartCount; index++ {\n\t\t\tkey0 := index\n\t\t\t_ := index\n\t\t\t__res, err := coder.NewMetadata(ctx, fmt.Sprintf(\"podInfo-%v\", key0), &coder.MetadataArgs{\n\t\t\t\tResourceId: dev[0].Id,\n\t\t\t\tDailyCost:  pulumi.Float64(200),\n\t\t\t\tItems: coder.MetadataItemArray{\n\t\t\t\t\t&coder.MetadataItemArgs{\n\t\t\t\t\t\tKey:   pulumi.String(\"description\"),\n\t\t\t\t\t\tValue: pulumi.String(\"This description will show up in the Coder dashboard.\"),\n\t\t\t\t\t},\n\t\t\t\t\t&coder.MetadataItemArgs{\n\t\t\t\t\t\tKey:   pulumi.String(\"pod_uid\"),\n\t\t\t\t\t\tValue: dev[0].Uid,\n\t\t\t\t\t},\n\t\t\t\t\t&coder.MetadataItemArgs{\n\t\t\t\t\t\tKey:       pulumi.String(\"public_key\"),\n\t\t\t\t\t\tValue:     exampleKeyPair.PublicKeyOpenssh,\n\t\t\t\t\t\tSensitive: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tpodInfo = append(podInfo, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.coder.CoderFunctions;\nimport com.pulumi.kubernetes.kubernetes_pod;\nimport com.pulumi.kubernetes.Kubernetes_podArgs;\nimport com.pulumi.tls.tls_private_key;\nimport com.pulumi.tls.Tls_private_keyArgs;\nimport com.pulumi.coder.Metadata;\nimport com.pulumi.coder.MetadataArgs;\nimport com.pulumi.coder.inputs.MetadataItemArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var me = CoderFunctions.getWorkspace();\n\n        for (var i = 0; i < me.applyValue(getWorkspaceResult -> getWorkspaceResult.startCount()); i++) {\n            new Kubernetes_pod(\"dev-\" + i, Kubernetes_podArgs.builder()\n                .metadata(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n                .spec()\n                .build());\n\n        \n}\n        var exampleKeyPair = new Tls_private_key(\"exampleKeyPair\", Tls_private_keyArgs.builder()\n            .algorithm(\"ECDSA\")\n            .ecdsaCurve(\"P256\")\n            .build());\n\n        for (var i = 0; i < me.applyValue(getWorkspaceResult -> getWorkspaceResult.startCount()); i++) {\n            new Metadata(\"podInfo-\" + i, MetadataArgs.builder()\n                .resourceId(dev[0].id())\n                .dailyCost(200)\n                .items(                \n                    MetadataItemArgs.builder()\n                        .key(\"description\")\n                        .value(\"This description will show up in the Coder dashboard.\")\n                        .build(),\n                    MetadataItemArgs.builder()\n                        .key(\"pod_uid\")\n                        .value(dev[0].uid())\n                        .build(),\n                    MetadataItemArgs.builder()\n                        .key(\"public_key\")\n                        .value(exampleKeyPair.publicKeyOpenssh())\n                        .sensitive(true)\n                        .build())\n                .build());\n\n        \n}\n    }\n}\n```\n```yaml\nresources:\n  dev:\n    type: kubernetes:kubernetes_pod\n    properties:\n      metadata:\n        - name: k8s_example\n          namespace: example\n      spec:\n        - {}\n    options: {}\n  exampleKeyPair:\n    type: tls:tls_private_key\n    properties:\n      algorithm: ECDSA\n      ecdsaCurve: P256\n  podInfo:\n    type: coder:Metadata\n    properties:\n      resourceId: ${dev[0].id}\n      # (Enterprise-only) this resource consumes 200 quota units\n      dailyCost: 200\n      items:\n        - key: description\n          value: This description will show up in the Coder dashboard.\n        - key: pod_uid\n          value: ${dev[0].uid}\n        - key: public_key\n          value: ${exampleKeyPair.publicKeyOpenssh}\n          sensitive: true\n    options: {}\nvariables:\n  me:\n    fn::invoke:\n      function: coder:getWorkspace\n      arguments: {}\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "dailyCost": {
          "type": "number",
          "description": "(Enterprise) The cost of this resource every 24 hours. Use the smallest denomination of your preferred currency. For example, if you work in USD, use cents.\n"
        },
        "hide": {
          "type": "boolean",
          "description": "Hide the resource from the UI.\n"
        },
        "icon": {
          "type": "string",
          "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/coder:index%2FMetadataItem:MetadataItem"
          },
          "description": "Each `item` block defines a single metadata item consisting of a key/value pair.\n"
        },
        "metadataId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "resourceId": {
          "type": "string",
          "description": "The `id` property of another resource that metadata should be attached to.\n"
        }
      },
      "type": "object",
      "required": [
        "metadataId",
        "resourceId"
      ],
      "inputProperties": {
        "dailyCost": {
          "type": "number",
          "description": "(Enterprise) The cost of this resource every 24 hours. Use the smallest denomination of your preferred currency. For example, if you work in USD, use cents.\n"
        },
        "hide": {
          "type": "boolean",
          "description": "Hide the resource from the UI.\n"
        },
        "icon": {
          "type": "string",
          "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/types/coder:index%2FMetadataItem:MetadataItem"
          },
          "description": "Each `item` block defines a single metadata item consisting of a key/value pair.\n"
        },
        "metadataId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "resourceId": {
          "type": "string",
          "description": "The `id` property of another resource that metadata should be attached to.\n"
        }
      },
      "requiredInputs": [
        "resourceId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Metadata resources.\n",
        "properties": {
          "dailyCost": {
            "type": "number",
            "description": "(Enterprise) The cost of this resource every 24 hours. Use the smallest denomination of your preferred currency. For example, if you work in USD, use cents.\n"
          },
          "hide": {
            "type": "boolean",
            "description": "Hide the resource from the UI.\n"
          },
          "icon": {
            "type": "string",
            "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/types/coder:index%2FMetadataItem:MetadataItem"
            },
            "description": "Each `item` block defines a single metadata item consisting of a key/value pair.\n"
          },
          "metadataId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "resourceId": {
            "type": "string",
            "description": "The `id` property of another resource that metadata should be attached to.\n"
          }
        },
        "type": "object"
      }
    },
    "coder:index/script:Script": {
      "description": "Use this resource to run a script from an agent. When multiple scripts are assigned to the same agent, they are executed in parallel.\n\n",
      "properties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "cron": {
          "type": "string",
          "description": "The cron schedule to run the script on. This uses a 6-field cron expression format: `seconds minutes hours day-of-month month day-of-week`. Note that this differs from the standard Unix 5-field format by including seconds as the first field. Examples: `\"0 0 22 * * *\"` (daily at 10 PM), `\"0 */5 * * * *\"` (every 5 minutes), `\"30 0 9 * * 1-5\"` (weekdays at 9:30 AM).\n"
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the script to display logs in the dashboard.\n"
        },
        "icon": {
          "type": "string",
          "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
        },
        "logPath": {
          "type": "string",
          "description": "The path of a file to write the logs to. If relative, it will be appended to tmp.\n"
        },
        "runOnStart": {
          "type": "boolean",
          "description": "This option defines whether or not the script should run when the agent starts. The script should exit when it is done to signal that the agent is ready.\n"
        },
        "runOnStop": {
          "type": "boolean",
          "description": "This option defines whether or not the script should run when the agent stops. The script should exit when it is done to signal that the workspace can be stopped.\n"
        },
        "script": {
          "type": "string",
          "description": "The content of the script that will be run.\n"
        },
        "scriptId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "startBlocksLogin": {
          "type": "boolean",
          "description": "This option determines whether users can log in immediately or must wait for the workspace to finish running this script upon startup. If not enabled, users may encounter an incomplete workspace when logging in. This option only sets the default, the user can still manually override the behavior.\n"
        },
        "timeout": {
          "type": "number",
          "description": "Time in seconds that the script is allowed to run. If the script does not complete within this time, the script is terminated and the agent lifecycle status is marked as timed out. A value of zero (default) means no timeout.\n"
        }
      },
      "type": "object",
      "required": [
        "agentId",
        "displayName",
        "script",
        "scriptId"
      ],
      "inputProperties": {
        "agentId": {
          "type": "string",
          "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
        },
        "cron": {
          "type": "string",
          "description": "The cron schedule to run the script on. This uses a 6-field cron expression format: `seconds minutes hours day-of-month month day-of-week`. Note that this differs from the standard Unix 5-field format by including seconds as the first field. Examples: `\"0 0 22 * * *\"` (daily at 10 PM), `\"0 */5 * * * *\"` (every 5 minutes), `\"30 0 9 * * 1-5\"` (weekdays at 9:30 AM).\n"
        },
        "displayName": {
          "type": "string",
          "description": "The display name of the script to display logs in the dashboard.\n"
        },
        "icon": {
          "type": "string",
          "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
        },
        "logPath": {
          "type": "string",
          "description": "The path of a file to write the logs to. If relative, it will be appended to tmp.\n"
        },
        "runOnStart": {
          "type": "boolean",
          "description": "This option defines whether or not the script should run when the agent starts. The script should exit when it is done to signal that the agent is ready.\n"
        },
        "runOnStop": {
          "type": "boolean",
          "description": "This option defines whether or not the script should run when the agent stops. The script should exit when it is done to signal that the workspace can be stopped.\n"
        },
        "script": {
          "type": "string",
          "description": "The content of the script that will be run.\n"
        },
        "scriptId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "startBlocksLogin": {
          "type": "boolean",
          "description": "This option determines whether users can log in immediately or must wait for the workspace to finish running this script upon startup. If not enabled, users may encounter an incomplete workspace when logging in. This option only sets the default, the user can still manually override the behavior.\n"
        },
        "timeout": {
          "type": "number",
          "description": "Time in seconds that the script is allowed to run. If the script does not complete within this time, the script is terminated and the agent lifecycle status is marked as timed out. A value of zero (default) means no timeout.\n"
        }
      },
      "requiredInputs": [
        "agentId",
        "displayName",
        "script"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Script resources.\n",
        "properties": {
          "agentId": {
            "type": "string",
            "description": "The `id` property of a `coder.Agent` resource to associate with.\n"
          },
          "cron": {
            "type": "string",
            "description": "The cron schedule to run the script on. This uses a 6-field cron expression format: `seconds minutes hours day-of-month month day-of-week`. Note that this differs from the standard Unix 5-field format by including seconds as the first field. Examples: `\"0 0 22 * * *\"` (daily at 10 PM), `\"0 */5 * * * *\"` (every 5 minutes), `\"30 0 9 * * 1-5\"` (weekdays at 9:30 AM).\n"
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the script to display logs in the dashboard.\n"
          },
          "icon": {
            "type": "string",
            "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/<path>\"`.\n"
          },
          "logPath": {
            "type": "string",
            "description": "The path of a file to write the logs to. If relative, it will be appended to tmp.\n"
          },
          "runOnStart": {
            "type": "boolean",
            "description": "This option defines whether or not the script should run when the agent starts. The script should exit when it is done to signal that the agent is ready.\n"
          },
          "runOnStop": {
            "type": "boolean",
            "description": "This option defines whether or not the script should run when the agent stops. The script should exit when it is done to signal that the workspace can be stopped.\n"
          },
          "script": {
            "type": "string",
            "description": "The content of the script that will be run.\n"
          },
          "scriptId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "startBlocksLogin": {
            "type": "boolean",
            "description": "This option determines whether users can log in immediately or must wait for the workspace to finish running this script upon startup. If not enabled, users may encounter an incomplete workspace when logging in. This option only sets the default, the user can still manually override the behavior.\n"
          },
          "timeout": {
            "type": "number",
            "description": "Time in seconds that the script is allowed to run. If the script does not complete within this time, the script is terminated and the agent lifecycle status is marked as timed out. A value of zero (default) means no timeout.\n"
          }
        },
        "type": "object"
      }
    }
  },
  "functions": {
    "coder:index/getExternalAuth:getExternalAuth": {
      "description": "Use this data source to require users to authenticate with an external service prior to workspace creation. This can be used to [pre-authenticate external services](https://coder.com/docs/admin/external-auth) in a workspace. (e.g. Google Cloud, Github, Docker, etc.)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\n\nconst github = coder.getExternalAuth({\n    id: \"github\",\n});\nconst azure_identity = coder.getExternalAuth({\n    id: \"azure-identiy\",\n    optional: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\n\ngithub = coder.get_external_auth(id=\"github\")\nazure_identity = coder.get_external_auth(id=\"azure-identiy\",\n    optional=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var github = Coder.GetExternalAuth.Invoke(new()\n    {\n        Id = \"github\",\n    });\n\n    var azure_identity = Coder.GetExternalAuth.Invoke(new()\n    {\n        Id = \"azure-identiy\",\n        Optional = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := coder.GetExternalAuth(ctx, \u0026coder.GetExternalAuthArgs{\n\t\t\tId: \"github\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.GetExternalAuth(ctx, \u0026coder.GetExternalAuthArgs{\n\t\t\tId:       \"azure-identiy\",\n\t\t\tOptional: 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.coder.CoderFunctions;\nimport com.pulumi.coder.inputs.GetExternalAuthArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var github = CoderFunctions.getExternalAuth(GetExternalAuthArgs.builder()\n            .id(\"github\")\n            .build());\n\n        final var azure-identity = CoderFunctions.getExternalAuth(GetExternalAuthArgs.builder()\n            .id(\"azure-identiy\")\n            .optional(true)\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  github:\n    fn::invoke:\n      function: coder:getExternalAuth\n      arguments:\n        id: github\n  azure-identity:\n    fn::invoke:\n      function: coder:getExternalAuth\n      arguments:\n        id: azure-identiy\n        optional: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getExternalAuth.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of a configured external auth provider set up in your Coder deployment.\n"
          },
          "optional": {
            "type": "boolean",
            "description": "Authenticating with the external auth provider is not required, and can be skipped by users when creating or updating workspaces\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getExternalAuth.\n",
        "properties": {
          "accessToken": {
            "description": "The access token returned by the external auth provider. This can be used to pre-authenticate command-line tools.\n",
            "secret": true,
            "type": "string"
          },
          "id": {
            "description": "The ID of a configured external auth provider set up in your Coder deployment.\n",
            "type": "string"
          },
          "optional": {
            "description": "Authenticating with the external auth provider is not required, and can be skipped by users when creating or updating workspaces\n",
            "type": "boolean"
          }
        },
        "required": [
          "accessToken",
          "id"
        ],
        "type": "object"
      }
    },
    "coder:index/getParameter:getParameter": {
      "description": "Use this data source to configure editable options for workspaces.\n\n",
      "inputs": {
        "description": "A collection of arguments for invoking getParameter.\n",
        "properties": {
          "default": {
            "type": "string",
            "description": "A default value for the parameter.\n"
          },
          "description": {
            "type": "string",
            "description": "Describe what this parameter does.\n"
          },
          "displayName": {
            "type": "string",
            "description": "The displayed name of the parameter as it will appear in the interface.\n"
          },
          "ephemeral": {
            "type": "boolean",
            "description": "The value of an ephemeral parameter will not be preserved between consecutive workspace builds.\n"
          },
          "formType": {
            "type": "string",
            "description": "The type of this parameter. Must be one of: `\"radio\"`, `\"slider\"`, `\"input\"`, `\"dropdown\"`, `\"checkbox\"`, `\"switch\"`, `\"multi-select\"`, `\"tag-select\"`, `\"textarea\"`, `\"error\"`.\n"
          },
          "icon": {
            "type": "string",
            "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/\u003cpath\u003e\"`.\n"
          },
          "id": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "mutable": {
            "type": "boolean",
            "description": "Whether this value can be changed after workspace creation. This can be destructive for values like region, so use with caution!\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the parameter. If this is changed, developers will be re-prompted for a new value.\n"
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/types/coder:index%2FgetParameterOption:getParameterOption"
            },
            "description": "Each `option` block defines a value for a user to select from.\n"
          },
          "order": {
            "type": "number",
            "description": "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order).\n"
          },
          "styling": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "The type of this parameter. Must be one of: `\"string\"`, `\"number\"`, `\"bool\"`, `\"list(string)\"`.\n"
          },
          "validation": {
            "$ref": "#/types/coder:index%2FgetParameterValidation:getParameterValidation",
            "description": "Validate the input of a parameter.\n"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getParameter.\n",
        "properties": {
          "default": {
            "description": "A default value for the parameter.\n",
            "type": "string"
          },
          "description": {
            "description": "Describe what this parameter does.\n",
            "type": "string"
          },
          "displayName": {
            "description": "The displayed name of the parameter as it will appear in the interface.\n",
            "type": "string"
          },
          "ephemeral": {
            "description": "The value of an ephemeral parameter will not be preserved between consecutive workspace builds.\n",
            "type": "boolean"
          },
          "formType": {
            "description": "The type of this parameter. Must be one of: `\"radio\"`, `\"slider\"`, `\"input\"`, `\"dropdown\"`, `\"checkbox\"`, `\"switch\"`, `\"multi-select\"`, `\"tag-select\"`, `\"textarea\"`, `\"error\"`.\n",
            "type": "string"
          },
          "icon": {
            "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/\u003cpath\u003e\"`.\n",
            "type": "string"
          },
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "mutable": {
            "description": "Whether this value can be changed after workspace creation. This can be destructive for values like region, so use with caution!\n",
            "type": "boolean"
          },
          "name": {
            "description": "The name of the parameter. If this is changed, developers will be re-prompted for a new value.\n",
            "type": "string"
          },
          "optional": {
            "description": "Whether this value is optional.\n",
            "type": "boolean"
          },
          "options": {
            "description": "Each `option` block defines a value for a user to select from.\n",
            "items": {
              "$ref": "#/types/coder:index%2FgetParameterOption:getParameterOption"
            },
            "type": "array"
          },
          "order": {
            "description": "The order determines the position of a template parameter in the UI/CLI presentation. The lowest order is shown first and parameters with equal order are sorted by name (ascending order).\n",
            "type": "number"
          },
          "styling": {
            "type": "string"
          },
          "type": {
            "description": "The type of this parameter. Must be one of: `\"string\"`, `\"number\"`, `\"bool\"`, `\"list(string)\"`.\n",
            "type": "string"
          },
          "validation": {
            "$ref": "#/types/coder:index%2FgetParameterValidation:getParameterValidation",
            "description": "Validate the input of a parameter.\n"
          },
          "value": {
            "description": "The output value of the parameter.\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "optional",
          "value"
        ],
        "type": "object"
      }
    },
    "coder:index/getProvisioner:getProvisioner": {
      "description": "Use this data source to get information about the Coder provisioner.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\n\nconst devProvisioner = coder.getProvisioner({});\nconst devWorkspace = coder.getWorkspace({});\nconst main = new coder.Agent(\"main\", {\n    arch: devProvisioner.then(devProvisioner =\u003e devProvisioner.arch),\n    os: devProvisioner.then(devProvisioner =\u003e devProvisioner.os),\n    dir: \"/workspace\",\n    displayApps: {\n        vscode: true,\n        vscodeInsiders: false,\n        webTerminal: true,\n        sshHelper: false,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\n\ndev_provisioner = coder.get_provisioner()\ndev_workspace = coder.get_workspace()\nmain = coder.Agent(\"main\",\n    arch=dev_provisioner.arch,\n    os=dev_provisioner.os,\n    dir=\"/workspace\",\n    display_apps={\n        \"vscode\": True,\n        \"vscode_insiders\": False,\n        \"web_terminal\": True,\n        \"ssh_helper\": False,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var devProvisioner = Coder.GetProvisioner.Invoke();\n\n    var devWorkspace = Coder.GetWorkspace.Invoke();\n\n    var main = new Coder.Agent(\"main\", new()\n    {\n        Arch = devProvisioner.Apply(getProvisionerResult =\u003e getProvisionerResult.Arch),\n        Os = devProvisioner.Apply(getProvisionerResult =\u003e getProvisionerResult.Os),\n        Dir = \"/workspace\",\n        DisplayApps = new Coder.Inputs.AgentDisplayAppsArgs\n        {\n            Vscode = true,\n            VscodeInsiders = false,\n            WebTerminal = true,\n            SshHelper = false,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdevProvisioner, err := coder.GetProvisioner(ctx, \u0026coder.GetProvisionerArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.GetWorkspace(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.NewAgent(ctx, \"main\", \u0026coder.AgentArgs{\n\t\t\tArch: pulumi.String(devProvisioner.Arch),\n\t\t\tOs:   pulumi.String(devProvisioner.Os),\n\t\t\tDir:  pulumi.String(\"/workspace\"),\n\t\t\tDisplayApps: \u0026coder.AgentDisplayAppsArgs{\n\t\t\t\tVscode:         pulumi.Bool(true),\n\t\t\t\tVscodeInsiders: pulumi.Bool(false),\n\t\t\t\tWebTerminal:    pulumi.Bool(true),\n\t\t\t\tSshHelper:      pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.coder.CoderFunctions;\nimport com.pulumi.coder.inputs.GetProvisionerArgs;\nimport com.pulumi.coder.Agent;\nimport com.pulumi.coder.AgentArgs;\nimport com.pulumi.coder.inputs.AgentDisplayAppsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var devProvisioner = CoderFunctions.getProvisioner();\n\n        final var devWorkspace = CoderFunctions.getWorkspace();\n\n        var main = new Agent(\"main\", AgentArgs.builder()\n            .arch(devProvisioner.applyValue(getProvisionerResult -\u003e getProvisionerResult.arch()))\n            .os(devProvisioner.applyValue(getProvisionerResult -\u003e getProvisionerResult.os()))\n            .dir(\"/workspace\")\n            .displayApps(AgentDisplayAppsArgs.builder()\n                .vscode(true)\n                .vscodeInsiders(false)\n                .webTerminal(true)\n                .sshHelper(false)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  main:\n    type: coder:Agent\n    properties:\n      arch: ${devProvisioner.arch}\n      os: ${devProvisioner.os}\n      dir: /workspace\n      displayApps:\n        vscode: true\n        vscodeInsiders: false\n        webTerminal: true\n        sshHelper: false\nvariables:\n  devProvisioner:\n    fn::invoke:\n      function: coder:getProvisioner\n      arguments: {}\n  devWorkspace:\n    fn::invoke:\n      function: coder:getWorkspace\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getProvisioner.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of this resource.\n"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getProvisioner.\n",
        "properties": {
          "arch": {
            "description": "The architecture of the host. This exposes `runtime.GOARCH` (see [Go constants](https://pkg.go.dev/runtime#pkg-constants)).\n",
            "type": "string"
          },
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "os": {
            "description": "The operating system of the host. This exposes `runtime.GOOS` (see [Go constants](https://pkg.go.dev/runtime#pkg-constants)).\n",
            "type": "string"
          }
        },
        "required": [
          "arch",
          "id",
          "os"
        ],
        "type": "object"
      }
    },
    "coder:index/getTask:getTask": {
      "description": "Use this data source to read information about Coder Tasks.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\n\nexport = async () =\u003e {\n    const meWorkspace = await coder.getWorkspace({});\n    const meTask = await coder.getTask({});\n    const task: coder.AiTask[] = [];\n    for (const range = {value: 0}; range.value \u003c (meTask.enabled ? meWorkspace.startCount : 0); range.value++) {\n        task.push(new coder.AiTask(`task-${range.value}`, {appId: module[\"example-agent\"].task_app_id}));\n    }\n}\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\n\nme_workspace = coder.get_workspace()\nme_task = coder.get_task()\ntask = []\nfor range in [{\"value\": i} for i in range(0, me_workspace.start_count if me_task.enabled else 0)]:\n    task.append(coder.AiTask(f\"task-{range['value']}\", app_id=module[\"example-agent\"][\"task_app_id\"]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n    var meWorkspace = await Coder.GetWorkspace.InvokeAsync();\n\n    var meTask = await Coder.GetTask.InvokeAsync();\n\n    var task = new List\u003cCoder.AiTask\u003e();\n    for (var rangeIndex = 0; rangeIndex \u003c meTask.Enabled ? meWorkspace.StartCount : 0; rangeIndex++)\n    {\n        var range = new { Value = rangeIndex };\n        task.Add(new Coder.AiTask($\"task-{range.Value}\", new()\n        {\n            AppId = module.Example_agent.Task_app_id,\n        }));\n    }\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmeWorkspace, err := coder.GetWorkspace(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmeTask, err := coder.GetTask(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar tmp0 pulumi.Float64\n\t\tif meTask.Enabled {\n\t\t\ttmp0 = meWorkspace.StartCount\n\t\t} else {\n\t\t\ttmp0 = 0\n\t\t}\n\t\tvar task []*coder.AiTask\n\t\tfor index := 0; index \u003c tmp0; index++ {\n\t\t\tkey0 := index\n\t\t\t_ := index\n\t\t\t__res, err := coder.NewAiTask(ctx, fmt.Sprintf(\"task-%v\", key0), \u0026coder.AiTaskArgs{\n\t\t\t\tAppId: pulumi.Any(module.ExampleAgent.Task_app_id),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\ttask = append(task, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.coder.CoderFunctions;\nimport com.pulumi.coder.AiTask;\nimport com.pulumi.coder.AiTaskArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var meWorkspace = CoderFunctions.getWorkspace();\n\n        final var meTask = CoderFunctions.getTask();\n\n        for (var i = 0; i \u003c meTask.applyValue(getTaskResult -\u003e getTaskResult.enabled()) ? meWorkspace.applyValue(getWorkspaceResult -\u003e getWorkspaceResult.startCount()) : 0; i++) {\n            new AiTask(\"task-\" + i, AiTaskArgs.builder()\n                .appId(module.example-agent().task_app_id())\n                .build());\n\n        \n}\n    }\n}\n```\n```yaml\nresources:\n  task:\n    type: coder:AiTask\n    properties:\n      appId: ${module\"example-agent\"[%!s(MISSING)].task_app_id}\n    options: {}\nvariables:\n  meWorkspace:\n    fn::invoke:\n      function: coder:getWorkspace\n      arguments: {}\n  meTask:\n    fn::invoke:\n      function: coder:getTask\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "outputs": {
        "description": "A collection of values returned by getTask.\n",
        "properties": {
          "enabled": {
            "description": "True when executing in a Coder Task context, false when in a Coder Workspace context.\n",
            "type": "boolean"
          },
          "id": {
            "type": "string"
          },
          "prompt": {
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "id",
          "prompt"
        ],
        "type": "object"
      }
    },
    "coder:index/getWorkspace:getWorkspace": {
      "description": "Use this data source to get information for the active workspace build.\n\n",
      "outputs": {
        "description": "A collection of values returned by getWorkspace.\n",
        "properties": {
          "accessPort": {
            "description": "The access port of the Coder deployment provisioning this workspace.\n",
            "type": "number"
          },
          "accessUrl": {
            "description": "The access URL of the Coder deployment provisioning this workspace. This is the base URL without a trailing slash (e.g., \"https://coder.example.com\" or \"https://coder.example.com:8080\").\n",
            "type": "string"
          },
          "id": {
            "description": "UUID of the workspace.\n",
            "type": "string"
          },
          "isPrebuild": {
            "description": "Similar to `prebuild_count`, but a boolean value instead of a count. This is set to true if the workspace is a currently unassigned prebuild. Once the workspace is assigned, this value will be false.\n",
            "type": "boolean"
          },
          "isPrebuildClaim": {
            "description": "Indicates whether a prebuilt workspace has just been claimed and this is the first `apply` after that occurrence.\n",
            "type": "boolean"
          },
          "name": {
            "description": "Name of the workspace.\n",
            "type": "string"
          },
          "prebuildCount": {
            "description": "A computed count, equal to 1 if the workspace is a currently unassigned prebuild. Use this to conditionally act on the status of a prebuild. Actions that do not require user identity can be taken when this value is set to 1. Actions that should only be taken once the workspace has been assigned to a user may be taken when this value is set to 0.\n",
            "type": "number"
          },
          "startCount": {
            "description": "A computed count based on `transition` state. If `start`, count will equal 1.\n",
            "type": "number"
          },
          "templateId": {
            "description": "ID of the workspace's template.\n",
            "type": "string"
          },
          "templateName": {
            "description": "Name of the workspace's template.\n",
            "type": "string"
          },
          "templateVersion": {
            "description": "Version of the workspace's template.\n",
            "type": "string"
          },
          "transition": {
            "description": "Either `start` or `stop`. Use this to start/stop resources with `count`.\n",
            "type": "string"
          }
        },
        "required": [
          "accessPort",
          "accessUrl",
          "id",
          "isPrebuild",
          "isPrebuildClaim",
          "name",
          "prebuildCount",
          "startCount",
          "templateId",
          "templateName",
          "templateVersion",
          "transition"
        ],
        "type": "object"
      }
    },
    "coder:index/getWorkspaceOwner:getWorkspaceOwner": {
      "description": "Use this data source to fetch information about the workspace owner.\n\n",
      "outputs": {
        "description": "A collection of values returned by getWorkspaceOwner.\n",
        "properties": {
          "email": {
            "description": "The email address of the user.\n",
            "type": "string"
          },
          "fullName": {
            "description": "The full name of the user.\n",
            "type": "string"
          },
          "groups": {
            "description": "The groups of which the user is a member.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "The UUID of the workspace owner.\n",
            "type": "string"
          },
          "loginType": {
            "description": "The type of login the user has.\n",
            "type": "string"
          },
          "name": {
            "description": "The username of the user.\n",
            "type": "string"
          },
          "oidcAccessToken": {
            "description": "A valid OpenID Connect access token of the workspace owner. This is only available if the workspace owner authenticated with OpenID Connect. If a valid token cannot be obtained, this value will be an empty string.\n",
            "secret": true,
            "type": "string"
          },
          "rbacRoles": {
            "description": "The RBAC roles of which the user is assigned.\n",
            "items": {
              "$ref": "#/types/coder:index%2FgetWorkspaceOwnerRbacRole:getWorkspaceOwnerRbacRole"
            },
            "type": "array"
          },
          "sessionToken": {
            "description": "Session token for authenticating with a Coder deployment. It is regenerated every time a workspace is started.\n",
            "secret": true,
            "type": "string"
          },
          "sshPrivateKey": {
            "description": "The user's generated SSH private key.\n",
            "secret": true,
            "type": "string"
          },
          "sshPublicKey": {
            "description": "The user's generated SSH public key.\n",
            "type": "string"
          }
        },
        "required": [
          "email",
          "fullName",
          "groups",
          "id",
          "loginType",
          "name",
          "oidcAccessToken",
          "rbacRoles",
          "sessionToken",
          "sshPrivateKey",
          "sshPublicKey"
        ],
        "type": "object"
      }
    },
    "coder:index/getWorkspacePreset:getWorkspacePreset": {
      "description": "Use this data source to predefine common configurations for coder workspaces. Users will have the option to select a defined preset, which will automatically apply the selected configuration. Any parameters defined in the preset will be applied to the workspace. Parameters that are defined by the template but not defined by the preset will still be configurable when creating a workspace.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\n\nconst example = coder.getWorkspacePreset({\n    name: \"example\",\n    description: \"Example description of what this preset does.\",\n    icon: \"/icon/example.svg\",\n    parameters: {\n        [data.coder_parameter.example.name]: \"us-central1-a\",\n        [data.coder_parameter.ami.name]: \"ami-xxxxxxxx\",\n    },\n});\nconst standard = coder.getWorkspacePreset({\n    name: \"Standard\",\n    description: \"A workspace preset with medium compute in the US West region.\",\n    icon: \"/icon/standard.svg\",\n    \"default\": true,\n    parameters: {\n        [data.coder_parameter.instance_type.name]: \"t3.medium\",\n        [data.coder_parameter.region.name]: \"us-west-2\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\n\nexample = coder.get_workspace_preset(name=\"example\",\n    description=\"Example description of what this preset does.\",\n    icon=\"/icon/example.svg\",\n    parameters={\n        data[\"coder_parameter\"][\"example\"][\"name\"]: \"us-central1-a\",\n        data[\"coder_parameter\"][\"ami\"][\"name\"]: \"ami-xxxxxxxx\",\n    })\nstandard = coder.get_workspace_preset(name=\"Standard\",\n    description=\"A workspace preset with medium compute in the US West region.\",\n    icon=\"/icon/standard.svg\",\n    default=True,\n    parameters={\n        data[\"coder_parameter\"][\"instance_type\"][\"name\"]: \"t3.medium\",\n        data[\"coder_parameter\"][\"region\"][\"name\"]: \"us-west-2\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Coder.GetWorkspacePreset.Invoke(new()\n    {\n        Name = \"example\",\n        Description = \"Example description of what this preset does.\",\n        Icon = \"/icon/example.svg\",\n        Parameters = \n        {\n            { data.Coder_parameter.Example.Name, \"us-central1-a\" },\n            { data.Coder_parameter.Ami.Name, \"ami-xxxxxxxx\" },\n        },\n    });\n\n    var standard = Coder.GetWorkspacePreset.Invoke(new()\n    {\n        Name = \"Standard\",\n        Description = \"A workspace preset with medium compute in the US West region.\",\n        Icon = \"/icon/standard.svg\",\n        Default = true,\n        Parameters = \n        {\n            { data.Coder_parameter.Instance_type.Name, \"t3.medium\" },\n            { data.Coder_parameter.Region.Name, \"us-west-2\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := coder.GetWorkspacePreset(ctx, \u0026coder.GetWorkspacePresetArgs{\n\t\t\tName:        \"example\",\n\t\t\tDescription: pulumi.StringRef(\"Example description of what this preset does.\"),\n\t\t\tIcon:        pulumi.StringRef(\"/icon/example.svg\"),\n\t\t\tParameters: map[string]string{\n\t\t\t\tdata.Coder_parameter.Example.Name: \"us-central1-a\",\n\t\t\t\tdata.Coder_parameter.Ami.Name:     \"ami-xxxxxxxx\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = coder.GetWorkspacePreset(ctx, \u0026coder.GetWorkspacePresetArgs{\n\t\t\tName:        \"Standard\",\n\t\t\tDescription: pulumi.StringRef(\"A workspace preset with medium compute in the US West region.\"),\n\t\t\tIcon:        pulumi.StringRef(\"/icon/standard.svg\"),\n\t\t\tDefault:     pulumi.BoolRef(true),\n\t\t\tParameters: map[string]string{\n\t\t\t\tdata.Coder_parameter.Instance_type.Name: \"t3.medium\",\n\t\t\t\tdata.Coder_parameter.Region.Name:        \"us-west-2\",\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.coder.CoderFunctions;\nimport com.pulumi.coder.inputs.GetWorkspacePresetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 = CoderFunctions.getWorkspacePreset(GetWorkspacePresetArgs.builder()\n            .name(\"example\")\n            .description(\"Example description of what this preset does.\")\n            .icon(\"/icon/example.svg\")\n            .parameters(Map.ofEntries(\n                Map.entry(data.coder_parameter().example().name(), \"us-central1-a\"),\n                Map.entry(data.coder_parameter().ami().name(), \"ami-xxxxxxxx\")\n            ))\n            .build());\n\n        final var standard = CoderFunctions.getWorkspacePreset(GetWorkspacePresetArgs.builder()\n            .name(\"Standard\")\n            .description(\"A workspace preset with medium compute in the US West region.\")\n            .icon(\"/icon/standard.svg\")\n            .default_(true)\n            .parameters(Map.ofEntries(\n                Map.entry(data.coder_parameter().instance_type().name(), \"t3.medium\"),\n                Map.entry(data.coder_parameter().region().name(), \"us-west-2\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: coder:getWorkspacePreset\n      arguments:\n        name: example\n        description: Example description of what this preset does.\n        icon: /icon/example.svg\n        parameters:\n          ${data.coder_parameter.example.name}: us-central1-a\n          ${data.coder_parameter.ami.name}: ami-xxxxxxxx\n  standard:\n    fn::invoke:\n      function: coder:getWorkspacePreset\n      arguments:\n        name: Standard\n        description: A workspace preset with medium compute in the US West region.\n        icon: /icon/standard.svg\n        default: true\n        parameters:\n          ${data.coder_parameter.instance_type.name}: t3.medium\n          ${data.coder_parameter.region.name}: us-west-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getWorkspacePreset.\n",
        "properties": {
          "default": {
            "type": "boolean",
            "description": "Whether this preset should be selected by default when creating a workspace. Only one preset per template can be marked as default.\n"
          },
          "description": {
            "type": "string",
            "description": "Describe what this preset does.\n"
          },
          "icon": {
            "type": "string",
            "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/\u003cpath\u003e\"`.\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the workspace preset.\n"
          },
          "parameters": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Workspace parameters that will be set by the workspace preset. For simple templates that only need prebuilds, you may define a preset with zero parameters. Because workspace parameters may change between Coder template versions, preset parameters are allowed to define values for parameters that do not exist in the current template version.\n"
          },
          "prebuilds": {
            "$ref": "#/types/coder:index%2FgetWorkspacePresetPrebuilds:getWorkspacePresetPrebuilds",
            "description": "Configuration for prebuilt workspaces associated with this preset. Coder will maintain a pool of standby workspaces based on this configuration. When a user creates a workspace using this preset, they are assigned a prebuilt workspace instead of waiting for a new one to build. See prebuilt workspace documentation [here](https://coder.com/docs/admin/templates/extending-templates/prebuilt-workspaces.md)\n"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getWorkspacePreset.\n",
        "properties": {
          "default": {
            "description": "Whether this preset should be selected by default when creating a workspace. Only one preset per template can be marked as default.\n",
            "type": "boolean"
          },
          "description": {
            "description": "Describe what this preset does.\n",
            "type": "string"
          },
          "icon": {
            "description": "A URL to an icon that will display in the dashboard. View built-in icons [here](https://github.com/coder/coder/tree/main/site/static/icon). Use a built-in icon with `\"${data.coder_workspace.me.access_url}/icon/\u003cpath\u003e\"`.\n",
            "type": "string"
          },
          "id": {
            "description": "The preset ID is automatically generated and may change between runs. It is recommended to use the `name` attribute to identify the preset.\n",
            "type": "string"
          },
          "name": {
            "description": "The name of the workspace preset.\n",
            "type": "string"
          },
          "parameters": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Workspace parameters that will be set by the workspace preset. For simple templates that only need prebuilds, you may define a preset with zero parameters. Because workspace parameters may change between Coder template versions, preset parameters are allowed to define values for parameters that do not exist in the current template version.\n",
            "type": "object"
          },
          "prebuilds": {
            "$ref": "#/types/coder:index%2FgetWorkspacePresetPrebuilds:getWorkspacePresetPrebuilds",
            "description": "Configuration for prebuilt workspaces associated with this preset. Coder will maintain a pool of standby workspaces based on this configuration. When a user creates a workspace using this preset, they are assigned a prebuilt workspace instead of waiting for a new one to build. See prebuilt workspace documentation [here](https://coder.com/docs/admin/templates/extending-templates/prebuilt-workspaces.md)\n"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      }
    },
    "coder:index/getWorkspaceTags:getWorkspaceTags": {
      "description": "Use this data source to configure workspace tags to select provisioners.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as coder from \"@pulumi/coder\";\n\nconst osSelector = coder.getParameter({\n    name: \"os_selector\",\n    displayName: \"Operating System\",\n    mutable: false,\n    \"default\": \"osx\",\n    options: [\n        {\n            icon: \"/icons/linux.png\",\n            name: \"Linux\",\n            value: \"linux\",\n        },\n        {\n            icon: \"/icons/osx.png\",\n            name: \"OSX\",\n            value: \"osx\",\n        },\n        {\n            icon: \"/icons/windows.png\",\n            name: \"Windows\",\n            value: \"windows\",\n        },\n    ],\n});\nconst featureCacheEnabled = coder.getParameter({\n    name: \"feature_cache_enabled\",\n    displayName: \"Enable cache?\",\n    type: \"bool\",\n    \"default\": \"false\",\n});\nconst featureDebugEnabled = coder.getParameter({\n    name: \"feature_debug_enabled\",\n    displayName: \"Enable debug?\",\n    type: \"bool\",\n    \"default\": \"true\",\n});\nconst customWorkspaceTags = Promise.all([osSelector, featureDebugEnabled, featureCacheEnabled]).then(([osSelector, featureDebugEnabled, featureCacheEnabled]) =\u003e coder.getWorkspaceTags({\n    tags: {\n        cluster: \"developers\",\n        os: osSelector.value,\n        debug: `${featureDebugEnabled.value}+12345`,\n        cache: featureCacheEnabled.value == \"true\" ? \"nix-with-cache\" : \"no-cache\",\n    },\n}));\n```\n```python\nimport pulumi\nimport pulumi_coder as coder\n\nos_selector = coder.get_parameter(name=\"os_selector\",\n    display_name=\"Operating System\",\n    mutable=False,\n    default=\"osx\",\n    options=[\n        {\n            \"icon\": \"/icons/linux.png\",\n            \"name\": \"Linux\",\n            \"value\": \"linux\",\n        },\n        {\n            \"icon\": \"/icons/osx.png\",\n            \"name\": \"OSX\",\n            \"value\": \"osx\",\n        },\n        {\n            \"icon\": \"/icons/windows.png\",\n            \"name\": \"Windows\",\n            \"value\": \"windows\",\n        },\n    ])\nfeature_cache_enabled = coder.get_parameter(name=\"feature_cache_enabled\",\n    display_name=\"Enable cache?\",\n    type=\"bool\",\n    default=\"false\")\nfeature_debug_enabled = coder.get_parameter(name=\"feature_debug_enabled\",\n    display_name=\"Enable debug?\",\n    type=\"bool\",\n    default=\"true\")\ncustom_workspace_tags = coder.get_workspace_tags(tags={\n    \"cluster\": \"developers\",\n    \"os\": os_selector.value,\n    \"debug\": f\"{feature_debug_enabled.value}+12345\",\n    \"cache\": \"nix-with-cache\" if feature_cache_enabled.value == \"true\" else \"no-cache\",\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Coder = Pulumi.Coder;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var osSelector = Coder.GetParameter.Invoke(new()\n    {\n        Name = \"os_selector\",\n        DisplayName = \"Operating System\",\n        Mutable = false,\n        Default = \"osx\",\n        Options = new[]\n        {\n            new Coder.Inputs.GetParameterOptionInputArgs\n            {\n                Icon = \"/icons/linux.png\",\n                Name = \"Linux\",\n                Value = \"linux\",\n            },\n            new Coder.Inputs.GetParameterOptionInputArgs\n            {\n                Icon = \"/icons/osx.png\",\n                Name = \"OSX\",\n                Value = \"osx\",\n            },\n            new Coder.Inputs.GetParameterOptionInputArgs\n            {\n                Icon = \"/icons/windows.png\",\n                Name = \"Windows\",\n                Value = \"windows\",\n            },\n        },\n    });\n\n    var featureCacheEnabled = Coder.GetParameter.Invoke(new()\n    {\n        Name = \"feature_cache_enabled\",\n        DisplayName = \"Enable cache?\",\n        Type = \"bool\",\n        Default = \"false\",\n    });\n\n    var featureDebugEnabled = Coder.GetParameter.Invoke(new()\n    {\n        Name = \"feature_debug_enabled\",\n        DisplayName = \"Enable debug?\",\n        Type = \"bool\",\n        Default = \"true\",\n    });\n\n    var customWorkspaceTags = Coder.GetWorkspaceTags.Invoke(new()\n    {\n        Tags = \n        {\n            { \"cluster\", \"developers\" },\n            { \"os\", osSelector.Apply(getParameterResult =\u003e getParameterResult.Value) },\n            { \"debug\", $\"{featureDebugEnabled.Apply(getParameterResult =\u003e getParameterResult.Value)}+12345\" },\n            { \"cache\", featureCacheEnabled.Apply(getParameterResult =\u003e getParameterResult.Value) == \"true\" ? \"nix-with-cache\" : \"no-cache\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/coder/v2/coder\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tosSelector, err := coder.GetParameter(ctx, \u0026coder.GetParameterArgs{\n\t\t\tName:        \"os_selector\",\n\t\t\tDisplayName: pulumi.StringRef(\"Operating System\"),\n\t\t\tMutable:     pulumi.BoolRef(false),\n\t\t\tDefault:     pulumi.StringRef(\"osx\"),\n\t\t\tOptions: []coder.GetParameterOption{\n\t\t\t\t{\n\t\t\t\t\tIcon:  pulumi.StringRef(\"/icons/linux.png\"),\n\t\t\t\t\tName:  \"Linux\",\n\t\t\t\t\tValue: \"linux\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tIcon:  pulumi.StringRef(\"/icons/osx.png\"),\n\t\t\t\t\tName:  \"OSX\",\n\t\t\t\t\tValue: \"osx\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tIcon:  pulumi.StringRef(\"/icons/windows.png\"),\n\t\t\t\t\tName:  \"Windows\",\n\t\t\t\t\tValue: \"windows\",\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\tfeatureCacheEnabled, err := coder.GetParameter(ctx, \u0026coder.GetParameterArgs{\n\t\t\tName:        \"feature_cache_enabled\",\n\t\t\tDisplayName: pulumi.StringRef(\"Enable cache?\"),\n\t\t\tType:        pulumi.StringRef(\"bool\"),\n\t\t\tDefault:     pulumi.StringRef(\"false\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfeatureDebugEnabled, err := coder.GetParameter(ctx, \u0026coder.GetParameterArgs{\n\t\t\tName:        \"feature_debug_enabled\",\n\t\t\tDisplayName: pulumi.StringRef(\"Enable debug?\"),\n\t\t\tType:        pulumi.StringRef(\"bool\"),\n\t\t\tDefault:     pulumi.StringRef(\"true\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar tmp0 string\n\t\tif featureCacheEnabled.Value == \"true\" {\n\t\t\ttmp0 = \"nix-with-cache\"\n\t\t} else {\n\t\t\ttmp0 = \"no-cache\"\n\t\t}\n\t\t_, err = coder.GetWorkspaceTags(ctx, \u0026coder.GetWorkspaceTagsArgs{\n\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\"cluster\": \"developers\",\n\t\t\t\t\"os\":      osSelector.Value,\n\t\t\t\t\"debug\":   fmt.Sprintf(\"%v+12345\", featureDebugEnabled.Value),\n\t\t\t\t\"cache\":   tmp0,\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.coder.CoderFunctions;\nimport com.pulumi.coder.inputs.GetParameterArgs;\nimport com.pulumi.coder.inputs.GetWorkspaceTagsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var osSelector = CoderFunctions.getParameter(GetParameterArgs.builder()\n            .name(\"os_selector\")\n            .displayName(\"Operating System\")\n            .mutable(false)\n            .default_(\"osx\")\n            .options(            \n                GetParameterOptionArgs.builder()\n                    .icon(\"/icons/linux.png\")\n                    .name(\"Linux\")\n                    .value(\"linux\")\n                    .build(),\n                GetParameterOptionArgs.builder()\n                    .icon(\"/icons/osx.png\")\n                    .name(\"OSX\")\n                    .value(\"osx\")\n                    .build(),\n                GetParameterOptionArgs.builder()\n                    .icon(\"/icons/windows.png\")\n                    .name(\"Windows\")\n                    .value(\"windows\")\n                    .build())\n            .build());\n\n        final var featureCacheEnabled = CoderFunctions.getParameter(GetParameterArgs.builder()\n            .name(\"feature_cache_enabled\")\n            .displayName(\"Enable cache?\")\n            .type(\"bool\")\n            .default_(false)\n            .build());\n\n        final var featureDebugEnabled = CoderFunctions.getParameter(GetParameterArgs.builder()\n            .name(\"feature_debug_enabled\")\n            .displayName(\"Enable debug?\")\n            .type(\"bool\")\n            .default_(true)\n            .build());\n\n        final var customWorkspaceTags = CoderFunctions.getWorkspaceTags(GetWorkspaceTagsArgs.builder()\n            .tags(Map.ofEntries(\n                Map.entry(\"cluster\", \"developers\"),\n                Map.entry(\"os\", osSelector.applyValue(getParameterResult -\u003e getParameterResult.value())),\n                Map.entry(\"debug\", String.format(\"%s+12345\", featureDebugEnabled.applyValue(getParameterResult -\u003e getParameterResult.value()))),\n                Map.entry(\"cache\", featureCacheEnabled.applyValue(getParameterResult -\u003e getParameterResult.value()) == \"true\" ? \"nix-with-cache\" : \"no-cache\")\n            ))\n            .build());\n\n    }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getWorkspaceTags.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "tags": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Key-value map with workspace tags\n"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getWorkspaceTags.\n",
        "properties": {
          "id": {
            "description": "The ID of this resource.\n",
            "type": "string"
          },
          "tags": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Key-value map with workspace tags\n",
            "type": "object"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      }
    }
  },
  "parameterization": {
    "baseProvider": {
      "name": "terraform-provider",
      "version": "0.10.0"
    },
    "parameter": "eyJyZW1vdGUiOnsidXJsIjoicmVnaXN0cnkub3BlbnRvZnUub3JnL2NvZGVyL2NvZGVyIiwidmVyc2lvbiI6IjIuMTMuMSJ9fQ=="
  }
}
