{
  "name": "castai",
  "displayName": "CAST AI",
  "version": "7.73.2",
  "description": "A Pulumi package for creating and managing CAST AI cloud resources.",
  "keywords": [
    "pulumi",
    "castai",
    "kubernetes",
    "category/cloud"
  ],
  "homepage": "https://cast.ai",
  "license": "Apache-2.0",
  "attribution": "This Pulumi package is based on the [`castai` Terraform Provider](https://github.com/castai/terraform-provider-castai).",
  "repository": "https://github.com/castai/pulumi-castai",
  "logoUrl": "https://raw.githubusercontent.com/castai/pulumi-castai/main/docs/images/castai-logo.png",
  "pluginDownloadURL": "github://api.github.com/castai",
  "publisher": "CAST AI",
  "meta": {
    "moduleFormat": "(.*)(?:/[^/]*)"
  },
  "language": {
    "csharp": {
      "packageReferences": {
        "Pulumi": "3.*"
      },
      "namespaces": {
        "castai": "CastAI"
      },
      "compatibility": "tfbridge20"
    },
    "go": {
      "importBasePath": "github.com/castai/pulumi-castai/sdk/v7/go/castai",
      "generateResourceContainerTypes": true,
      "generateExtraInputTypes": true
    },
    "nodejs": {
      "packageName": "@castai/pulumi",
      "packageDescription": "A Pulumi package for creating and managing CAST AI cloud resources.",
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/castai/terraform-provider-castai)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> first check the [`pulumi-castai` repo](https://github.com/castai/pulumi-castai/issues); however, if that doesn't turn up anything,\n> please consult the source [`terraform-provider-castai` repo](https://github.com/castai/terraform-provider-castai/issues).",
      "dependencies": {
        "@pulumi/pulumi": "^3.0.0"
      },
      "devDependencies": {
        "@types/mime": "^2.0.0",
        "@types/node": "^10.0.0"
      },
      "compatibility": "tfbridge20",
      "disableUnionOutputTypes": true
    },
    "python": {
      "requires": {
        "pulumi": ">=3.0.0,<4.0.0"
      },
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/castai/terraform-provider-castai)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> first check the [`pulumi-castai` repo](https://github.com/castai/pulumi-castai/issues); however, if that doesn't turn up anything,\n> please consult the source [`terraform-provider-castai` repo](https://github.com/castai/terraform-provider-castai/issues).",
      "compatibility": "tfbridge20",
      "pyproject": {}
    }
  },
  "config": {
    "variables": {
      "apiToken": {
        "type": "string",
        "description": "The token used to connect to CAST AI API.",
        "defaultInfo": {
          "environment": [
            "CASTAI_API_TOKEN"
          ]
        },
        "secret": true
      },
      "apiUrl": {
        "type": "string",
        "description": "CAST.AI API url.",
        "default": "https://api.cast.ai",
        "defaultInfo": {
          "environment": [
            "CASTAI_API_URL"
          ]
        }
      }
    },
    "defaults": [
      "apiToken",
      "apiUrl"
    ]
  },
  "types": {
    "castai:autoscaling/AutoscalerAutoscalerSettings:AutoscalerAutoscalerSettings": {
      "properties": {
        "clusterLimits": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsClusterLimits:AutoscalerAutoscalerSettingsClusterLimits",
          "description": "defines minimum and maximum amount of CPU the cluster can have.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "enable/disable autoscaler policies\n"
        },
        "isScopedMode": {
          "type": "boolean",
          "description": "run autoscaler in scoped mode. Only marked pods and nodes will be considered.\n"
        },
        "nodeDownscaler": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsNodeDownscaler:AutoscalerAutoscalerSettingsNodeDownscaler",
          "description": "node downscaler defines policies for removing nodes based on the configured conditions.\n"
        },
        "nodeTemplatesPartialMatchingEnabled": {
          "type": "boolean",
          "description": "marks whether partial matching should be used when deciding which custom node template to select.\n"
        },
        "spotInstances": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsSpotInstances:AutoscalerAutoscalerSettingsSpotInstances",
          "description": "policy defining whether autoscaler can use spot instances for provisioning additional workloads.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`spotInstances`\" pulumi-lang-dotnet=\"`SpotInstances`\" pulumi-lang-go=\"`spotInstances`\" pulumi-lang-python=\"`spot_instances`\" pulumi-lang-yaml=\"`spotInstances`\" pulumi-lang-java=\"`spotInstances`\">`spot_instances`</span> is deprecated. Configure spot instance settings using the <span pulumi-lang-nodejs=\"`constraints`\" pulumi-lang-dotnet=\"`Constraints`\" pulumi-lang-go=\"`constraints`\" pulumi-lang-python=\"`constraints`\" pulumi-lang-yaml=\"`constraints`\" pulumi-lang-java=\"`constraints`\">`constraints`</span> field in the default<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource. The default node template has <span pulumi-lang-nodejs=\"`isDefault \" pulumi-lang-dotnet=\"`IsDefault \" pulumi-lang-go=\"`isDefault \" pulumi-lang-python=\"`is_default \" pulumi-lang-yaml=\"`isDefault \" pulumi-lang-java=\"`isDefault \">`is_default </span>= true`."
        },
        "unschedulablePods": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsUnschedulablePods:AutoscalerAutoscalerSettingsUnschedulablePods",
          "description": "policy defining autoscaler's behavior when unschedulable pods were detected.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsClusterLimits:AutoscalerAutoscalerSettingsClusterLimits": {
      "properties": {
        "cpu": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsClusterLimitsCpu:AutoscalerAutoscalerSettingsClusterLimitsCpu",
          "description": "defines the minimum and maximum amount of CPUs for cluster's worker nodes.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "enable/disable cluster size limits policy.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsClusterLimitsCpu:AutoscalerAutoscalerSettingsClusterLimitsCpu": {
      "properties": {
        "maxCores": {
          "type": "integer",
          "description": "defines the maximum allowed amount of vCPUs in the whole cluster.\n"
        },
        "minCores": {
          "type": "integer",
          "description": "defines the minimum allowed amount of CPUs in the whole cluster.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsNodeDownscaler:AutoscalerAutoscalerSettingsNodeDownscaler": {
      "properties": {
        "emptyNodes": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsNodeDownscalerEmptyNodes:AutoscalerAutoscalerSettingsNodeDownscalerEmptyNodes",
          "description": "defines whether Node Downscaler should opt in for removing empty worker nodes when possible.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "enable/disable node downscaler policy.\n"
        },
        "evictor": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsNodeDownscalerEvictor:AutoscalerAutoscalerSettingsNodeDownscalerEvictor",
          "description": "defines the CAST AI Evictor component settings. Evictor watches the pods running in your cluster and looks for ways to compact them into fewer nodes, making nodes empty, which will be removed by the empty worker nodes policy.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsNodeDownscalerEmptyNodes:AutoscalerAutoscalerSettingsNodeDownscalerEmptyNodes": {
      "properties": {
        "delaySeconds": {
          "type": "integer",
          "description": "period (in seconds) to wait before removing the node. Might be useful to control the aggressiveness of the downscaler.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "enable/disable the empty worker nodes policy.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsNodeDownscalerEvictor:AutoscalerAutoscalerSettingsNodeDownscalerEvictor": {
      "properties": {
        "aggressiveMode": {
          "type": "boolean",
          "description": "enable/disable aggressive mode. By default, Evictor does not target nodes that are running unreplicated pods. This mode will make the Evictor start considering application with just a single replica.\n"
        },
        "cycleInterval": {
          "type": "string",
          "description": "configure the interval duration between Evictor operations. This property can be used to lower or raise the frequency of the Evictor's find-and-drain operations.\n"
        },
        "dryRun": {
          "type": "boolean",
          "description": "enable/disable dry-run. This property allows you to prevent the Evictor from carrying any operations out and preview the actions it would take.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "enable/disable the Evictor policy. This will either install or uninstall the Evictor component in your cluster.\n"
        },
        "ignorePodDisruptionBudgets": {
          "type": "boolean",
          "description": "if enabled then Evictor will attempt to evict pods that have pod disruption budgets configured.\n"
        },
        "nodeGracePeriodMinutes": {
          "type": "integer",
          "description": "configure the node grace period which controls the duration which must pass after a node has been created before Evictor starts considering that node.\n"
        },
        "podEvictionFailureBackOffInterval": {
          "type": "string",
          "description": "configure the pod eviction failure back off interval. If pod eviction fails then Evictor will attempt to evict it again after the amount of time specified here.\n"
        },
        "scopedMode": {
          "type": "boolean",
          "description": "enable/disable scoped mode. By default, Evictor targets all nodes in the cluster. This mode will constrain it to just the nodes which were created by CAST AI.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsSpotInstances:AutoscalerAutoscalerSettingsSpotInstances": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "enable/disable spot instances policy.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span> under <span pulumi-lang-nodejs=\"`spotInstances`\" pulumi-lang-dotnet=\"`SpotInstances`\" pulumi-lang-go=\"`spotInstances`\" pulumi-lang-python=\"`spot_instances`\" pulumi-lang-yaml=\"`spotInstances`\" pulumi-lang-java=\"`spotInstances`\">`spot_instances`</span> is deprecated. To enable spot instances, set `constraints.spot = true` in the default<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource. The default node template has <span pulumi-lang-nodejs=\"`isDefault \" pulumi-lang-dotnet=\"`IsDefault \" pulumi-lang-go=\"`isDefault \" pulumi-lang-python=\"`is_default \" pulumi-lang-yaml=\"`isDefault \" pulumi-lang-java=\"`isDefault \">`is_default </span>= true`."
        },
        "maxReclaimRate": {
          "type": "integer",
          "description": "max allowed reclaim rate when choosing spot instance type. E.g. if the value is 10%, instance types having 10% or higher reclaim rate will not be considered. Set to zero to use all instance types regardless of reclaim rate.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`maxReclaimRate`\" pulumi-lang-dotnet=\"`MaxReclaimRate`\" pulumi-lang-go=\"`maxReclaimRate`\" pulumi-lang-python=\"`max_reclaim_rate`\" pulumi-lang-yaml=\"`maxReclaimRate`\" pulumi-lang-java=\"`maxReclaimRate`\">`max_reclaim_rate`</span> under <span pulumi-lang-nodejs=\"`spotInstances`\" pulumi-lang-dotnet=\"`SpotInstances`\" pulumi-lang-go=\"`spotInstances`\" pulumi-lang-python=\"`spot_instances`\" pulumi-lang-yaml=\"`spotInstances`\" pulumi-lang-java=\"`spotInstances`\">`spot_instances`</span> is deprecated. This field has no direct equivalent in the<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource, and setting it will have no effect."
        },
        "spotBackups": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsSpotInstancesSpotBackups:AutoscalerAutoscalerSettingsSpotInstancesSpotBackups",
          "description": "policy defining whether autoscaler can use spot backups instead of spot instances when spot instances are not available.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`spotBackups`\" pulumi-lang-dotnet=\"`SpotBackups`\" pulumi-lang-go=\"`spotBackups`\" pulumi-lang-python=\"`spot_backups`\" pulumi-lang-yaml=\"`spotBackups`\" pulumi-lang-java=\"`spotBackups`\">`spot_backups`</span> under <span pulumi-lang-nodejs=\"`spotInstances`\" pulumi-lang-dotnet=\"`SpotInstances`\" pulumi-lang-go=\"`spotInstances`\" pulumi-lang-python=\"`spot_instances`\" pulumi-lang-yaml=\"`spotInstances`\" pulumi-lang-java=\"`spotInstances`\">`spot_instances`</span> is deprecated. Configure spot backup behavior using `constraints.use_spot_fallbacks` and `constraints.fallback_restore_rate_seconds` in the default<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource. The default node template has <span pulumi-lang-nodejs=\"`isDefault \" pulumi-lang-dotnet=\"`IsDefault \" pulumi-lang-go=\"`isDefault \" pulumi-lang-python=\"`is_default \" pulumi-lang-yaml=\"`isDefault \" pulumi-lang-java=\"`isDefault \">`is_default </span>= true`."
        },
        "spotDiversityEnabled": {
          "type": "boolean",
          "description": "enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`spotDiversityEnabled`\" pulumi-lang-dotnet=\"`SpotDiversityEnabled`\" pulumi-lang-go=\"`spotDiversityEnabled`\" pulumi-lang-python=\"`spot_diversity_enabled`\" pulumi-lang-yaml=\"`spotDiversityEnabled`\" pulumi-lang-java=\"`spotDiversityEnabled`\">`spot_diversity_enabled`</span> is deprecated. Use the <span pulumi-lang-nodejs=\"`enableSpotDiversity`\" pulumi-lang-dotnet=\"`EnableSpotDiversity`\" pulumi-lang-go=\"`enableSpotDiversity`\" pulumi-lang-python=\"`enable_spot_diversity`\" pulumi-lang-yaml=\"`enableSpotDiversity`\" pulumi-lang-java=\"`enableSpotDiversity`\">`enable_spot_diversity`</span> field within `castai_node_template.constraints` in the default<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource. The default node template has <span pulumi-lang-nodejs=\"`isDefault \" pulumi-lang-dotnet=\"`IsDefault \" pulumi-lang-go=\"`isDefault \" pulumi-lang-python=\"`is_default \" pulumi-lang-yaml=\"`isDefault \" pulumi-lang-java=\"`isDefault \">`is_default </span>= true`."
        },
        "spotDiversityPriceIncreaseLimit": {
          "type": "integer",
          "description": "allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`spotDiversityPriceIncreaseLimit`\" pulumi-lang-dotnet=\"`SpotDiversityPriceIncreaseLimit`\" pulumi-lang-go=\"`spotDiversityPriceIncreaseLimit`\" pulumi-lang-python=\"`spot_diversity_price_increase_limit`\" pulumi-lang-yaml=\"`spotDiversityPriceIncreaseLimit`\" pulumi-lang-java=\"`spotDiversityPriceIncreaseLimit`\">`spot_diversity_price_increase_limit`</span> is deprecated. Use <span pulumi-lang-nodejs=\"`spotDiversityPriceIncreaseLimitPercent`\" pulumi-lang-dotnet=\"`SpotDiversityPriceIncreaseLimitPercent`\" pulumi-lang-go=\"`spotDiversityPriceIncreaseLimitPercent`\" pulumi-lang-python=\"`spot_diversity_price_increase_limit_percent`\" pulumi-lang-yaml=\"`spotDiversityPriceIncreaseLimitPercent`\" pulumi-lang-java=\"`spotDiversityPriceIncreaseLimitPercent`\">`spot_diversity_price_increase_limit_percent`</span> within `castai_node_template.constraints` in the default<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource. The default node template has <span pulumi-lang-nodejs=\"`isDefault \" pulumi-lang-dotnet=\"`IsDefault \" pulumi-lang-go=\"`isDefault \" pulumi-lang-python=\"`is_default \" pulumi-lang-yaml=\"`isDefault \" pulumi-lang-java=\"`isDefault \">`is_default </span>= true`."
        },
        "spotInterruptionPredictions": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsSpotInstancesSpotInterruptionPredictions:AutoscalerAutoscalerSettingsSpotInstancesSpotInterruptionPredictions",
          "description": "configure the handling of SPOT interruption predictions.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`spotInterruptionPredictions`\" pulumi-lang-dotnet=\"`SpotInterruptionPredictions`\" pulumi-lang-go=\"`spotInterruptionPredictions`\" pulumi-lang-python=\"`spot_interruption_predictions`\" pulumi-lang-yaml=\"`spotInterruptionPredictions`\" pulumi-lang-java=\"`spotInterruptionPredictions`\">`spot_interruption_predictions`</span> is deprecated. Use the <span pulumi-lang-nodejs=\"`spotInterruptionPredictionsEnabled`\" pulumi-lang-dotnet=\"`SpotInterruptionPredictionsEnabled`\" pulumi-lang-go=\"`spotInterruptionPredictionsEnabled`\" pulumi-lang-python=\"`spot_interruption_predictions_enabled`\" pulumi-lang-yaml=\"`spotInterruptionPredictionsEnabled`\" pulumi-lang-java=\"`spotInterruptionPredictionsEnabled`\">`spot_interruption_predictions_enabled`</span> and <span pulumi-lang-nodejs=\"`spotInterruptionPredictionsType`\" pulumi-lang-dotnet=\"`SpotInterruptionPredictionsType`\" pulumi-lang-go=\"`spotInterruptionPredictionsType`\" pulumi-lang-python=\"`spot_interruption_predictions_type`\" pulumi-lang-yaml=\"`spotInterruptionPredictionsType`\" pulumi-lang-java=\"`spotInterruptionPredictionsType`\">`spot_interruption_predictions_type`</span> fields in the default<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource. The default node template has <span pulumi-lang-nodejs=\"`isDefault \" pulumi-lang-dotnet=\"`IsDefault \" pulumi-lang-go=\"`isDefault \" pulumi-lang-python=\"`is_default \" pulumi-lang-yaml=\"`isDefault \" pulumi-lang-java=\"`isDefault \">`is_default </span>= true`."
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsSpotInstancesSpotBackups:AutoscalerAutoscalerSettingsSpotInstancesSpotBackups": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "enable/disable spot backups policy.\n"
        },
        "spotBackupRestoreRateSeconds": {
          "type": "integer",
          "description": "defines interval on how often spot backups restore to real spot should occur.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsSpotInstancesSpotInterruptionPredictions:AutoscalerAutoscalerSettingsSpotInstancesSpotInterruptionPredictions": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "enable/disable spot interruption predictions.\n"
        },
        "spotInterruptionPredictionsType": {
          "type": "string",
          "description": "define the type of the spot interruption prediction to handle. Allowed values are AWSRebalanceRecommendations, CASTAIInterruptionPredictions.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsUnschedulablePods:AutoscalerAutoscalerSettingsUnschedulablePods": {
      "properties": {
        "customInstancesEnabled": {
          "type": "boolean",
          "description": "enable/disable custom instances policy.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`customInstancesEnabled`\" pulumi-lang-dotnet=\"`CustomInstancesEnabled`\" pulumi-lang-go=\"`customInstancesEnabled`\" pulumi-lang-python=\"`custom_instances_enabled`\" pulumi-lang-yaml=\"`customInstancesEnabled`\" pulumi-lang-java=\"`customInstancesEnabled`\">`custom_instances_enabled`</span> under `unschedulable_pods.node_constraints` is deprecated. Use the <span pulumi-lang-nodejs=\"`customInstancesEnabled`\" pulumi-lang-dotnet=\"`CustomInstancesEnabled`\" pulumi-lang-go=\"`customInstancesEnabled`\" pulumi-lang-python=\"`custom_instances_enabled`\" pulumi-lang-yaml=\"`customInstancesEnabled`\" pulumi-lang-java=\"`customInstancesEnabled`\">`custom_instances_enabled`</span> field in the default<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource instead. The default node template has <span pulumi-lang-nodejs=\"`isDefault \" pulumi-lang-dotnet=\"`IsDefault \" pulumi-lang-go=\"`isDefault \" pulumi-lang-python=\"`is_default \" pulumi-lang-yaml=\"`isDefault \" pulumi-lang-java=\"`isDefault \">`is_default </span>= true`."
        },
        "enabled": {
          "type": "boolean",
          "description": "enable/disable unschedulable pods detection policy.\n"
        },
        "headroom": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsUnschedulablePodsHeadroom:AutoscalerAutoscalerSettingsUnschedulablePodsHeadroom",
          "description": "additional headroom based on cluster's total available capacity for on-demand nodes.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`headroom`\" pulumi-lang-dotnet=\"`Headroom`\" pulumi-lang-go=\"`headroom`\" pulumi-lang-python=\"`headroom`\" pulumi-lang-yaml=\"`headroom`\" pulumi-lang-java=\"`headroom`\">`headroom`</span> is deprecated. Please refer to the FAQ for guidance on cluster headroom: https://docs.cast.ai/docs/autoscaler-1#can-you-please-share-some-guidance-on-cluster-headroom-i-would-like-to-add-some-buffer-room-so-that-pods-have-a-place-to-run-when-nodes-go-down"
        },
        "headroomSpot": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsUnschedulablePodsHeadroomSpot:AutoscalerAutoscalerSettingsUnschedulablePodsHeadroomSpot",
          "description": "additional headroom based on cluster's total available capacity for spot nodes.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`headroomSpot`\" pulumi-lang-dotnet=\"`HeadroomSpot`\" pulumi-lang-go=\"`headroomSpot`\" pulumi-lang-python=\"`headroom_spot`\" pulumi-lang-yaml=\"`headroomSpot`\" pulumi-lang-java=\"`headroomSpot`\">`headroom_spot`</span> is deprecated. Please refer to the FAQ for guidance on cluster headroom: https://docs.cast.ai/docs/autoscaler-1#can-you-please-share-some-guidance-on-cluster-headroom-i-would-like-to-add-some-buffer-room-so-that-pods-have-a-place-to-run-when-nodes-go-down"
        },
        "nodeConstraints": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsUnschedulablePodsNodeConstraints:AutoscalerAutoscalerSettingsUnschedulablePodsNodeConstraints",
          "description": "defines the node constraints that will be applied when autoscaling with Unschedulable Pods policy.\n",
          "deprecationMessage": "<span pulumi-lang-nodejs=\"`nodeConstraints`\" pulumi-lang-dotnet=\"`NodeConstraints`\" pulumi-lang-go=\"`nodeConstraints`\" pulumi-lang-python=\"`node_constraints`\" pulumi-lang-yaml=\"`nodeConstraints`\" pulumi-lang-java=\"`nodeConstraints`\">`node_constraints`</span> under <span pulumi-lang-nodejs=\"`unschedulablePods`\" pulumi-lang-dotnet=\"`UnschedulablePods`\" pulumi-lang-go=\"`unschedulablePods`\" pulumi-lang-python=\"`unschedulable_pods`\" pulumi-lang-yaml=\"`unschedulablePods`\" pulumi-lang-java=\"`unschedulablePods`\">`unschedulable_pods`</span> is deprecated. Use the <span pulumi-lang-nodejs=\"`constraints`\" pulumi-lang-dotnet=\"`Constraints`\" pulumi-lang-go=\"`constraints`\" pulumi-lang-python=\"`constraints`\" pulumi-lang-yaml=\"`constraints`\" pulumi-lang-java=\"`constraints`\">`constraints`</span> field in the default<span pulumi-lang-nodejs=\" castai.config.NodeTemplate \" pulumi-lang-dotnet=\" castai.config.NodeTemplate \" pulumi-lang-go=\" config.NodeTemplate \" pulumi-lang-python=\" config.NodeTemplate \" pulumi-lang-yaml=\" castai.config.NodeTemplate \" pulumi-lang-java=\" castai.config.NodeTemplate \"> castai.config.NodeTemplate </span>resource instead. The default node template has <span pulumi-lang-nodejs=\"`isDefault \" pulumi-lang-dotnet=\"`IsDefault \" pulumi-lang-go=\"`isDefault \" pulumi-lang-python=\"`is_default \" pulumi-lang-yaml=\"`isDefault \" pulumi-lang-java=\"`isDefault \">`is_default </span>= true`."
        },
        "podPinner": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettingsUnschedulablePodsPodPinner:AutoscalerAutoscalerSettingsUnschedulablePodsPodPinner",
          "description": "defines the Cast AI Pod Pinner components settings.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsUnschedulablePodsHeadroom:AutoscalerAutoscalerSettingsUnschedulablePodsHeadroom": {
      "properties": {
        "cpuPercentage": {
          "type": "integer",
          "description": "defines percentage of additional CPU capacity to be added.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "enable/disable headroom policy.\n"
        },
        "memoryPercentage": {
          "type": "integer",
          "description": "defines percentage of additional memory capacity to be added.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsUnschedulablePodsHeadroomSpot:AutoscalerAutoscalerSettingsUnschedulablePodsHeadroomSpot": {
      "properties": {
        "cpuPercentage": {
          "type": "integer",
          "description": "defines percentage of additional CPU capacity to be added.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "enable/disable<span pulumi-lang-nodejs=\" headroomSpot \" pulumi-lang-dotnet=\" HeadroomSpot \" pulumi-lang-go=\" headroomSpot \" pulumi-lang-python=\" headroom_spot \" pulumi-lang-yaml=\" headroomSpot \" pulumi-lang-java=\" headroomSpot \"> headroom_spot </span>policy.\n"
        },
        "memoryPercentage": {
          "type": "integer",
          "description": "defines percentage of additional memory capacity to be added.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsUnschedulablePodsNodeConstraints:AutoscalerAutoscalerSettingsUnschedulablePodsNodeConstraints": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "enable/disable node constraints policy.\n"
        },
        "maxCpuCores": {
          "type": "integer",
          "description": "defines max CPU cores for the node to pick.\n"
        },
        "maxRamMib": {
          "type": "integer",
          "description": "defines max RAM in MiB for the node to pick.\n"
        },
        "minCpuCores": {
          "type": "integer",
          "description": "defines min CPU cores for the node to pick.\n"
        },
        "minRamMib": {
          "type": "integer",
          "description": "defines min RAM in MiB for the node to pick.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/AutoscalerAutoscalerSettingsUnschedulablePodsPodPinner:AutoscalerAutoscalerSettingsUnschedulablePodsPodPinner": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "enable/disable the Pod Pinner component's automatic management in your cluster. Default: enabled.\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/EvictorAdvancedConfigEvictorAdvancedConfig:EvictorAdvancedConfigEvictorAdvancedConfig": {
      "properties": {
        "aggressive": {
          "type": "boolean",
          "description": "Apply Aggressive mode to Evictor\n"
        },
        "disposable": {
          "type": "boolean",
          "description": "Mark node as disposable\n"
        },
        "nodeSelectors": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:autoscaling%2FEvictorAdvancedConfigEvictorAdvancedConfigNodeSelector:EvictorAdvancedConfigEvictorAdvancedConfigNodeSelector"
          },
          "description": "node selector\n"
        },
        "podSelectors": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:autoscaling%2FEvictorAdvancedConfigEvictorAdvancedConfigPodSelector:EvictorAdvancedConfigEvictorAdvancedConfigPodSelector"
          },
          "description": "pod selector\n"
        },
        "removalDisabled": {
          "type": "boolean",
          "description": "Mark pods as removal disabled\n"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/EvictorAdvancedConfigEvictorAdvancedConfigNodeSelector:EvictorAdvancedConfigEvictorAdvancedConfigNodeSelector": {
      "properties": {
        "matchExpressions": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:autoscaling%2FEvictorAdvancedConfigEvictorAdvancedConfigNodeSelectorMatchExpression:EvictorAdvancedConfigEvictorAdvancedConfigNodeSelectorMatchExpression"
          }
        },
        "matchLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "castai:autoscaling/EvictorAdvancedConfigEvictorAdvancedConfigNodeSelectorMatchExpression:EvictorAdvancedConfigEvictorAdvancedConfigNodeSelectorMatchExpression": {
      "properties": {
        "key": {
          "type": "string"
        },
        "operator": {
          "type": "string"
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator"
      ]
    },
    "castai:autoscaling/EvictorAdvancedConfigEvictorAdvancedConfigPodSelector:EvictorAdvancedConfigEvictorAdvancedConfigPodSelector": {
      "properties": {
        "kind": {
          "type": "string"
        },
        "matchExpressions": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:autoscaling%2FEvictorAdvancedConfigEvictorAdvancedConfigPodSelectorMatchExpression:EvictorAdvancedConfigEvictorAdvancedConfigPodSelectorMatchExpression"
          }
        },
        "matchLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "namespace": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "castai:autoscaling/EvictorAdvancedConfigEvictorAdvancedConfigPodSelectorMatchExpression:EvictorAdvancedConfigEvictorAdvancedConfigPodSelectorMatchExpression": {
      "properties": {
        "key": {
          "type": "string"
        },
        "operator": {
          "type": "string"
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator"
      ]
    },
    "castai:azure/AksClusterHttpProxyConfig:AksClusterHttpProxyConfig": {
      "properties": {
        "httpProxy": {
          "type": "string",
          "description": "Address to use for proxying HTTP requests.\n"
        },
        "httpsProxy": {
          "type": "string",
          "description": "Address to use for proxying HTTPS/TLS requests.\n"
        },
        "noProxies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of destinations that should not go through proxy.\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeConfigurationAks:NodeConfigurationAks": {
      "properties": {
        "aksImageFamily": {
          "type": "string",
          "description": "Image OS Family to use when provisioning node in AKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (ubuntu,azure-linux,windows2019,windows2022)\n"
        },
        "applicationSecurityGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Application security groups to be used for provisioned nodes\n"
        },
        "ephemeralOsDisk": {
          "$ref": "#/types/castai:config%2FNodeConfigurationAksEphemeralOsDisk:NodeConfigurationAksEphemeralOsDisk",
          "description": "Ephemeral OS disk configuration for CAST provisioned nodes\n"
        },
        "loadbalancers": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeConfigurationAksLoadbalancer:NodeConfigurationAksLoadbalancer"
          },
          "description": "Load balancer configuration for CAST provisioned nodes\n"
        },
        "maxPodsPerNode": {
          "type": "integer",
          "description": "Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 30\n"
        },
        "networkSecurityGroup": {
          "type": "string",
          "description": "Network security group to be used for provisioned nodes, if not provided default security group from <span pulumi-lang-nodejs=\"`castpool`\" pulumi-lang-dotnet=\"`Castpool`\" pulumi-lang-go=\"`castpool`\" pulumi-lang-python=\"`castpool`\" pulumi-lang-yaml=\"`castpool`\" pulumi-lang-java=\"`castpool`\">`castpool`</span> will be used\n"
        },
        "osDiskType": {
          "type": "string",
          "description": "Type of managed os disk attached to the node. (See [disk types](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types)). One of: standard, standard-ssd, premium-ssd (ultra and premium-ssd-v2 are not supported for os disk)\n"
        },
        "podSubnetId": {
          "type": "string",
          "description": "ID of pod subnet to be used for provisioned nodes.\n"
        },
        "publicIp": {
          "$ref": "#/types/castai:config%2FNodeConfigurationAksPublicIp:NodeConfigurationAksPublicIp",
          "description": "Public IP configuration for CAST AI provisioned nodes\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeConfigurationAksEphemeralOsDisk:NodeConfigurationAksEphemeralOsDisk": {
      "properties": {
        "cache": {
          "type": "string",
          "description": "Cache type for the ephemeral OS disk. One of: ReadOnly, ReadWrite\n"
        },
        "placement": {
          "type": "string",
          "description": "Placement of the ephemeral OS disk. One of: cacheDisk, resourceDisk\n"
        }
      },
      "type": "object",
      "required": [
        "placement"
      ]
    },
    "castai:config/NodeConfigurationAksLoadbalancer:NodeConfigurationAksLoadbalancer": {
      "properties": {
        "id": {
          "type": "string",
          "description": "The full ID of the load balancer in azure.\n"
        },
        "ipBasedBackendPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeConfigurationAksLoadbalancerIpBasedBackendPool:NodeConfigurationAksLoadbalancerIpBasedBackendPool"
          },
          "description": "IP based backend pools configuration for CAST provisioned nodes\n"
        },
        "name": {
          "type": "string",
          "description": "Name of load balancer\n",
          "deprecationMessage": "name field is deprecated, use ID instead. Will be removed in future versions."
        },
        "nicBasedBackendPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeConfigurationAksLoadbalancerNicBasedBackendPool:NodeConfigurationAksLoadbalancerNicBasedBackendPool"
          },
          "description": "NIC based backend pools configuration for CAST provisioned nodes.\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeConfigurationAksLoadbalancerIpBasedBackendPool:NodeConfigurationAksLoadbalancerIpBasedBackendPool": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the ip based backend pool\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "castai:config/NodeConfigurationAksLoadbalancerNicBasedBackendPool:NodeConfigurationAksLoadbalancerNicBasedBackendPool": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the NIC based backend pool\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "castai:config/NodeConfigurationAksPublicIp:NodeConfigurationAksPublicIp": {
      "properties": {
        "idleTimeoutInMinutes": {
          "type": "integer",
          "description": "Idle timeout in minutes for public IP\n"
        },
        "publicIpPrefix": {
          "type": "string",
          "description": "Public IP prefix to be used for provisioned nodes\n"
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object"
    },
    "castai:config/NodeConfigurationEks:NodeConfigurationEks": {
      "properties": {
        "dnsClusterIp": {
          "type": "string",
          "description": "IP address to use for DNS queries within the cluster\n"
        },
        "eksImageFamily": {
          "type": "string",
          "description": "Image OS Family to use when provisioning node in EKS. If both image and family are provided, the system will use provided image and provisioning logic for given family. If only image family is provided, the system will attempt to resolve the latest image from that family based on kubernetes version and node architecture. If image family is omitted, a default family (based on cloud provider) will be used. See Cast.ai documentation for details. Possible values: (al2,al2023,bottlerocket)\n"
        },
        "imdsHopLimit": {
          "type": "integer",
          "description": "Allow configure the IMDSv2 hop limit, the default is 2\n"
        },
        "imdsV1": {
          "type": "boolean",
          "description": "When the value is true both IMDSv1 and IMDSv2 are enabled. Setting the value to false disables permanently IMDSv1 and might affect legacy workloads running on the node created with this configuration. The default is true if the flag isn't provided\n"
        },
        "instanceProfileArn": {
          "type": "string",
          "description": "Cluster's instance profile ARN used for CAST provisioned nodes\n"
        },
        "ipsPerPrefix": {
          "type": "integer",
          "description": "Number of IPs per prefix to be used for calculating max pods.\n"
        },
        "keyPairId": {
          "type": "string",
          "description": "AWS key pair ID to be used for CAST provisioned nodes. Has priority over ssh_public_key\n"
        },
        "maxPodsPerNodeFormula": {
          "type": "string",
          "description": "Formula to calculate the maximum number of pods that can be run on a node. The following list of variables will be bound to a number before evaluating and can be used in the formula: NUM_MAX_NET_INTERFACES, NUM_IP_PER_INTERFACE, NUM_IP_PER_PREFIX, NUM_CPU, NUM_RAM_GB .\n"
        },
        "nodeGroupArn": {
          "type": "string",
          "description": "Cluster's node group ARN used for CAST provisioned node pools. Required for hibernate/resume functionality\n"
        },
        "securityGroups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Cluster's security groups configuration for CAST provisioned nodes\n"
        },
        "targetGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeConfigurationEksTargetGroup:NodeConfigurationEksTargetGroup"
          },
          "description": "AWS target groups configuration for CAST provisioned nodes\n"
        },
        "threadsPerCpu": {
          "type": "integer",
          "description": "Number of threads per core.\n"
        },
        "volumeIops": {
          "type": "integer",
          "description": "AWS EBS volume IOPS to be used for CAST provisioned nodes\n"
        },
        "volumeKmsKeyArn": {
          "type": "string",
          "description": "AWS KMS key ARN for encrypting EBS volume attached to the node\n"
        },
        "volumeThroughput": {
          "type": "integer",
          "description": "AWS EBS volume throughput in MiB/s to be used for CAST provisioned nodes\n"
        },
        "volumeType": {
          "type": "string",
          "description": "AWS EBS volume type to be used for CAST provisioned nodes. One of: gp3, gp2, io1, io2\n"
        }
      },
      "type": "object",
      "required": [
        "instanceProfileArn",
        "securityGroups"
      ]
    },
    "castai:config/NodeConfigurationEksTargetGroup:NodeConfigurationEksTargetGroup": {
      "properties": {
        "arn": {
          "type": "string",
          "description": "AWS target group ARN for CAST provisioned nodes\n"
        },
        "port": {
          "type": "integer",
          "description": "Port for AWS target group for CAST provisioned nodes\n"
        }
      },
      "type": "object",
      "required": [
        "arn"
      ]
    },
    "castai:config/NodeConfigurationGke:NodeConfigurationGke": {
      "properties": {
        "diskType": {
          "type": "string",
          "description": "Type of boot disk attached to the node. (See [disk types](https://cloud.google.com/compute/docs/disks#pdspecs)). One of: pd-standard, pd-balanced, pd-ssd, pd-extreme\n"
        },
        "loadbalancers": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeConfigurationGkeLoadbalancer:NodeConfigurationGkeLoadbalancer"
          },
          "description": "Loadboalancer configuration for CAST provisioned nodes\n"
        },
        "maxPodsPerNode": {
          "type": "integer",
          "description": "Maximum number of pods that can be run on a node, which affects how many IP addresses you will need for each node. Defaults to 110\n"
        },
        "maxPodsPerNodeFormula": {
          "type": "string",
          "description": "This is an advanced configuration field. In general, we recommend using<span pulumi-lang-nodejs=\" maxPodsPerNode \" pulumi-lang-dotnet=\" MaxPodsPerNode \" pulumi-lang-go=\" maxPodsPerNode \" pulumi-lang-python=\" max_pods_per_node \" pulumi-lang-yaml=\" maxPodsPerNode \" pulumi-lang-java=\" maxPodsPerNode \"> max_pods_per_node </span>instead.\nThis field accepts a formula to calculate the maximum number of pods that can run on a node. This will affect the pod CIDR range that the node reserves. The following variables are available for use in the formula and will be bound to numeric values before evaluation:\n\n    * NUM_CPU - Number of CPUs available on the node\n    * NUM_RAM_GB - Amount of RAM in gigabytes available on the node.\n\nIf you want the smallest value between 5 times the CPUs, 5 times the RAM, or a cap of 110, your formula would be math.least(110, 5 \\* NUM_CPU, 5 \\* NUM_RAM_GB).\nFor a node with 8 CPUs and 16 GB RAM, this calculates to 40 (5×8), 80 (5×16), and 110, then picks the smallest value: 40 pods.\n"
        },
        "networkTags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Network tags to be added on a VM. (See [network tags](https://cloud.google.com/vpc/docs/add-remove-network-tags))\n"
        },
        "onHostMaintenance": {
          "type": "string",
          "description": "Maintenance behavior of the instances. If not set, the default value for spot nodes is terminate, and for non-spot nodes, it is migrate.\n"
        },
        "secondaryIpRange": {
          "$ref": "#/types/castai:config%2FNodeConfigurationGkeSecondaryIpRange:NodeConfigurationGkeSecondaryIpRange",
          "description": "Secondary IP range configuration for pods in GKE nodes\n"
        },
        "useEphemeralStorageLocalSsd": {
          "type": "boolean",
          "description": "Use ephemeral storage local SSD. Defaults to false\n"
        },
        "zones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of preferred availability zones to choose from when provisioning new nodes.\n",
          "deprecationMessage": "The argument will be moved into node template."
        }
      },
      "type": "object"
    },
    "castai:config/NodeConfigurationGkeLoadbalancer:NodeConfigurationGkeLoadbalancer": {
      "properties": {
        "targetBackendPools": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeConfigurationGkeLoadbalancerTargetBackendPool:NodeConfigurationGkeLoadbalancerTargetBackendPool"
          },
          "description": "Target backend pools configuration for CAST provisioned nodes\n"
        },
        "unmanagedInstanceGroups": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeConfigurationGkeLoadbalancerUnmanagedInstanceGroup:NodeConfigurationGkeLoadbalancerUnmanagedInstanceGroup"
          },
          "description": "Unmanaged instance groups configuration for CAST provisioned nodes\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeConfigurationGkeLoadbalancerTargetBackendPool:NodeConfigurationGkeLoadbalancerTargetBackendPool": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the target group\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "castai:config/NodeConfigurationGkeLoadbalancerUnmanagedInstanceGroup:NodeConfigurationGkeLoadbalancerUnmanagedInstanceGroup": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the instance group\n"
        },
        "zone": {
          "type": "string",
          "description": "Zone of the instance group\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "zone"
      ]
    },
    "castai:config/NodeConfigurationGkeSecondaryIpRange:NodeConfigurationGkeSecondaryIpRange": {
      "properties": {
        "rangeName": {
          "type": "string",
          "description": "Name of the secondary IP range\n"
        }
      },
      "type": "object",
      "required": [
        "rangeName"
      ]
    },
    "castai:config/NodeConfigurationKops:NodeConfigurationKops": {
      "properties": {
        "keyPairId": {
          "type": "string",
          "description": "AWS key pair ID to be used for provisioned nodes. Has priority over sshPublicKey\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeTemplateConstraints:NodeTemplateConstraints": {
      "properties": {
        "architecturePriorities": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Priority ordering of architectures, specifying no priority will pick cheapest. Allowed values: amd64, arm64.\n"
        },
        "architectures": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of acceptable instance CPU architectures, the default is amd64. Allowed values: amd64, arm64.\n"
        },
        "azs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The list of AZ names to consider for the node template, if empty or not set all AZs are considered.\n"
        },
        "bareMetal": {
          "type": "string",
          "description": "Bare metal constraint, will only pick bare metal nodes if set to true. Will only pick non-bare metal nodes if false. Defaults to unspecified. Allowed values: true, false, unspecified.\n"
        },
        "burstableInstances": {
          "type": "string",
          "description": "Will include burstable instances when enabled otherwise they will be excluded. Supported values: <span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span>, <span pulumi-lang-nodejs=\"`disabled`\" pulumi-lang-dotnet=\"`Disabled`\" pulumi-lang-go=\"`disabled`\" pulumi-lang-python=\"`disabled`\" pulumi-lang-yaml=\"`disabled`\" pulumi-lang-java=\"`disabled`\">`disabled`</span> or ``.\n"
        },
        "computeOptimized": {
          "type": "boolean",
          "description": "Compute optimized instance constraint (deprecated).\n"
        },
        "computeOptimizedState": {
          "type": "string",
          "description": "Will only include compute optimized nodes when enabled and exclude compute optimized nodes when disabled. Empty value won't have effect on instances filter. Supported values: <span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span>, <span pulumi-lang-nodejs=\"`disabled`\" pulumi-lang-dotnet=\"`Disabled`\" pulumi-lang-go=\"`disabled`\" pulumi-lang-python=\"`disabled`\" pulumi-lang-yaml=\"`disabled`\" pulumi-lang-java=\"`disabled`\">`disabled`</span> or empty string.\n"
        },
        "cpuManufacturers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of acceptable CPU manufacturers. Allowed values: AMD, AMPERE, APPLE, AWS, INTEL.\n"
        },
        "customPriorities": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeTemplateConstraintsCustomPriority:NodeTemplateConstraintsCustomPriority"
          }
        },
        "customerSpecific": {
          "type": "string",
          "description": "Will include customer specific (preview) instances when enabled otherwise they will be excluded. Supported values: <span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span>, <span pulumi-lang-nodejs=\"`disabled`\" pulumi-lang-dotnet=\"`Disabled`\" pulumi-lang-go=\"`disabled`\" pulumi-lang-python=\"`disabled`\" pulumi-lang-yaml=\"`disabled`\" pulumi-lang-java=\"`disabled`\">`disabled`</span> or ``.\n"
        },
        "dedicatedNodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeTemplateConstraintsDedicatedNodeAffinity:NodeTemplateConstraintsDedicatedNodeAffinity"
          },
          "description": "Dedicated node affinity - creates preference for instances to be created on sole tenancy or dedicated nodes. This\n feature is only available for GCP clusters and sole tenancy nodes with local\n SSDs or GPUs are not supported. If the sole tenancy or dedicated nodes don't have capacity for selected instance\n type, the Autoscaler will fall back to multi-tenant instance types available for this Node Template.\n Other instance constraints are applied when the Autoscaler picks available instance types that can be created on\n the sole tenancy or dedicated node (example: setting min CPU to 16).\n"
        },
        "enableSpotDiversity": {
          "type": "boolean",
          "description": "Enable/disable spot diversity policy. When enabled, autoscaler will try to balance between diverse and cost optimal instance types.\n"
        },
        "fallbackRestoreRateSeconds": {
          "type": "integer",
          "description": "Fallback restore rate in seconds: defines how much time should pass before spot fallback should be attempted to be restored to real spot.\n"
        },
        "gpu": {
          "$ref": "#/types/castai:config%2FNodeTemplateConstraintsGpu:NodeTemplateConstraintsGpu"
        },
        "instanceFamilies": {
          "$ref": "#/types/castai:config%2FNodeTemplateConstraintsInstanceFamilies:NodeTemplateConstraintsInstanceFamilies"
        },
        "isGpuOnly": {
          "type": "boolean",
          "description": "GPU instance constraint - will only pick nodes with GPU if true\n"
        },
        "maxCpu": {
          "type": "integer",
          "description": "Max CPU cores per node.\n"
        },
        "maxMemory": {
          "type": "integer",
          "description": "Max Memory (Mib) per node.\n"
        },
        "minCpu": {
          "type": "integer",
          "description": "Min CPU cores per node.\n"
        },
        "minMemory": {
          "type": "integer",
          "description": "Min Memory (Mib) per node.\n"
        },
        "onDemand": {
          "type": "boolean",
          "description": "Should include on-demand instances in the considered pool.\n"
        },
        "os": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of acceptable instance Operating Systems, the default is linux. Allowed values: linux, windows.\n"
        },
        "resourceLimits": {
          "$ref": "#/types/castai:config%2FNodeTemplateConstraintsResourceLimits:NodeTemplateConstraintsResourceLimits"
        },
        "spot": {
          "type": "boolean",
          "description": "Should include spot instances in the considered pool.\n"
        },
        "spotDiversityPriceIncreaseLimitPercent": {
          "type": "integer",
          "description": "Allowed node configuration price increase when diversifying instance types. E.g. if the value is 10%, then the overall price of diversified instance types can be 10% higher than the price of the optimal configuration.\n"
        },
        "spotInterruptionPredictionsEnabled": {
          "type": "boolean",
          "description": "Enable/disable spot interruption predictions.\n"
        },
        "spotInterruptionPredictionsType": {
          "type": "string",
          "description": "Spot interruption predictions type. Can be either \"aws-rebalance-recommendations\" or \"interruption-predictions\".\n"
        },
        "spotReliabilityEnabled": {
          "type": "boolean",
          "description": "Enable/disable spot reliability. When enabled, autoscaler will create instances with highest reliability score within price increase threshold.\n"
        },
        "spotReliabilityPriceIncreaseLimitPercent": {
          "type": "integer",
          "description": "Allowed node price increase when using spot reliability on ordering the instance types . E.g. if the value is 10%, then the overall price of instance types can be 10% higher than the price of the optimal configuration.\n"
        },
        "storageOptimized": {
          "type": "boolean",
          "description": "Storage optimized instance constraint (deprecated).\n"
        },
        "storageOptimizedState": {
          "type": "string",
          "description": "Storage optimized instance constraint - will only pick storage optimized nodes if enabled and won't pick if disabled. Empty value will have no effect. Supported values: <span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span>, <span pulumi-lang-nodejs=\"`disabled`\" pulumi-lang-dotnet=\"`Disabled`\" pulumi-lang-go=\"`disabled`\" pulumi-lang-python=\"`disabled`\" pulumi-lang-yaml=\"`disabled`\" pulumi-lang-java=\"`disabled`\">`disabled`</span> or empty string.\n"
        },
        "useSpotFallbacks": {
          "type": "boolean",
          "description": "Spot instance fallback constraint - when true, on-demand instances will be created, when spots are unavailable.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "architecturePriorities",
            "architectures",
            "onDemand",
            "os"
          ]
        }
      }
    },
    "castai:config/NodeTemplateConstraintsCustomPriority:NodeTemplateConstraintsCustomPriority": {
      "properties": {
        "instanceFamilies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Instance families to prioritize in this tier.\n"
        },
        "onDemand": {
          "type": "boolean",
          "description": "If true, this tier will apply to on-demand instances.\n"
        },
        "spot": {
          "type": "boolean",
          "description": "If true, this tier will apply to spot instances.\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeTemplateConstraintsDedicatedNodeAffinity:NodeTemplateConstraintsDedicatedNodeAffinity": {
      "properties": {
        "affinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeTemplateConstraintsDedicatedNodeAffinityAffinity:NodeTemplateConstraintsDedicatedNodeAffinityAffinity"
          }
        },
        "azName": {
          "type": "string",
          "description": "Availability zone name.\n"
        },
        "instanceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Instance/node types in this node group.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of node group.\n"
        }
      },
      "type": "object",
      "required": [
        "azName",
        "instanceTypes",
        "name"
      ]
    },
    "castai:config/NodeTemplateConstraintsDedicatedNodeAffinityAffinity:NodeTemplateConstraintsDedicatedNodeAffinityAffinity": {
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the node affinity selector.\n"
        },
        "operator": {
          "type": "string",
          "description": "Operator of the node affinity selector. Allowed values: In, NotIn, Exists, DoesNotExist, Gt, Lt.\n"
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Values of the node affinity selector.\n"
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "castai:config/NodeTemplateConstraintsGpu:NodeTemplateConstraintsGpu": {
      "properties": {
        "excludeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Names of the GPUs to exclude.\n"
        },
        "includeNames": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Instance families to include when filtering (excludes all other families).\n"
        },
        "manufacturers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Manufacturers of the gpus to select - NVIDIA, AMD.\n"
        },
        "maxCount": {
          "type": "integer",
          "description": "Max GPU count for the instance type to have.\n"
        },
        "minCount": {
          "type": "integer",
          "description": "Min GPU count for the instance type to have.\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeTemplateConstraintsInstanceFamilies:NodeTemplateConstraintsInstanceFamilies": {
      "properties": {
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Instance families to exclude when filtering (includes all other families).\n"
        },
        "includes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Instance families to include when filtering (excludes all other families).\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeTemplateConstraintsResourceLimits:NodeTemplateConstraintsResourceLimits": {
      "properties": {
        "cpuLimitEnabled": {
          "type": "boolean",
          "description": "Controls CPU limit enforcement for the node template.\n"
        },
        "cpuLimitMaxCores": {
          "type": "integer",
          "description": "Specifies the maximum number of CPU cores that the nodes provisioned from this template can collectively have.\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeTemplateCustomTaint:NodeTemplateCustomTaint": {
      "properties": {
        "effect": {
          "type": "string",
          "description": "Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute.\n"
        },
        "key": {
          "type": "string",
          "description": "Key of a taint to be added to nodes created from this template.\n"
        },
        "value": {
          "type": "string",
          "description": "Value of a taint to be added to nodes created from this template.\n"
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "castai:config/NodeTemplateGpu:NodeTemplateGpu": {
      "properties": {
        "defaultSharedClientsPerGpu": {
          "type": "integer",
          "description": "Defines default number of shared clients per GPU.\n"
        },
        "enableTimeSharing": {
          "type": "boolean",
          "description": "Enable/disable GPU time-sharing.\n"
        },
        "sharingConfigurations": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeTemplateGpuSharingConfiguration:NodeTemplateGpuSharingConfiguration"
          },
          "description": "Defines GPU sharing configurations for GPU devices.\n"
        }
      },
      "type": "object"
    },
    "castai:config/NodeTemplateGpuSharingConfiguration:NodeTemplateGpuSharingConfiguration": {
      "properties": {
        "gpuName": {
          "type": "string",
          "description": "GPU name.\n"
        },
        "sharedClientsPerGpu": {
          "type": "integer",
          "description": "Defines number of shared clients for specific GPU device.\n"
        }
      },
      "type": "object",
      "required": [
        "gpuName",
        "sharedClientsPerGpu"
      ]
    },
    "castai:iam/EnterpriseRoleBindingScopes:EnterpriseRoleBindingScopes": {
      "properties": {
        "clusters": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingScopesCluster:EnterpriseRoleBindingScopesCluster"
          },
          "description": "Cluster scopes.\n"
        },
        "organizations": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingScopesOrganization:EnterpriseRoleBindingScopesOrganization"
          },
          "description": "Organization scopes.\n"
        }
      },
      "type": "object"
    },
    "castai:iam/EnterpriseRoleBindingScopesCluster:EnterpriseRoleBindingScopesCluster": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Cluster ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "castai:iam/EnterpriseRoleBindingScopesOrganization:EnterpriseRoleBindingScopesOrganization": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Organization ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "castai:iam/EnterpriseRoleBindingSubjects:EnterpriseRoleBindingSubjects": {
      "properties": {
        "groups": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingSubjectsGroup:EnterpriseRoleBindingSubjectsGroup"
          },
          "description": "Group subjects.\n"
        },
        "serviceAccounts": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingSubjectsServiceAccount:EnterpriseRoleBindingSubjectsServiceAccount"
          },
          "description": "Service account subjects.\n"
        },
        "users": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingSubjectsUser:EnterpriseRoleBindingSubjectsUser"
          },
          "description": "User subjects.\n"
        }
      },
      "type": "object"
    },
    "castai:iam/EnterpriseRoleBindingSubjectsGroup:EnterpriseRoleBindingSubjectsGroup": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Group ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "castai:iam/EnterpriseRoleBindingSubjectsServiceAccount:EnterpriseRoleBindingSubjectsServiceAccount": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Service account ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "castai:iam/EnterpriseRoleBindingSubjectsUser:EnterpriseRoleBindingSubjectsUser": {
      "properties": {
        "id": {
          "type": "string",
          "description": "User ID.\n"
        }
      },
      "type": "object",
      "required": [
        "id"
      ]
    },
    "castai:iam/RoleBindingsScope:RoleBindingsScope": {
      "properties": {
        "kind": {
          "type": "string",
          "description": "Scope of the role binding Supported values include: organization, cluster.\n"
        },
        "resourceId": {
          "type": "string",
          "description": "ID of the scope resource.\n"
        }
      },
      "type": "object",
      "required": [
        "kind",
        "resourceId"
      ]
    },
    "castai:iam/RoleBindingsSubject:RoleBindingsSubject": {
      "properties": {
        "subjects": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FRoleBindingsSubjectSubject:RoleBindingsSubjectSubject"
          }
        }
      },
      "type": "object"
    },
    "castai:iam/RoleBindingsSubjectSubject:RoleBindingsSubjectSubject": {
      "properties": {
        "groupId": {
          "type": "string",
          "description": "Optional, required only if <span pulumi-lang-nodejs=\"`kind`\" pulumi-lang-dotnet=\"`Kind`\" pulumi-lang-go=\"`kind`\" pulumi-lang-python=\"`kind`\" pulumi-lang-yaml=\"`kind`\" pulumi-lang-java=\"`kind`\">`kind`</span> is <span pulumi-lang-nodejs=\"`group`\" pulumi-lang-dotnet=\"`Group`\" pulumi-lang-go=\"`group`\" pulumi-lang-python=\"`group`\" pulumi-lang-yaml=\"`group`\" pulumi-lang-java=\"`group`\">`group`</span>.\n"
        },
        "kind": {
          "type": "string",
          "description": "Kind of the subject. Supported values include: user, service_account, group.\n"
        },
        "serviceAccountId": {
          "type": "string",
          "description": "Optional, required only if <span pulumi-lang-nodejs=\"`kind`\" pulumi-lang-dotnet=\"`Kind`\" pulumi-lang-go=\"`kind`\" pulumi-lang-python=\"`kind`\" pulumi-lang-yaml=\"`kind`\" pulumi-lang-java=\"`kind`\">`kind`</span> is <span pulumi-lang-nodejs=\"`serviceAccount`\" pulumi-lang-dotnet=\"`ServiceAccount`\" pulumi-lang-go=\"`serviceAccount`\" pulumi-lang-python=\"`service_account`\" pulumi-lang-yaml=\"`serviceAccount`\" pulumi-lang-java=\"`serviceAccount`\">`service_account`</span>.\n"
        },
        "userId": {
          "type": "string",
          "description": "Optional, required only if <span pulumi-lang-nodejs=\"`kind`\" pulumi-lang-dotnet=\"`Kind`\" pulumi-lang-go=\"`kind`\" pulumi-lang-python=\"`kind`\" pulumi-lang-yaml=\"`kind`\" pulumi-lang-java=\"`kind`\">`kind`</span> is <span pulumi-lang-nodejs=\"`user`\" pulumi-lang-dotnet=\"`User`\" pulumi-lang-go=\"`user`\" pulumi-lang-python=\"`user`\" pulumi-lang-yaml=\"`user`\" pulumi-lang-java=\"`user`\">`user`</span>.\n"
        }
      },
      "type": "object",
      "required": [
        "kind"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "groupId",
            "kind",
            "serviceAccountId",
            "userId"
          ]
        }
      }
    },
    "castai:index/CommitmentsAzureReservation:CommitmentsAzureReservation": {
      "properties": {
        "allowedUsage": {
          "type": "number",
          "description": "Allowed usage of the commitment. The value is between 0 (0%) and 1 (100%).\n"
        },
        "assignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:index%2FCommitmentsAzureReservationAssignment:CommitmentsAzureReservationAssignment"
          },
          "description": "List of assigned clusters for the commitment. If prioritization is enabled, the order of the assignments indicates the priority. The first assignment has the highest priority.\n"
        },
        "count": {
          "type": "integer",
          "description": "Number of instances covered by the reservation.\n"
        },
        "endTimestamp": {
          "type": "string",
          "description": "End timestamp of the CUD.\n"
        },
        "id": {
          "type": "string",
          "description": "ID of the commitment in CAST AI.\n"
        },
        "instanceType": {
          "type": "string",
          "description": "Type of the instance covered by the reservation.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the CUD.\n"
        },
        "plan": {
          "type": "string",
          "description": "Plan of the reservation.\n"
        },
        "prioritization": {
          "type": "boolean",
          "description": "If enabled, it's possible to assign priorities to the assigned clusters.\n"
        },
        "region": {
          "type": "string",
          "description": "Region in which the CUD is available.\n"
        },
        "reservationId": {
          "type": "string",
          "description": "ID of the reservation in Azure.\n"
        },
        "reservationStatus": {
          "type": "string",
          "description": "Status of the reservation in Azure.\n"
        },
        "scalingStrategy": {
          "type": "string",
          "description": "Scaling strategy of the commitment in CAST AI. One of: Default, CPUBased, RamBased\n"
        },
        "scope": {
          "type": "string"
        },
        "scopeResourceGroup": {
          "type": "string"
        },
        "scopeSubscription": {
          "type": "string"
        },
        "startTimestamp": {
          "type": "string",
          "description": "Start timestamp of the CUD.\n"
        },
        "status": {
          "type": "string",
          "description": "Status of the commitment in CAST AI.\n"
        }
      },
      "type": "object",
      "required": [
        "count",
        "endTimestamp",
        "instanceType",
        "name",
        "plan",
        "region",
        "reservationId",
        "reservationStatus",
        "scope",
        "scopeResourceGroup",
        "scopeSubscription",
        "startTimestamp"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "allowedUsage",
            "count",
            "endTimestamp",
            "id",
            "instanceType",
            "name",
            "plan",
            "prioritization",
            "region",
            "reservationId",
            "reservationStatus",
            "scope",
            "scopeResourceGroup",
            "scopeSubscription",
            "startTimestamp",
            "status"
          ]
        }
      }
    },
    "castai:index/CommitmentsAzureReservationAssignment:CommitmentsAzureReservationAssignment": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "ID of the cluster to assign the commitment to.\n"
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the assignment. The lower the value, the higher the priority. 1 is the highest priority.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "clusterId",
            "priority"
          ]
        }
      }
    },
    "castai:index/CommitmentsCommitmentConfig:CommitmentsCommitmentConfig": {
      "properties": {
        "allowedUsage": {
          "type": "number",
          "description": "Allowed usage of the commitment. The value is between 0 (0%) and 1 (100%).\n"
        },
        "assignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:index%2FCommitmentsCommitmentConfigAssignment:CommitmentsCommitmentConfigAssignment"
          },
          "description": "List of assigned clusters for the commitment. If prioritization is enabled, the order of the assignments indicates the priority. The first assignment has the highest priority.\n"
        },
        "matcher": {
          "$ref": "#/types/castai:index%2FCommitmentsCommitmentConfigMatcher:CommitmentsCommitmentConfigMatcher",
          "description": "Matcher used to map config to a commitment.\n"
        },
        "prioritization": {
          "type": "boolean",
          "description": "If enabled, it's possible to assign priorities to the assigned clusters.\n"
        },
        "scalingStrategy": {
          "type": "string",
          "description": "Scaling strategy of the commitment in CAST AI. One of: Default, CPUBased, RamBased\n"
        },
        "status": {
          "type": "string",
          "description": "Status of the commitment in CAST AI.\n"
        }
      },
      "type": "object",
      "required": [
        "matcher"
      ]
    },
    "castai:index/CommitmentsCommitmentConfigAssignment:CommitmentsCommitmentConfigAssignment": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "ID of the cluster to assign the commitment to.\n"
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the assignment. The lower the value, the higher the priority. 1 is the highest priority.\n"
        }
      },
      "type": "object",
      "required": [
        "clusterId"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "clusterId",
            "priority"
          ]
        }
      }
    },
    "castai:index/CommitmentsCommitmentConfigMatcher:CommitmentsCommitmentConfigMatcher": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the commitment to match.\n"
        },
        "region": {
          "type": "string",
          "description": "Region of the commitment to match.\n"
        },
        "type": {
          "type": "string",
          "description": "Type of the commitment to match. For compute resources, it's the type of the machine.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "region"
      ]
    },
    "castai:index/CommitmentsGcpCud:CommitmentsGcpCud": {
      "properties": {
        "allowedUsage": {
          "type": "number",
          "description": "Allowed usage of the commitment. The value is between 0 (0%) and 1 (100%).\n"
        },
        "assignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:index%2FCommitmentsGcpCudAssignment:CommitmentsGcpCudAssignment"
          },
          "description": "List of assigned clusters for the commitment. If prioritization is enabled, the order of the assignments indicates the priority. The first assignment has the highest priority.\n"
        },
        "cpu": {
          "type": "integer",
          "description": "Number of CPUs covered by the CUD.\n"
        },
        "cudId": {
          "type": "string",
          "description": "ID of the CUD in GCP.\n"
        },
        "cudStatus": {
          "type": "string",
          "description": "Status of the CUD in GCP.\n"
        },
        "endTimestamp": {
          "type": "string",
          "description": "End timestamp of the CUD.\n"
        },
        "id": {
          "type": "string",
          "description": "ID of the commitment in CAST AI.\n"
        },
        "memoryMb": {
          "type": "integer",
          "description": "Amount of memory in MB covered by the CUD.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the CUD.\n"
        },
        "plan": {
          "type": "string",
          "description": "CUD plan e.g. 'TWELVE_MONTH'.\n"
        },
        "prioritization": {
          "type": "boolean",
          "description": "If enabled, it's possible to assign priorities to the assigned clusters.\n"
        },
        "region": {
          "type": "string",
          "description": "Region in which the CUD is available.\n"
        },
        "scalingStrategy": {
          "type": "string",
          "description": "Scaling strategy of the commitment in CAST AI. One of: Default, CPUBased, RamBased\n"
        },
        "startTimestamp": {
          "type": "string",
          "description": "Start timestamp of the CUD.\n"
        },
        "status": {
          "type": "string",
          "description": "Status of the commitment in CAST AI.\n"
        },
        "type": {
          "type": "string",
          "description": "Type of the CUD, e.g. determines the covered resource type e.g. 'COMPUTE_OPTIMIZED_C2D'.\n"
        }
      },
      "type": "object",
      "required": [
        "cpu",
        "cudId",
        "cudStatus",
        "endTimestamp",
        "memoryMb",
        "name",
        "plan",
        "region",
        "startTimestamp",
        "type"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "allowedUsage",
            "cpu",
            "cudId",
            "cudStatus",
            "endTimestamp",
            "id",
            "memoryMb",
            "name",
            "plan",
            "prioritization",
            "region",
            "startTimestamp",
            "status",
            "type"
          ]
        }
      }
    },
    "castai:index/CommitmentsGcpCudAssignment:CommitmentsGcpCudAssignment": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "ID of the cluster to assign the commitment to.\n"
        },
        "priority": {
          "type": "integer",
          "description": "Priority of the assignment. The lower the value, the higher the priority. 1 is the highest priority.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "clusterId",
            "priority"
          ]
        }
      }
    },
    "castai:index/ReservationsReservation:ReservationsReservation": {
      "properties": {
        "count": {
          "type": "string",
          "description": "amount of reserved instances\n"
        },
        "endDate": {
          "type": "string",
          "description": "end date of reservation\n"
        },
        "instanceType": {
          "type": "string",
          "description": "reserved instance type\n"
        },
        "name": {
          "type": "string",
          "description": "unique reservation name in region for specific instance type\n"
        },
        "price": {
          "type": "string",
          "description": "reservation price\n"
        },
        "provider": {
          "type": "string",
          "description": "reservation cloud provider (gcp, aws, azure)\n"
        },
        "region": {
          "type": "string",
          "description": "reservation region\n"
        },
        "startDate": {
          "type": "string",
          "description": "start date of reservation\n"
        },
        "zoneId": {
          "type": "string",
          "description": "reservation zone id\n"
        },
        "zoneName": {
          "type": "string",
          "description": "reservation zone name\n"
        }
      },
      "type": "object",
      "required": [
        "count",
        "instanceType",
        "name",
        "price",
        "provider",
        "region",
        "startDate"
      ]
    },
    "castai:organization/EnterpriseGroupMember:EnterpriseGroupMember": {
      "properties": {
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FEnterpriseGroupMemberMember:EnterpriseGroupMemberMember"
          },
          "description": "Group member configuration.\n"
        }
      },
      "type": "object"
    },
    "castai:organization/EnterpriseGroupMemberMember:EnterpriseGroupMemberMember": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Member UUID.\n"
        },
        "kind": {
          "type": "string",
          "description": "Kind of the member. Supported values: user, service_account.\n"
        }
      },
      "type": "object",
      "required": [
        "id",
        "kind"
      ]
    },
    "castai:organization/EnterpriseGroupRoleBinding:EnterpriseGroupRoleBinding": {
      "properties": {
        "roleBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FEnterpriseGroupRoleBindingRoleBinding:EnterpriseGroupRoleBindingRoleBinding"
          },
          "description": "Role binding configuration.\n"
        }
      },
      "type": "object"
    },
    "castai:organization/EnterpriseGroupRoleBindingRoleBinding:EnterpriseGroupRoleBindingRoleBinding": {
      "properties": {
        "id": {
          "type": "string",
          "description": "Role binding ID assigned by the API.\n"
        },
        "name": {
          "type": "string",
          "description": "Role binding name.\n"
        },
        "roleId": {
          "type": "string",
          "description": "Role UUID.\n"
        },
        "scopes": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FEnterpriseGroupRoleBindingRoleBindingScope:EnterpriseGroupRoleBindingRoleBindingScope"
          },
          "description": "List of scopes for the role binding.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "roleId",
        "scopes"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "id",
            "name",
            "roleId",
            "scopes"
          ]
        }
      }
    },
    "castai:organization/EnterpriseGroupRoleBindingRoleBindingScope:EnterpriseGroupRoleBindingRoleBindingScope": {
      "properties": {
        "scopes": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FEnterpriseGroupRoleBindingRoleBindingScopeScope:EnterpriseGroupRoleBindingRoleBindingScopeScope"
          },
          "description": "Scope configuration.\n"
        }
      },
      "type": "object"
    },
    "castai:organization/EnterpriseGroupRoleBindingRoleBindingScopeScope:EnterpriseGroupRoleBindingRoleBindingScopeScope": {
      "properties": {
        "cluster": {
          "type": "string",
          "description": "Cluster ID scope.\n"
        },
        "organization": {
          "type": "string",
          "description": "Organization ID scope.\n"
        }
      },
      "type": "object"
    },
    "castai:organization/OrganizationGroupMember:OrganizationGroupMember": {
      "properties": {
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FOrganizationGroupMemberMember:OrganizationGroupMemberMember"
          }
        }
      },
      "type": "object"
    },
    "castai:organization/OrganizationGroupMemberMember:OrganizationGroupMemberMember": {
      "properties": {
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "kind": {
          "type": "string",
          "description": "Kind of the member. Supported values include: user, service_account.\n"
        }
      },
      "type": "object",
      "required": [
        "email",
        "id",
        "kind"
      ]
    },
    "castai:organization/SSOConnectionAad:SSOConnectionAad": {
      "properties": {
        "adDomain": {
          "type": "string",
          "description": "Azure AD domain\n"
        },
        "clientId": {
          "type": "string",
          "description": "Azure AD client ID\n"
        },
        "clientSecret": {
          "type": "string",
          "description": "Azure AD client secret\n",
          "secret": true
        }
      },
      "type": "object",
      "required": [
        "adDomain",
        "clientId",
        "clientSecret"
      ]
    },
    "castai:organization/SSOConnectionOkta:SSOConnectionOkta": {
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Okta client ID\n"
        },
        "clientSecret": {
          "type": "string",
          "description": "Okta client secret\n",
          "secret": true
        },
        "oktaDomain": {
          "type": "string",
          "description": "Okta domain\n"
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "oktaDomain"
      ]
    },
    "castai:organization/ServiceAccountAuthor:ServiceAccountAuthor": {
      "properties": {
        "email": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "email",
            "id",
            "kind"
          ]
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceClusterAssignment:GetHibernationScheduleDataSourceClusterAssignment": {
      "properties": {
        "assignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceClusterAssignmentAssignment:GetHibernationScheduleDataSourceClusterAssignmentAssignment"
          }
        }
      },
      "type": "object"
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceClusterAssignmentAssignment:GetHibernationScheduleDataSourceClusterAssignmentAssignment": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "ID of the cluster.\n"
        }
      },
      "type": "object",
      "required": [
        "clusterId"
      ]
    },
    "castai:rebalancing/GetHibernationScheduleDataSourcePauseConfig:GetHibernationScheduleDataSourcePauseConfig": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables or disables the pause configuration.\n"
        },
        "schedule": {
          "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourcePauseConfigSchedule:GetHibernationScheduleDataSourcePauseConfigSchedule"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "schedule"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourcePauseConfigSchedule:GetHibernationScheduleDataSourcePauseConfigSchedule": {
      "properties": {
        "cronExpression": {
          "type": "string",
          "description": "Cron expression defining when the schedule should trigger.\n\n  The <span pulumi-lang-nodejs=\"`cron`\" pulumi-lang-dotnet=\"`Cron`\" pulumi-lang-go=\"`cron`\" pulumi-lang-python=\"`cron`\" pulumi-lang-yaml=\"`cron`\" pulumi-lang-java=\"`cron`\">`cron`</span> expression can optionally include the `CRON_TZ` variable at the beginning to specify the timezone in which the schedule should be interpreted.\n\n  Example:\n  ```plaintext\n  CRON_TZ=America/New_York 0 12 * * ?\n```\n  In the example above, the `CRON_TZ` variable is set to \"America/New_York\" indicating that the cron expression should be interpreted in the Eastern Time (ET) timezone.\n\n  To retrieve a list of available timezone values, you can use the following API endpoint:\n\n  GET https://api.cast.ai/v1/time-zones\n\n  When using the `CRON_TZ` variable, ensure that the specified timezone is valid and supported by checking the list of available timezones from the API endpoint.  If the `CRON_TZ` variable is not specified, the cron expression will be interpreted in the UTC timezone.\n"
        }
      },
      "type": "object",
      "required": [
        "cronExpression"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfig:GetHibernationScheduleDataSourceResumeConfig": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables or disables the pause configuration.\n"
        },
        "jobConfig": {
          "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfig:GetHibernationScheduleDataSourceResumeConfigJobConfig"
        },
        "schedule": {
          "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigSchedule:GetHibernationScheduleDataSourceResumeConfigSchedule"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "jobConfig",
        "schedule"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfig:GetHibernationScheduleDataSourceResumeConfigJobConfig": {
      "properties": {
        "nodeConfig": {
          "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfig:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfig"
        }
      },
      "type": "object",
      "required": [
        "nodeConfig"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfig:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfig": {
      "properties": {
        "configId": {
          "type": "string",
          "description": "ID reference of Node Configuration to be used for node creation. Supersedes 'config_name' parameter.\n"
        },
        "configName": {
          "type": "string",
          "description": "Name reference of Node Configuration to be used for node creation. Superseded if 'config_id' parameter is provided.\n"
        },
        "gpuConfig": {
          "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigGpuConfig:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigGpuConfig"
        },
        "instanceType": {
          "type": "string",
          "description": "Instance type.\n"
        },
        "kubernetesLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom labels to be added to the node.\n"
        },
        "kubernetesTaints": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigKubernetesTaint:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigKubernetesTaint"
          },
          "description": "Custom taints to be added to the node created from this configuration.\n"
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigNodeAffinity:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigNodeAffinity"
          },
          "description": "Custom taints to be added to the node created from this configuration.\n"
        },
        "spotConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigSpotConfig:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigSpotConfig"
          },
          "description": "Custom taints to be added to the node created from this configuration.\n"
        },
        "subnetId": {
          "type": "string",
          "description": "Node subnet ID.\n"
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigVolume:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigVolume"
          }
        },
        "zone": {
          "type": "string",
          "description": "Zone of the node.\n"
        }
      },
      "type": "object",
      "required": [
        "instanceType"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigGpuConfig:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigGpuConfig": {
      "properties": {
        "count": {
          "type": "integer",
          "description": "Number of GPUs.\n"
        },
        "type": {
          "type": "string",
          "description": "GPU type.\n"
        }
      },
      "type": "object",
      "required": [
        "count"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigKubernetesTaint:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigKubernetesTaint": {
      "properties": {
        "effect": {
          "type": "string",
          "description": "Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute.\n"
        },
        "key": {
          "type": "string",
          "description": "Key of a taint to be added to nodes created from this template.\n"
        },
        "value": {
          "type": "string",
          "description": "Value of a taint to be added to nodes created from this template.\n"
        }
      },
      "type": "object",
      "required": [
        "key"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigNodeAffinity:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigNodeAffinity": {
      "properties": {
        "affinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigNodeAffinityAffinity:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigNodeAffinityAffinity"
          }
        },
        "dedicatedGroup": {
          "type": "string",
          "description": "Key of a taint to be added to nodes created from this template.\n"
        }
      },
      "type": "object",
      "required": [
        "dedicatedGroup"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigNodeAffinityAffinity:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigNodeAffinityAffinity": {
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the node affinity selector.\n"
        },
        "operator": {
          "type": "string",
          "description": "Operator of the node affinity selector. Allowed values: DOES_NOT_EXIST, EXISTS, GT, IN, LT, NOT_IN.\n"
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Values of the node affinity selector.\n"
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigSpotConfig:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigSpotConfig": {
      "properties": {
        "priceHourly": {
          "type": "string",
          "description": "Spot instance price. Applicable only for AWS nodes.\n"
        },
        "spot": {
          "type": "boolean",
          "description": "Whether node should be created as spot instance.\n"
        }
      },
      "type": "object"
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigVolume:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigVolume": {
      "properties": {
        "raidConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigVolumeRaidConfig:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigVolumeRaidConfig"
          }
        },
        "sizeGib": {
          "type": "integer",
          "description": "Volume size in GiB.\n"
        }
      },
      "type": "object"
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigVolumeRaidConfig:GetHibernationScheduleDataSourceResumeConfigJobConfigNodeConfigVolumeRaidConfig": {
      "properties": {
        "chunkSizeKb": {
          "type": "integer",
          "description": "Specify the RAID0 chunk size in kilobytes, this parameter affects the read/write in the disk array and must be tailored for the type of data written by the workloads in the node. If not provided it will default to 64KB\n"
        }
      },
      "type": "object"
    },
    "castai:rebalancing/GetHibernationScheduleDataSourceResumeConfigSchedule:GetHibernationScheduleDataSourceResumeConfigSchedule": {
      "properties": {
        "cronExpression": {
          "type": "string",
          "description": "Cron expression defining when the schedule should trigger.\n\n  The <span pulumi-lang-nodejs=\"`cron`\" pulumi-lang-dotnet=\"`Cron`\" pulumi-lang-go=\"`cron`\" pulumi-lang-python=\"`cron`\" pulumi-lang-yaml=\"`cron`\" pulumi-lang-java=\"`cron`\">`cron`</span> expression can optionally include the `CRON_TZ` variable at the beginning to specify the timezone in which the schedule should be interpreted.\n\n  Example:\n  ```plaintext\n  CRON_TZ=America/New_York 0 12 * * ?\n```\n  In the example above, the `CRON_TZ` variable is set to \"America/New_York\" indicating that the cron expression should be interpreted in the Eastern Time (ET) timezone.\n\n  To retrieve a list of available timezone values, you can use the following API endpoint:\n\n  GET https://api.cast.ai/v1/time-zones\n\n  When using the `CRON_TZ` variable, ensure that the specified timezone is valid and supported by checking the list of available timezones from the API endpoint.  If the `CRON_TZ` variable is not specified, the cron expression will be interpreted in the UTC timezone.\n"
        }
      },
      "type": "object",
      "required": [
        "cronExpression"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetRebalancingScheduleDataSourceLaunchConfiguration:GetRebalancingScheduleDataSourceLaunchConfiguration": {
      "properties": {
        "aggressiveMode": {
          "type": "boolean",
          "description": "When enabled rebalancing will also consider problematic pods (pods without controller, job pods, pods with removal-disabled annotation) as not-problematic.\n"
        },
        "aggressiveModeConfig": {
          "$ref": "#/types/castai:rebalancing%2FGetRebalancingScheduleDataSourceLaunchConfigurationAggressiveModeConfig:GetRebalancingScheduleDataSourceLaunchConfigurationAggressiveModeConfig",
          "description": "Advanced configuration for aggressive rebalancing mode.\n"
        },
        "executionConditions": {
          "$ref": "#/types/castai:rebalancing%2FGetRebalancingScheduleDataSourceLaunchConfigurationExecutionConditions:GetRebalancingScheduleDataSourceLaunchConfigurationExecutionConditions"
        },
        "keepDrainTimeoutNodes": {
          "type": "boolean",
          "description": "Defines whether the nodes that failed to get drained until a predefined timeout, will be kept with a rebalancing.cast.ai/status=drain-failed annotation instead of forcefully drained.\n"
        },
        "nodeTtlSeconds": {
          "type": "integer",
          "description": "Specifies amount of time since node creation before the node is allowed to be considered for automated rebalancing.\n"
        },
        "numTargetedNodes": {
          "type": "integer",
          "description": "Maximum number of nodes that will be selected for rebalancing.\n"
        },
        "rebalancingMinNodes": {
          "type": "integer",
          "description": "Minimum number of nodes that should be kept in the cluster after rebalancing.\n"
        },
        "selector": {
          "type": "string",
          "description": "Node selector in JSON format.\n"
        },
        "targetNodeSelectionAlgorithm": {
          "type": "string",
          "description": "Defines the algorithm used to select the target nodes for rebalancing.\n"
        }
      },
      "type": "object"
    },
    "castai:rebalancing/GetRebalancingScheduleDataSourceLaunchConfigurationAggressiveModeConfig:GetRebalancingScheduleDataSourceLaunchConfigurationAggressiveModeConfig": {
      "properties": {
        "ignoreLocalPersistentVolumes": {
          "type": "boolean",
          "description": "Rebalance workloads that use local-path Persistent Volumes. THIS WILL RESULT IN DATA LOSS.\n"
        },
        "ignoreProblemJobPods": {
          "type": "boolean",
          "description": "Pods spawned by Jobs or CronJobs will not prevent the Rebalancer from deleting a node on which they run. WARNING: When true, pods spawned by Jobs or CronJobs will be terminated if the Rebalancer picks a node that runs them. As such, they are likely to lose their progress.\n"
        },
        "ignoreProblemPodsWithoutController": {
          "type": "boolean",
          "description": "Pods that don't have a controller (bare pods) will not prevent the Rebalancer from deleting a node on which they run. WARNING: When true, such pods might not restart, since they have no controller to do it.\n"
        },
        "ignoreProblemRemovalDisabledPods": {
          "type": "boolean",
          "description": "Pods that are marked with \"removal disabled\" will not prevent the Rebalancer from deleting a node on which they run. WARNING: When true, such pods will be evicted and disrupted.\n"
        }
      },
      "type": "object",
      "required": [
        "ignoreLocalPersistentVolumes",
        "ignoreProblemJobPods",
        "ignoreProblemPodsWithoutController",
        "ignoreProblemRemovalDisabledPods"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetRebalancingScheduleDataSourceLaunchConfigurationExecutionConditions:GetRebalancingScheduleDataSourceLaunchConfigurationExecutionConditions": {
      "properties": {
        "achievedSavingsPercentage": {
          "type": "integer",
          "description": "The percentage of the predicted savings that must be achieved in order to fully execute the plan.If the savings are not achieved after creating the new nodes, the plan will fail and delete the created nodes.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables or disables the execution conditions.\n"
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetRebalancingScheduleDataSourceSchedule:GetRebalancingScheduleDataSourceSchedule": {
      "properties": {
        "cron": {
          "type": "string",
          "description": "Cron expression defining when the schedule should trigger.\n\n  The <span pulumi-lang-nodejs=\"`cron`\" pulumi-lang-dotnet=\"`Cron`\" pulumi-lang-go=\"`cron`\" pulumi-lang-python=\"`cron`\" pulumi-lang-yaml=\"`cron`\" pulumi-lang-java=\"`cron`\">`cron`</span> expression can optionally include the `CRON_TZ` variable at the beginning to specify the timezone in which the schedule should be interpreted.\n\n  Example:\n  ```plaintext\n  CRON_TZ=America/New_York 0 12 * * ?\n```\n  In the example above, the `CRON_TZ` variable is set to \"America/New_York\" indicating that the cron expression should be interpreted in the Eastern Time (ET) timezone.\n\n  To retrieve a list of available timezone values, you can use the following API endpoint:\n\n  GET https://api.cast.ai/v1/time-zones\n\n  When using the `CRON_TZ` variable, ensure that the specified timezone is valid and supported by checking the list of available timezones from the API endpoint.  If the `CRON_TZ` variable is not specified, the cron expression will be interpreted in the UTC timezone.\n"
        }
      },
      "type": "object",
      "required": [
        "cron"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/GetRebalancingScheduleDataSourceTriggerCondition:GetRebalancingScheduleDataSourceTriggerCondition": {
      "properties": {
        "ignoreSavings": {
          "type": "boolean",
          "description": "If true, the savings percentage will be ignored and the rebalancing will be triggered regardless of the savings percentage.\n"
        },
        "savingsPercentage": {
          "type": "number",
          "description": "Defines the minimum percentage of savings expected.\n"
        }
      },
      "type": "object",
      "required": [
        "savingsPercentage"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    },
    "castai:rebalancing/HibernationScheduleClusterAssignments:HibernationScheduleClusterAssignments": {
      "properties": {
        "assignments": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleClusterAssignmentsAssignment:HibernationScheduleClusterAssignmentsAssignment"
          }
        }
      },
      "type": "object"
    },
    "castai:rebalancing/HibernationScheduleClusterAssignmentsAssignment:HibernationScheduleClusterAssignmentsAssignment": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "ID of the cluster.\n"
        }
      },
      "type": "object",
      "required": [
        "clusterId"
      ]
    },
    "castai:rebalancing/HibernationSchedulePauseConfig:HibernationSchedulePauseConfig": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables or disables the pause configuration.\n"
        },
        "schedule": {
          "$ref": "#/types/castai:rebalancing%2FHibernationSchedulePauseConfigSchedule:HibernationSchedulePauseConfigSchedule"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "schedule"
      ]
    },
    "castai:rebalancing/HibernationSchedulePauseConfigSchedule:HibernationSchedulePauseConfigSchedule": {
      "properties": {
        "cronExpression": {
          "type": "string",
          "description": "Cron expression defining when the schedule should trigger.\n\n  The <span pulumi-lang-nodejs=\"`cron`\" pulumi-lang-dotnet=\"`Cron`\" pulumi-lang-go=\"`cron`\" pulumi-lang-python=\"`cron`\" pulumi-lang-yaml=\"`cron`\" pulumi-lang-java=\"`cron`\">`cron`</span> expression can optionally include the `CRON_TZ` variable at the beginning to specify the timezone in which the schedule should be interpreted.\n\n  Example:\n  ```plaintext\n  CRON_TZ=America/New_York 0 12 * * ?\n```\n  In the example above, the `CRON_TZ` variable is set to \"America/New_York\" indicating that the cron expression should be interpreted in the Eastern Time (ET) timezone.\n\n  To retrieve a list of available timezone values, you can use the following API endpoint:\n\n  GET https://api.cast.ai/v1/time-zones\n\n  When using the `CRON_TZ` variable, ensure that the specified timezone is valid and supported by checking the list of available timezones from the API endpoint.  If the `CRON_TZ` variable is not specified, the cron expression will be interpreted in the UTC timezone.\n"
        }
      },
      "type": "object",
      "required": [
        "cronExpression"
      ]
    },
    "castai:rebalancing/HibernationScheduleResumeConfig:HibernationScheduleResumeConfig": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enables or disables the pause configuration.\n"
        },
        "jobConfig": {
          "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfig:HibernationScheduleResumeConfigJobConfig"
        },
        "schedule": {
          "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigSchedule:HibernationScheduleResumeConfigSchedule"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "jobConfig",
        "schedule"
      ]
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfig:HibernationScheduleResumeConfigJobConfig": {
      "properties": {
        "nodeConfig": {
          "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfigNodeConfig:HibernationScheduleResumeConfigJobConfigNodeConfig"
        }
      },
      "type": "object",
      "required": [
        "nodeConfig"
      ]
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfigNodeConfig:HibernationScheduleResumeConfigJobConfigNodeConfig": {
      "properties": {
        "configId": {
          "type": "string",
          "description": "ID reference of Node Configuration to be used for node creation. Supersedes 'config_name' parameter.\n"
        },
        "configName": {
          "type": "string",
          "description": "Name reference of Node Configuration to be used for node creation. Superseded if 'config_id' parameter is provided.\n"
        },
        "gpuConfig": {
          "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfigNodeConfigGpuConfig:HibernationScheduleResumeConfigJobConfigNodeConfigGpuConfig"
        },
        "instanceType": {
          "type": "string",
          "description": "Instance type.\n"
        },
        "kubernetesLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom labels to be added to the node.\n"
        },
        "kubernetesTaints": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfigNodeConfigKubernetesTaint:HibernationScheduleResumeConfigJobConfigNodeConfigKubernetesTaint"
          },
          "description": "Custom taints to be added to the node created from this configuration.\n"
        },
        "nodeAffinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfigNodeConfigNodeAffinity:HibernationScheduleResumeConfigJobConfigNodeConfigNodeAffinity"
          },
          "description": "Custom taints to be added to the node created from this configuration.\n"
        },
        "spotConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfigNodeConfigSpotConfig:HibernationScheduleResumeConfigJobConfigNodeConfigSpotConfig"
          },
          "description": "Custom taints to be added to the node created from this configuration.\n"
        },
        "subnetId": {
          "type": "string",
          "description": "Node subnet ID.\n"
        },
        "volumes": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfigNodeConfigVolume:HibernationScheduleResumeConfigJobConfigNodeConfigVolume"
          }
        },
        "zone": {
          "type": "string",
          "description": "Zone of the node.\n"
        }
      },
      "type": "object",
      "required": [
        "instanceType"
      ]
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfigNodeConfigGpuConfig:HibernationScheduleResumeConfigJobConfigNodeConfigGpuConfig": {
      "properties": {
        "count": {
          "type": "integer",
          "description": "Number of GPUs.\n"
        },
        "type": {
          "type": "string",
          "description": "GPU type.\n"
        }
      },
      "type": "object",
      "required": [
        "count"
      ]
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfigNodeConfigKubernetesTaint:HibernationScheduleResumeConfigJobConfigNodeConfigKubernetesTaint": {
      "properties": {
        "effect": {
          "type": "string",
          "description": "Effect of a taint to be added to nodes created from this template, the default is NoSchedule. Allowed values: NoSchedule, NoExecute.\n"
        },
        "key": {
          "type": "string",
          "description": "Key of a taint to be added to nodes created from this template.\n"
        },
        "value": {
          "type": "string",
          "description": "Value of a taint to be added to nodes created from this template.\n"
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfigNodeConfigNodeAffinity:HibernationScheduleResumeConfigJobConfigNodeConfigNodeAffinity": {
      "properties": {
        "affinities": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfigNodeConfigNodeAffinityAffinity:HibernationScheduleResumeConfigJobConfigNodeConfigNodeAffinityAffinity"
          }
        },
        "dedicatedGroup": {
          "type": "string",
          "description": "Key of a taint to be added to nodes created from this template.\n"
        }
      },
      "type": "object",
      "required": [
        "dedicatedGroup"
      ]
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfigNodeConfigNodeAffinityAffinity:HibernationScheduleResumeConfigJobConfigNodeConfigNodeAffinityAffinity": {
      "properties": {
        "key": {
          "type": "string",
          "description": "Key of the node affinity selector.\n"
        },
        "operator": {
          "type": "string",
          "description": "Operator of the node affinity selector. Allowed values: DOES_NOT_EXIST, EXISTS, GT, IN, LT, NOT_IN.\n"
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Values of the node affinity selector.\n"
        }
      },
      "type": "object",
      "required": [
        "key",
        "operator",
        "values"
      ]
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfigNodeConfigSpotConfig:HibernationScheduleResumeConfigJobConfigNodeConfigSpotConfig": {
      "properties": {
        "priceHourly": {
          "type": "string",
          "description": "Spot instance price. Applicable only for AWS nodes.\n"
        },
        "spot": {
          "type": "boolean",
          "description": "Whether node should be created as spot instance.\n"
        }
      },
      "type": "object"
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfigNodeConfigVolume:HibernationScheduleResumeConfigJobConfigNodeConfigVolume": {
      "properties": {
        "raidConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfigJobConfigNodeConfigVolumeRaidConfig:HibernationScheduleResumeConfigJobConfigNodeConfigVolumeRaidConfig"
          }
        },
        "sizeGib": {
          "type": "integer",
          "description": "Volume size in GiB.\n"
        }
      },
      "type": "object"
    },
    "castai:rebalancing/HibernationScheduleResumeConfigJobConfigNodeConfigVolumeRaidConfig:HibernationScheduleResumeConfigJobConfigNodeConfigVolumeRaidConfig": {
      "properties": {
        "chunkSizeKb": {
          "type": "integer",
          "description": "Specify the RAID0 chunk size in kilobytes, this parameter affects the read/write in the disk array and must be tailored for the type of data written by the workloads in the node. If not provided it will default to 64KB\n"
        }
      },
      "type": "object"
    },
    "castai:rebalancing/HibernationScheduleResumeConfigSchedule:HibernationScheduleResumeConfigSchedule": {
      "properties": {
        "cronExpression": {
          "type": "string",
          "description": "Cron expression defining when the schedule should trigger.\n\n  The <span pulumi-lang-nodejs=\"`cron`\" pulumi-lang-dotnet=\"`Cron`\" pulumi-lang-go=\"`cron`\" pulumi-lang-python=\"`cron`\" pulumi-lang-yaml=\"`cron`\" pulumi-lang-java=\"`cron`\">`cron`</span> expression can optionally include the `CRON_TZ` variable at the beginning to specify the timezone in which the schedule should be interpreted.\n\n  Example:\n  ```plaintext\n  CRON_TZ=America/New_York 0 12 * * ?\n```\n  In the example above, the `CRON_TZ` variable is set to \"America/New_York\" indicating that the cron expression should be interpreted in the Eastern Time (ET) timezone.\n\n  To retrieve a list of available timezone values, you can use the following API endpoint:\n\n  GET https://api.cast.ai/v1/time-zones\n\n  When using the `CRON_TZ` variable, ensure that the specified timezone is valid and supported by checking the list of available timezones from the API endpoint.  If the `CRON_TZ` variable is not specified, the cron expression will be interpreted in the UTC timezone.\n"
        }
      },
      "type": "object",
      "required": [
        "cronExpression"
      ]
    },
    "castai:rebalancing/RebalancingScheduleLaunchConfiguration:RebalancingScheduleLaunchConfiguration": {
      "properties": {
        "aggressiveMode": {
          "type": "boolean",
          "description": "When enabled rebalancing will also consider problematic pods (pods without controller, job pods, pods with removal-disabled annotation) as not-problematic.\n"
        },
        "aggressiveModeConfig": {
          "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleLaunchConfigurationAggressiveModeConfig:RebalancingScheduleLaunchConfigurationAggressiveModeConfig",
          "description": "Advanced configuration for aggressive rebalancing mode.\n"
        },
        "executionConditions": {
          "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleLaunchConfigurationExecutionConditions:RebalancingScheduleLaunchConfigurationExecutionConditions"
        },
        "keepDrainTimeoutNodes": {
          "type": "boolean",
          "description": "Defines whether the nodes that failed to get drained until a predefined timeout, will be kept with a rebalancing.cast.ai/status=drain-failed annotation instead of forcefully drained.\n"
        },
        "nodeTtlSeconds": {
          "type": "integer",
          "description": "Specifies amount of time since node creation before the node is allowed to be considered for automated rebalancing.\n"
        },
        "numTargetedNodes": {
          "type": "integer",
          "description": "Maximum number of nodes that will be selected for rebalancing.\n"
        },
        "rebalancingMinNodes": {
          "type": "integer",
          "description": "Minimum number of nodes that should be kept in the cluster after rebalancing.\n"
        },
        "selector": {
          "type": "string",
          "description": "Node selector in JSON format.\n"
        },
        "targetNodeSelectionAlgorithm": {
          "type": "string",
          "description": "Defines the algorithm used to select the target nodes for rebalancing.\n"
        }
      },
      "type": "object"
    },
    "castai:rebalancing/RebalancingScheduleLaunchConfigurationAggressiveModeConfig:RebalancingScheduleLaunchConfigurationAggressiveModeConfig": {
      "properties": {
        "ignoreLocalPersistentVolumes": {
          "type": "boolean",
          "description": "Rebalance workloads that use local-path Persistent Volumes. THIS WILL RESULT IN DATA LOSS.\n"
        },
        "ignoreProblemJobPods": {
          "type": "boolean",
          "description": "Pods spawned by Jobs or CronJobs will not prevent the Rebalancer from deleting a node on which they run. WARNING: When true, pods spawned by Jobs or CronJobs will be terminated if the Rebalancer picks a node that runs them. As such, they are likely to lose their progress.\n"
        },
        "ignoreProblemPodsWithoutController": {
          "type": "boolean",
          "description": "Pods that don't have a controller (bare pods) will not prevent the Rebalancer from deleting a node on which they run. WARNING: When true, such pods might not restart, since they have no controller to do it.\n"
        },
        "ignoreProblemRemovalDisabledPods": {
          "type": "boolean",
          "description": "Pods that are marked with \"removal disabled\" will not prevent the Rebalancer from deleting a node on which they run. WARNING: When true, such pods will be evicted and disrupted.\n"
        }
      },
      "type": "object",
      "required": [
        "ignoreLocalPersistentVolumes",
        "ignoreProblemJobPods",
        "ignoreProblemPodsWithoutController",
        "ignoreProblemRemovalDisabledPods"
      ]
    },
    "castai:rebalancing/RebalancingScheduleLaunchConfigurationExecutionConditions:RebalancingScheduleLaunchConfigurationExecutionConditions": {
      "properties": {
        "achievedSavingsPercentage": {
          "type": "integer",
          "description": "The percentage of the predicted savings that must be achieved in order to fully execute the plan.If the savings are not achieved after creating the new nodes, the plan will fail and delete the created nodes.\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables or disables the execution conditions.\n"
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "castai:rebalancing/RebalancingScheduleSchedule:RebalancingScheduleSchedule": {
      "properties": {
        "cron": {
          "type": "string",
          "description": "Cron expression defining when the schedule should trigger.\n\n  The <span pulumi-lang-nodejs=\"`cron`\" pulumi-lang-dotnet=\"`Cron`\" pulumi-lang-go=\"`cron`\" pulumi-lang-python=\"`cron`\" pulumi-lang-yaml=\"`cron`\" pulumi-lang-java=\"`cron`\">`cron`</span> expression can optionally include the `CRON_TZ` variable at the beginning to specify the timezone in which the schedule should be interpreted.\n\n  Example:\n  ```plaintext\n  CRON_TZ=America/New_York 0 12 * * ?\n```\n  In the example above, the `CRON_TZ` variable is set to \"America/New_York\" indicating that the cron expression should be interpreted in the Eastern Time (ET) timezone.\n\n  To retrieve a list of available timezone values, you can use the following API endpoint:\n\n  GET https://api.cast.ai/v1/time-zones\n\n  When using the `CRON_TZ` variable, ensure that the specified timezone is valid and supported by checking the list of available timezones from the API endpoint.  If the `CRON_TZ` variable is not specified, the cron expression will be interpreted in the UTC timezone.\n"
        }
      },
      "type": "object",
      "required": [
        "cron"
      ]
    },
    "castai:rebalancing/RebalancingScheduleTriggerConditions:RebalancingScheduleTriggerConditions": {
      "properties": {
        "ignoreSavings": {
          "type": "boolean",
          "description": "If true, the savings percentage will be ignored and the rebalancing will be triggered regardless of the savings percentage.\n"
        },
        "savingsPercentage": {
          "type": "number",
          "description": "Defines the minimum percentage of savings expected.\n"
        }
      },
      "type": "object",
      "required": [
        "savingsPercentage"
      ]
    },
    "castai:workload/WorkloadScalingPolicyAntiAffinity:WorkloadScalingPolicyAntiAffinity": {
      "properties": {
        "considerAntiAffinity": {
          "type": "boolean",
          "description": "Defines if anti-affinity should be considered when scaling the workload.\n\tIf enabled, requiring host ports, or having anti-affinity on hostname will force all recommendations to be deferred.\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyAssignmentRule:WorkloadScalingPolicyAssignmentRule": {
      "properties": {
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAssignmentRuleRule:WorkloadScalingPolicyAssignmentRuleRule"
          }
        }
      },
      "type": "object",
      "required": [
        "rules"
      ]
    },
    "castai:workload/WorkloadScalingPolicyAssignmentRuleRule:WorkloadScalingPolicyAssignmentRuleRule": {
      "properties": {
        "namespace": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAssignmentRuleRuleNamespace:WorkloadScalingPolicyAssignmentRuleRuleNamespace",
          "description": "Allows assigning a scaling policy based on the workload's namespace.\n"
        },
        "workload": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAssignmentRuleRuleWorkload:WorkloadScalingPolicyAssignmentRuleRuleWorkload",
          "description": "Allows assigning a scaling policy based on the workload's metadata.\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyAssignmentRuleRuleNamespace:WorkloadScalingPolicyAssignmentRuleRuleNamespace": {
      "properties": {
        "names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines matching by namespace names.\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyAssignmentRuleRuleWorkload:WorkloadScalingPolicyAssignmentRuleRuleWorkload": {
      "properties": {
        "gvks": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Group, version, and kind for Kubernetes resources. Format: kind[.version][.group].\nIt can be either:\n - only kind, e.g. \"Deployment\"\n - group and kind: e.g.\"Deployment.apps\"\n - group, version and kind: e.g.\"Deployment.v1.apps\"\n"
        },
        "labelsExpressions": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAssignmentRuleRuleWorkloadLabelsExpression:WorkloadScalingPolicyAssignmentRuleRuleWorkloadLabelsExpression"
          },
          "description": "Defines matching by label selector requirements.\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyAssignmentRuleRuleWorkloadLabelsExpression:WorkloadScalingPolicyAssignmentRuleRuleWorkloadLabelsExpression": {
      "properties": {
        "key": {
          "type": "string",
          "description": "The label key to match. Required for all operators except `Regex` and `Contains`. If not specified, it will search through all labels.\n"
        },
        "operator": {
          "type": "string",
          "description": "The operator to use for matching the label.\n"
        },
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of values to match against the label key. It is required for `In`, `NotIn`, `Regex`, and `Contains` operators.\n"
        }
      },
      "type": "object",
      "required": [
        "operator"
      ]
    },
    "castai:workload/WorkloadScalingPolicyConfidence:WorkloadScalingPolicyConfidence": {
      "properties": {
        "threshold": {
          "type": "number",
          "description": "Defines the confidence threshold for applying recommendations. The smaller number indicates that we require fewer metrics data points to apply recommendations - changing this value can cause applying less precise recommendations. Do not change the default unless you want to optimize with fewer data points (e.g., short-lived workloads).\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyCpu:WorkloadScalingPolicyCpu": {
      "properties": {
        "applyThreshold": {
          "type": "number",
          "description": "The threshold of when to apply the recommendation. Recommendation will be applied when diff of current requests and new recommendation is greater than set value\n",
          "deprecationMessage": "Use<span pulumi-lang-nodejs=\" applyThresholdStrategy \" pulumi-lang-dotnet=\" ApplyThresholdStrategy \" pulumi-lang-go=\" applyThresholdStrategy \" pulumi-lang-python=\" apply_threshold_strategy \" pulumi-lang-yaml=\" applyThresholdStrategy \" pulumi-lang-java=\" applyThresholdStrategy \"> apply_threshold_strategy </span>instead"
        },
        "applyThresholdStrategy": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyCpuApplyThresholdStrategy:WorkloadScalingPolicyCpuApplyThresholdStrategy",
          "description": "Resource apply threshold strategy settings. The default strategy is `PERCENTAGE` with percentage value set to 0.1.\n"
        },
        "args": {
          "type": "string",
          "description": "The arguments for the function - i.e. for `QUANTILE` this should be a [0, 1] float. `MAX` doesn't accept any args\n"
        },
        "function": {
          "type": "string",
          "description": "The function used to calculate the resource recommendation. Supported values: `QUANTILE`, `MAX`\n"
        },
        "limit": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyCpuLimit:WorkloadScalingPolicyCpuLimit",
          "description": "Resource limit settings\n"
        },
        "lookBackPeriodSeconds": {
          "type": "integer",
          "description": "The look back period in seconds for the recommendation.\n"
        },
        "managementOption": {
          "type": "string",
          "description": "Disables management for a single resource when set to `READ_ONLY`. The resource will use its original workload template requests and limits. Supported value: `READ_ONLY`. Minimum required workload-autoscaler version: `v0.23.1`.\n"
        },
        "max": {
          "type": "number",
          "description": "Max values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.\n"
        },
        "min": {
          "type": "number",
          "description": "Min values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.\n"
        },
        "overhead": {
          "type": "number",
          "description": "Overhead for the recommendation, e.g. `0.1` will result in 10% higher recommendation\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyCpuApplyThresholdStrategy:WorkloadScalingPolicyCpuApplyThresholdStrategy": {
      "properties": {
        "denominator": {
          "type": "string",
          "description": "If denominator is close or equal to 0, the threshold will be much bigger for small values.For example when numerator, exponent is 1 and denominator is 0 the threshold for 0.5 req. CPU will be 200%.It must be defined for the CUSTOM_ADAPTIVE strategy.\n"
        },
        "exponent": {
          "type": "number",
          "description": "The exponent changes how fast the curve is going down. The smaller value will cause that we won’t pick extremely small number for big resources, for example:\n\t- if numerator is 0, denominator is 1, and exponent is 1, for 50 CPU we will pick 2% threshold\n\t- if numerator is 0, denominator is 1, and exponent is 0.8, for 50 CPU we will pick 4.3% threshold\n\tIt must be defined for the CUSTOM_ADAPTIVE strategy.\n"
        },
        "numerator": {
          "type": "number",
          "description": "The numerator affects vertical stretch of function used in adaptive threshold - smaller number will create smaller threshold.It must be defined for the CUSTOM_ADAPTIVE strategy.\n"
        },
        "percentage": {
          "type": "number",
          "description": "Percentage of a how much difference should there be between the current pod requests and the new recommendation. It must be defined for the PERCENTAGE strategy.\n"
        },
        "type": {
          "type": "string",
          "description": "Defines apply theshold strategy type.\n\t- PERCENTAGE - recommendation will be applied when diff of current requests and new recommendation is greater than set value\n    - DEFAULT_ADAPTIVE - will pick larger threshold percentage for small workloads and smaller percentage for large workloads.\n    - CUSTOM_ADAPTIVE - works in same way as DEFAULT_ADAPTIVE, but it allows to tweak parameters of adaptive threshold formula: percentage = numerator/(currentRequest + denominator)^exponent. This strategy is for advance use cases, we recommend to use DEFAULT_ADAPTIVE strategy.\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "castai:workload/WorkloadScalingPolicyCpuLimit:WorkloadScalingPolicyCpuLimit": {
      "properties": {
        "multiplier": {
          "type": "number",
          "description": "Multiplier used to calculate the resource limit. It must be defined for the MULTIPLIER strategy.\n"
        },
        "type": {
          "type": "string",
          "description": "Defines limit strategy type.\n\t- NO_LIMIT - removes the resource limit even if it was specified in the workload spec.\n\t- KEEP_LIMITS - keep existing resource limits. While limits provide stability predictability, they may restrict workloads that need to temporarily burst beyond their allocation.\n\t- MULTIPLIER - used to calculate the resource limit. The final value is determined by multiplying the resource request by the specified factor.\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "castai:workload/WorkloadScalingPolicyDownscaling:WorkloadScalingPolicyDownscaling": {
      "properties": {
        "applyType": {
          "type": "string",
          "description": "Defines the apply type to be used when downscaling.\n\t- IMMEDIATE - pods are restarted immediately when new recommendation is generated.\n\t- DEFERRED - pods are not restarted and recommendation values are applied during natural restarts only (new deployment, etc.)\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyMemory:WorkloadScalingPolicyMemory": {
      "properties": {
        "applyThreshold": {
          "type": "number",
          "description": "The threshold of when to apply the recommendation. Recommendation will be applied when diff of current requests and new recommendation is greater than set value\n",
          "deprecationMessage": "Use<span pulumi-lang-nodejs=\" applyThresholdStrategy \" pulumi-lang-dotnet=\" ApplyThresholdStrategy \" pulumi-lang-go=\" applyThresholdStrategy \" pulumi-lang-python=\" apply_threshold_strategy \" pulumi-lang-yaml=\" applyThresholdStrategy \" pulumi-lang-java=\" applyThresholdStrategy \"> apply_threshold_strategy </span>instead"
        },
        "applyThresholdStrategy": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyMemoryApplyThresholdStrategy:WorkloadScalingPolicyMemoryApplyThresholdStrategy",
          "description": "Resource apply threshold strategy settings. The default strategy is `PERCENTAGE` with percentage value set to 0.1.\n"
        },
        "args": {
          "type": "string",
          "description": "The arguments for the function - i.e. for `QUANTILE` this should be a [0, 1] float. `MAX` doesn't accept any args\n"
        },
        "function": {
          "type": "string",
          "description": "The function used to calculate the resource recommendation. Supported values: `QUANTILE`, `MAX`\n"
        },
        "limit": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyMemoryLimit:WorkloadScalingPolicyMemoryLimit",
          "description": "Resource limit settings\n"
        },
        "lookBackPeriodSeconds": {
          "type": "integer",
          "description": "The look back period in seconds for the recommendation.\n"
        },
        "managementOption": {
          "type": "string",
          "description": "Disables management for a single resource when set to `READ_ONLY`. The resource will use its original workload template requests and limits. Supported value: `READ_ONLY`. Minimum required workload-autoscaler version: `v0.23.1`.\n"
        },
        "max": {
          "type": "number",
          "description": "Max values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.\n"
        },
        "min": {
          "type": "number",
          "description": "Min values for the recommendation, applies to every container. For memory - this is in MiB, for CPU - this is in cores.\n"
        },
        "overhead": {
          "type": "number",
          "description": "Overhead for the recommendation, e.g. `0.1` will result in 10% higher recommendation\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyMemoryApplyThresholdStrategy:WorkloadScalingPolicyMemoryApplyThresholdStrategy": {
      "properties": {
        "denominator": {
          "type": "string",
          "description": "If denominator is close or equal to 0, the threshold will be much bigger for small values.For example when numerator, exponent is 1 and denominator is 0 the threshold for 0.5 req. CPU will be 200%.It must be defined for the CUSTOM_ADAPTIVE strategy.\n"
        },
        "exponent": {
          "type": "number",
          "description": "The exponent changes how fast the curve is going down. The smaller value will cause that we won’t pick extremely small number for big resources, for example:\n\t- if numerator is 0, denominator is 1, and exponent is 1, for 50 CPU we will pick 2% threshold\n\t- if numerator is 0, denominator is 1, and exponent is 0.8, for 50 CPU we will pick 4.3% threshold\n\tIt must be defined for the CUSTOM_ADAPTIVE strategy.\n"
        },
        "numerator": {
          "type": "number",
          "description": "The numerator affects vertical stretch of function used in adaptive threshold - smaller number will create smaller threshold.It must be defined for the CUSTOM_ADAPTIVE strategy.\n"
        },
        "percentage": {
          "type": "number",
          "description": "Percentage of a how much difference should there be between the current pod requests and the new recommendation. It must be defined for the PERCENTAGE strategy.\n"
        },
        "type": {
          "type": "string",
          "description": "Defines apply theshold strategy type.\n\t- PERCENTAGE - recommendation will be applied when diff of current requests and new recommendation is greater than set value\n    - DEFAULT_ADAPTIVE - will pick larger threshold percentage for small workloads and smaller percentage for large workloads.\n    - CUSTOM_ADAPTIVE - works in same way as DEFAULT_ADAPTIVE, but it allows to tweak parameters of adaptive threshold formula: percentage = numerator/(currentRequest + denominator)^exponent. This strategy is for advance use cases, we recommend to use DEFAULT_ADAPTIVE strategy.\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "castai:workload/WorkloadScalingPolicyMemoryEvent:WorkloadScalingPolicyMemoryEvent": {
      "properties": {
        "applyType": {
          "type": "string",
          "description": "Defines the apply type to be used when applying recommendation for memory related event.\n\t- IMMEDIATE - pods are restarted immediately when new recommendation is generated.\n\t- DEFERRED - pods are not restarted and recommendation values are applied during natural restarts only (new deployment, etc.)\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyMemoryLimit:WorkloadScalingPolicyMemoryLimit": {
      "properties": {
        "multiplier": {
          "type": "number",
          "description": "Multiplier used to calculate the resource limit. It must be defined for the MULTIPLIER strategy.\n"
        },
        "type": {
          "type": "string",
          "description": "Defines limit strategy type.\n\t- NO_LIMIT - removes the resource limit even if it was specified in the workload spec.\n\t- KEEP_LIMITS - keep existing resource limits. While limits provide stability predictability, they may restrict workloads that need to temporarily burst beyond their allocation.\n\t- MULTIPLIER - used to calculate the resource limit. The final value is determined by multiplying the resource request by the specified factor.\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "castai:workload/WorkloadScalingPolicyPredictiveScaling:WorkloadScalingPolicyPredictiveScaling": {
      "properties": {
        "cpu": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyPredictiveScalingCpu:WorkloadScalingPolicyPredictiveScalingCpu",
          "description": "Defines predictive scaling resource configuration.\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyPredictiveScalingCpu:WorkloadScalingPolicyPredictiveScalingCpu": {
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Defines if predictive scaling is enabled for resource.\n"
        }
      },
      "type": "object",
      "required": [
        "enabled"
      ]
    },
    "castai:workload/WorkloadScalingPolicyRolloutBehavior:WorkloadScalingPolicyRolloutBehavior": {
      "properties": {
        "preferOneByOne": {
          "type": "boolean",
          "description": "Defines if pods should be restarted one by one to avoid service disruption.\n"
        },
        "type": {
          "type": "string",
          "description": "Defines the rollout type to be used when applying recommendations.\n\t- NO_DISRUPTION - pods are restarted without causing service disruption.\n"
        }
      },
      "type": "object"
    },
    "castai:workload/WorkloadScalingPolicyStartup:WorkloadScalingPolicyStartup": {
      "properties": {
        "periodSeconds": {
          "type": "integer",
          "description": "Defines the duration (in seconds) during which elevated resource usage is expected at startup.\nWhen set, recommendations will be adjusted to disregard resource spikes within this period.\nIf not specified, the workload will receive standard recommendations without startup considerations.\n"
        }
      },
      "type": "object"
    }
  },
  "provider": {
    "description": "The provider type for the castai 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": {
      "apiToken": {
        "type": "string",
        "description": "The token used to connect to CAST AI API.",
        "secret": true
      },
      "apiUrl": {
        "type": "string",
        "description": "CAST.AI API url."
      }
    },
    "type": "object",
    "inputProperties": {
      "apiToken": {
        "type": "string",
        "description": "The token used to connect to CAST AI API.",
        "defaultInfo": {
          "environment": [
            "CASTAI_API_TOKEN"
          ]
        },
        "secret": true
      },
      "apiUrl": {
        "type": "string",
        "description": "CAST.AI API url.",
        "default": "https://api.cast.ai",
        "defaultInfo": {
          "environment": [
            "CASTAI_API_URL"
          ]
        }
      }
    },
    "methods": {
      "terraformConfig": "pulumi:providers:castai/terraformConfig"
    }
  },
  "resources": {
    "castai:autoscaling:Autoscaler": {
      "properties": {
        "autoscalerPolicies": {
          "type": "string",
          "description": "computed value to store full policies configuration"
        },
        "autoscalerPoliciesJson": {
          "type": "string",
          "description": "autoscaler policies JSON string to override current autoscaler settings",
          "deprecationMessage": "use<span pulumi-lang-nodejs=\" autoscalerSettings \" pulumi-lang-dotnet=\" AutoscalerSettings \" pulumi-lang-go=\" autoscalerSettings \" pulumi-lang-python=\" autoscaler_settings \" pulumi-lang-yaml=\" autoscalerSettings \" pulumi-lang-java=\" autoscalerSettings \"> autoscaler_settings </span>instead. See README for example: https://github.com/castai/terraform-provider-castai?tab=readme-ov-file#migrating-from-6xx-to-7xx"
        },
        "autoscalerSettings": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettings:AutoscalerAutoscalerSettings",
          "description": "autoscaler policy definitions to override current autoscaler settings"
        },
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id"
        }
      },
      "type": "object",
      "required": [
        "autoscalerPolicies"
      ],
      "inputProperties": {
        "autoscalerPoliciesJson": {
          "type": "string",
          "description": "autoscaler policies JSON string to override current autoscaler settings",
          "deprecationMessage": "use<span pulumi-lang-nodejs=\" autoscalerSettings \" pulumi-lang-dotnet=\" AutoscalerSettings \" pulumi-lang-go=\" autoscalerSettings \" pulumi-lang-python=\" autoscaler_settings \" pulumi-lang-yaml=\" autoscalerSettings \" pulumi-lang-java=\" autoscalerSettings \"> autoscaler_settings </span>instead. See README for example: https://github.com/castai/terraform-provider-castai?tab=readme-ov-file#migrating-from-6xx-to-7xx"
        },
        "autoscalerSettings": {
          "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettings:AutoscalerAutoscalerSettings",
          "description": "autoscaler policy definitions to override current autoscaler settings"
        },
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Autoscaler resources.\n",
        "properties": {
          "autoscalerPolicies": {
            "type": "string",
            "description": "computed value to store full policies configuration"
          },
          "autoscalerPoliciesJson": {
            "type": "string",
            "description": "autoscaler policies JSON string to override current autoscaler settings",
            "deprecationMessage": "use<span pulumi-lang-nodejs=\" autoscalerSettings \" pulumi-lang-dotnet=\" AutoscalerSettings \" pulumi-lang-go=\" autoscalerSettings \" pulumi-lang-python=\" autoscaler_settings \" pulumi-lang-yaml=\" autoscalerSettings \" pulumi-lang-java=\" autoscalerSettings \"> autoscaler_settings </span>instead. See README for example: https://github.com/castai/terraform-provider-castai?tab=readme-ov-file#migrating-from-6xx-to-7xx"
          },
          "autoscalerSettings": {
            "$ref": "#/types/castai:autoscaling%2FAutoscalerAutoscalerSettings:AutoscalerAutoscalerSettings",
            "description": "autoscaler policy definitions to override current autoscaler settings"
          },
          "clusterId": {
            "type": "string",
            "description": "CAST AI cluster id"
          }
        },
        "type": "object"
      }
    },
    "castai:autoscaling:EvictorAdvancedConfig": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id."
        },
        "evictorAdvancedConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:autoscaling%2FEvictorAdvancedConfigEvictorAdvancedConfig:EvictorAdvancedConfigEvictorAdvancedConfig"
          },
          "description": "evictor advanced configuration to target specific node/pod"
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "evictorAdvancedConfigs"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id."
        },
        "evictorAdvancedConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:autoscaling%2FEvictorAdvancedConfigEvictorAdvancedConfig:EvictorAdvancedConfigEvictorAdvancedConfig"
          },
          "description": "evictor advanced configuration to target specific node/pod"
        }
      },
      "requiredInputs": [
        "clusterId",
        "evictorAdvancedConfigs"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering EvictorAdvancedConfig resources.\n",
        "properties": {
          "clusterId": {
            "type": "string",
            "description": "CAST AI cluster id."
          },
          "evictorAdvancedConfigs": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:autoscaling%2FEvictorAdvancedConfigEvictorAdvancedConfig:EvictorAdvancedConfigEvictorAdvancedConfig"
            },
            "description": "evictor advanced configuration to target specific node/pod"
          }
        },
        "type": "object"
      }
    },
    "castai:aws:EksCluster": {
      "properties": {
        "accountId": {
          "type": "string",
          "description": "ID of AWS account"
        },
        "assumeRoleArn": {
          "type": "string",
          "description": "AWS IAM role ARN that will be assumed by CAST AI user. This role should allow `sts:AssumeRole` action for CAST AI user."
        },
        "clusterToken": {
          "type": "string",
          "description": "computed value to store cluster token",
          "secret": true
        },
        "credentialsId": {
          "type": "string",
          "description": "CAST AI internal credentials ID"
        },
        "deleteNodesOnDisconnect": {
          "type": "boolean",
          "description": "Should CAST AI remove nodes managed by CAST AI on disconnect"
        },
        "name": {
          "type": "string",
          "description": "name of your EKS cluster"
        },
        "region": {
          "type": "string",
          "description": "AWS region where the cluster is placed"
        }
      },
      "type": "object",
      "required": [
        "accountId",
        "clusterToken",
        "credentialsId",
        "name",
        "region"
      ],
      "inputProperties": {
        "accountId": {
          "type": "string",
          "description": "ID of AWS account",
          "willReplaceOnChanges": true
        },
        "assumeRoleArn": {
          "type": "string",
          "description": "AWS IAM role ARN that will be assumed by CAST AI user. This role should allow `sts:AssumeRole` action for CAST AI user."
        },
        "deleteNodesOnDisconnect": {
          "type": "boolean",
          "description": "Should CAST AI remove nodes managed by CAST AI on disconnect"
        },
        "name": {
          "type": "string",
          "description": "name of your EKS cluster",
          "willReplaceOnChanges": true
        },
        "region": {
          "type": "string",
          "description": "AWS region where the cluster is placed",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "accountId",
        "region"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering EksCluster resources.\n",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "ID of AWS account",
            "willReplaceOnChanges": true
          },
          "assumeRoleArn": {
            "type": "string",
            "description": "AWS IAM role ARN that will be assumed by CAST AI user. This role should allow `sts:AssumeRole` action for CAST AI user."
          },
          "clusterToken": {
            "type": "string",
            "description": "computed value to store cluster token",
            "secret": true
          },
          "credentialsId": {
            "type": "string",
            "description": "CAST AI internal credentials ID"
          },
          "deleteNodesOnDisconnect": {
            "type": "boolean",
            "description": "Should CAST AI remove nodes managed by CAST AI on disconnect"
          },
          "name": {
            "type": "string",
            "description": "name of your EKS cluster",
            "willReplaceOnChanges": true
          },
          "region": {
            "type": "string",
            "description": "AWS region where the cluster is placed",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "castai:aws:EksClusterId": {
      "properties": {
        "accountId": {
          "type": "string"
        },
        "clusterName": {
          "type": "string"
        },
        "region": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "accountId",
        "clusterName",
        "region"
      ],
      "inputProperties": {
        "accountId": {
          "type": "string",
          "willReplaceOnChanges": true
        },
        "clusterName": {
          "type": "string",
          "willReplaceOnChanges": true
        },
        "region": {
          "type": "string",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "accountId",
        "clusterName",
        "region"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering EksClusterId resources.\n",
        "properties": {
          "accountId": {
            "type": "string",
            "willReplaceOnChanges": true
          },
          "clusterName": {
            "type": "string",
            "willReplaceOnChanges": true
          },
          "region": {
            "type": "string",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "castai:aws:EksUserArn": {
      "properties": {
        "arn": {
          "type": "string"
        },
        "clusterId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "arn",
        "clusterId"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "clusterId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering EksUserArn resources.\n",
        "properties": {
          "arn": {
            "type": "string"
          },
          "clusterId": {
            "type": "string",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "castai:azure:AksCluster": {
      "properties": {
        "clientId": {
          "type": "string",
          "description": "Azure AD application ID that is created and used by CAST AI."
        },
        "clientSecret": {
          "type": "string",
          "description": "Azure AD application password that will be used by CAST AI.",
          "secret": true
        },
        "clusterToken": {
          "type": "string",
          "description": "CAST AI cluster token.",
          "secret": true
        },
        "credentialsId": {
          "type": "string",
          "description": "CAST AI internal credentials ID"
        },
        "deleteNodesOnDisconnect": {
          "type": "boolean",
          "description": "Should CAST AI remove nodes managed by CAST.AI on disconnect."
        },
        "httpProxyConfig": {
          "$ref": "#/types/castai:azure%2FAksClusterHttpProxyConfig:AksClusterHttpProxyConfig",
          "description": "HTTP proxy configuration for CAST AI nodes and node components."
        },
        "name": {
          "type": "string",
          "description": "AKS cluster name."
        },
        "nodeResourceGroup": {
          "type": "string",
          "description": "Azure resource group in which nodes are and will be created."
        },
        "region": {
          "type": "string",
          "description": "AKS cluster region."
        },
        "subscriptionId": {
          "type": "string",
          "description": "ID of the Azure subscription."
        },
        "tenantId": {
          "type": "string",
          "description": "Azure AD tenant ID from the used subscription."
        }
      },
      "type": "object",
      "required": [
        "clientId",
        "clientSecret",
        "clusterToken",
        "credentialsId",
        "name",
        "nodeResourceGroup",
        "region",
        "subscriptionId",
        "tenantId"
      ],
      "inputProperties": {
        "clientId": {
          "type": "string",
          "description": "Azure AD application ID that is created and used by CAST AI."
        },
        "clientSecret": {
          "type": "string",
          "description": "Azure AD application password that will be used by CAST AI.",
          "secret": true
        },
        "deleteNodesOnDisconnect": {
          "type": "boolean",
          "description": "Should CAST AI remove nodes managed by CAST.AI on disconnect."
        },
        "httpProxyConfig": {
          "$ref": "#/types/castai:azure%2FAksClusterHttpProxyConfig:AksClusterHttpProxyConfig",
          "description": "HTTP proxy configuration for CAST AI nodes and node components."
        },
        "name": {
          "type": "string",
          "description": "AKS cluster name.",
          "willReplaceOnChanges": true
        },
        "nodeResourceGroup": {
          "type": "string",
          "description": "Azure resource group in which nodes are and will be created."
        },
        "region": {
          "type": "string",
          "description": "AKS cluster region.",
          "willReplaceOnChanges": true
        },
        "subscriptionId": {
          "type": "string",
          "description": "ID of the Azure subscription."
        },
        "tenantId": {
          "type": "string",
          "description": "Azure AD tenant ID from the used subscription."
        }
      },
      "requiredInputs": [
        "clientId",
        "clientSecret",
        "nodeResourceGroup",
        "region",
        "subscriptionId",
        "tenantId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering AksCluster resources.\n",
        "properties": {
          "clientId": {
            "type": "string",
            "description": "Azure AD application ID that is created and used by CAST AI."
          },
          "clientSecret": {
            "type": "string",
            "description": "Azure AD application password that will be used by CAST AI.",
            "secret": true
          },
          "clusterToken": {
            "type": "string",
            "description": "CAST AI cluster token.",
            "secret": true
          },
          "credentialsId": {
            "type": "string",
            "description": "CAST AI internal credentials ID"
          },
          "deleteNodesOnDisconnect": {
            "type": "boolean",
            "description": "Should CAST AI remove nodes managed by CAST.AI on disconnect."
          },
          "httpProxyConfig": {
            "$ref": "#/types/castai:azure%2FAksClusterHttpProxyConfig:AksClusterHttpProxyConfig",
            "description": "HTTP proxy configuration for CAST AI nodes and node components."
          },
          "name": {
            "type": "string",
            "description": "AKS cluster name.",
            "willReplaceOnChanges": true
          },
          "nodeResourceGroup": {
            "type": "string",
            "description": "Azure resource group in which nodes are and will be created."
          },
          "region": {
            "type": "string",
            "description": "AKS cluster region.",
            "willReplaceOnChanges": true
          },
          "subscriptionId": {
            "type": "string",
            "description": "ID of the Azure subscription."
          },
          "tenantId": {
            "type": "string",
            "description": "Azure AD tenant ID from the used subscription."
          }
        },
        "type": "object"
      }
    },
    "castai:config/node:NodeConfiguration": {
      "properties": {
        "aks": {
          "$ref": "#/types/castai:config%2FNodeConfigurationAks:NodeConfigurationAks"
        },
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id"
        },
        "containerRuntime": {
          "type": "string",
          "description": "Optional container runtime to be used by kubelet. Applicable for EKS only.  Supported values include: <span pulumi-lang-nodejs=\"`dockerd`\" pulumi-lang-dotnet=\"`Dockerd`\" pulumi-lang-go=\"`dockerd`\" pulumi-lang-python=\"`dockerd`\" pulumi-lang-yaml=\"`dockerd`\" pulumi-lang-java=\"`dockerd`\">`dockerd`</span>, <span pulumi-lang-nodejs=\"`containerd`\" pulumi-lang-dotnet=\"`Containerd`\" pulumi-lang-go=\"`containerd`\" pulumi-lang-python=\"`containerd`\" pulumi-lang-yaml=\"`containerd`\" pulumi-lang-java=\"`containerd`\">`containerd`</span>"
        },
        "diskCpuRatio": {
          "type": "integer",
          "description": "Disk to CPU ratio. Sets the number of GiBs to be added for every CPU on the node. Defaults to 0"
        },
        "dockerConfig": {
          "type": "string",
          "description": "Optional docker daemon configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)"
        },
        "drainTimeoutSec": {
          "type": "integer",
          "description": "Timeout in seconds for draining the node. Defaults to 0"
        },
        "eks": {
          "$ref": "#/types/castai:config%2FNodeConfigurationEks:NodeConfigurationEks"
        },
        "gke": {
          "$ref": "#/types/castai:config%2FNodeConfigurationGke:NodeConfigurationGke"
        },
        "image": {
          "type": "string",
          "description": "Image to be used while provisioning the node. If nothing is provided will be resolved to latest available image based on Image family, Kubernetes version and node architecture if possible. See Cast.ai documentation for details."
        },
        "initScript": {
          "type": "string",
          "description": "Init script to be run on your instance at launch. Should not contain any sensitive data. Value should be base64 encoded"
        },
        "kops": {
          "$ref": "#/types/castai:config%2FNodeConfigurationKops:NodeConfigurationKops"
        },
        "kubeletConfig": {
          "type": "string",
          "description": "Optional kubelet configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/)"
        },
        "minDiskSize": {
          "type": "integer",
          "description": "Minimal disk size in GiB. Defaults to 100, min 30, max 65536"
        },
        "name": {
          "type": "string"
        },
        "sshPublicKey": {
          "type": "string",
          "description": "SSH public key to be used for provisioned nodes"
        },
        "subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Subnet ids to be used for provisioned nodes"
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags to be added on cloud instances for provisioned nodes"
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "gke",
        "name",
        "subnets"
      ],
      "inputProperties": {
        "aks": {
          "$ref": "#/types/castai:config%2FNodeConfigurationAks:NodeConfigurationAks"
        },
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id",
          "willReplaceOnChanges": true
        },
        "containerRuntime": {
          "type": "string",
          "description": "Optional container runtime to be used by kubelet. Applicable for EKS only.  Supported values include: <span pulumi-lang-nodejs=\"`dockerd`\" pulumi-lang-dotnet=\"`Dockerd`\" pulumi-lang-go=\"`dockerd`\" pulumi-lang-python=\"`dockerd`\" pulumi-lang-yaml=\"`dockerd`\" pulumi-lang-java=\"`dockerd`\">`dockerd`</span>, <span pulumi-lang-nodejs=\"`containerd`\" pulumi-lang-dotnet=\"`Containerd`\" pulumi-lang-go=\"`containerd`\" pulumi-lang-python=\"`containerd`\" pulumi-lang-yaml=\"`containerd`\" pulumi-lang-java=\"`containerd`\">`containerd`</span>"
        },
        "diskCpuRatio": {
          "type": "integer",
          "description": "Disk to CPU ratio. Sets the number of GiBs to be added for every CPU on the node. Defaults to 0"
        },
        "dockerConfig": {
          "type": "string",
          "description": "Optional docker daemon configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)"
        },
        "drainTimeoutSec": {
          "type": "integer",
          "description": "Timeout in seconds for draining the node. Defaults to 0"
        },
        "eks": {
          "$ref": "#/types/castai:config%2FNodeConfigurationEks:NodeConfigurationEks"
        },
        "gke": {
          "$ref": "#/types/castai:config%2FNodeConfigurationGke:NodeConfigurationGke"
        },
        "image": {
          "type": "string",
          "description": "Image to be used while provisioning the node. If nothing is provided will be resolved to latest available image based on Image family, Kubernetes version and node architecture if possible. See Cast.ai documentation for details."
        },
        "initScript": {
          "type": "string",
          "description": "Init script to be run on your instance at launch. Should not contain any sensitive data. Value should be base64 encoded"
        },
        "kops": {
          "$ref": "#/types/castai:config%2FNodeConfigurationKops:NodeConfigurationKops"
        },
        "kubeletConfig": {
          "type": "string",
          "description": "Optional kubelet configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/)"
        },
        "minDiskSize": {
          "type": "integer",
          "description": "Minimal disk size in GiB. Defaults to 100, min 30, max 65536"
        },
        "name": {
          "type": "string",
          "willReplaceOnChanges": true
        },
        "sshPublicKey": {
          "type": "string",
          "description": "SSH public key to be used for provisioned nodes"
        },
        "subnets": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Subnet ids to be used for provisioned nodes"
        },
        "tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Tags to be added on cloud instances for provisioned nodes"
        }
      },
      "requiredInputs": [
        "clusterId",
        "subnets"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NodeConfiguration resources.\n",
        "properties": {
          "aks": {
            "$ref": "#/types/castai:config%2FNodeConfigurationAks:NodeConfigurationAks"
          },
          "clusterId": {
            "type": "string",
            "description": "CAST AI cluster id",
            "willReplaceOnChanges": true
          },
          "containerRuntime": {
            "type": "string",
            "description": "Optional container runtime to be used by kubelet. Applicable for EKS only.  Supported values include: <span pulumi-lang-nodejs=\"`dockerd`\" pulumi-lang-dotnet=\"`Dockerd`\" pulumi-lang-go=\"`dockerd`\" pulumi-lang-python=\"`dockerd`\" pulumi-lang-yaml=\"`dockerd`\" pulumi-lang-java=\"`dockerd`\">`dockerd`</span>, <span pulumi-lang-nodejs=\"`containerd`\" pulumi-lang-dotnet=\"`Containerd`\" pulumi-lang-go=\"`containerd`\" pulumi-lang-python=\"`containerd`\" pulumi-lang-yaml=\"`containerd`\" pulumi-lang-java=\"`containerd`\">`containerd`</span>"
          },
          "diskCpuRatio": {
            "type": "integer",
            "description": "Disk to CPU ratio. Sets the number of GiBs to be added for every CPU on the node. Defaults to 0"
          },
          "dockerConfig": {
            "type": "string",
            "description": "Optional docker daemon configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)"
          },
          "drainTimeoutSec": {
            "type": "integer",
            "description": "Timeout in seconds for draining the node. Defaults to 0"
          },
          "eks": {
            "$ref": "#/types/castai:config%2FNodeConfigurationEks:NodeConfigurationEks"
          },
          "gke": {
            "$ref": "#/types/castai:config%2FNodeConfigurationGke:NodeConfigurationGke"
          },
          "image": {
            "type": "string",
            "description": "Image to be used while provisioning the node. If nothing is provided will be resolved to latest available image based on Image family, Kubernetes version and node architecture if possible. See Cast.ai documentation for details."
          },
          "initScript": {
            "type": "string",
            "description": "Init script to be run on your instance at launch. Should not contain any sensitive data. Value should be base64 encoded"
          },
          "kops": {
            "$ref": "#/types/castai:config%2FNodeConfigurationKops:NodeConfigurationKops"
          },
          "kubeletConfig": {
            "type": "string",
            "description": "Optional kubelet configuration properties in JSON format. Provide only properties that you want to override. Applicable for EKS only. [Available values](https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/)"
          },
          "minDiskSize": {
            "type": "integer",
            "description": "Minimal disk size in GiB. Defaults to 100, min 30, max 65536"
          },
          "name": {
            "type": "string",
            "willReplaceOnChanges": true
          },
          "sshPublicKey": {
            "type": "string",
            "description": "SSH public key to be used for provisioned nodes"
          },
          "subnets": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Subnet ids to be used for provisioned nodes"
          },
          "tags": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Tags to be added on cloud instances for provisioned nodes"
          }
        },
        "type": "object"
      }
    },
    "castai:config/node:NodeConfigurationDefault": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id"
        },
        "configurationId": {
          "type": "string",
          "description": "Id of the node configuration"
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "configurationId"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id",
          "willReplaceOnChanges": true
        },
        "configurationId": {
          "type": "string",
          "description": "Id of the node configuration",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "clusterId",
        "configurationId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NodeConfigurationDefault resources.\n",
        "properties": {
          "clusterId": {
            "type": "string",
            "description": "CAST AI cluster id",
            "willReplaceOnChanges": true
          },
          "configurationId": {
            "type": "string",
            "description": "Id of the node configuration",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "castai:config/node:NodeTemplate": {
      "properties": {
        "clmEnabled": {
          "type": "boolean",
          "description": "Marks whether CLM should be enabled for nodes created from this template."
        },
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id."
        },
        "configurationId": {
          "type": "string",
          "description": "CAST AI node configuration id to be used for node template."
        },
        "constraints": {
          "$ref": "#/types/castai:config%2FNodeTemplateConstraints:NodeTemplateConstraints"
        },
        "customInstancesEnabled": {
          "type": "boolean",
          "description": "Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP."
        },
        "customInstancesWithExtendedMemoryEnabled": {
          "type": "boolean",
          "description": "Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP."
        },
        "customLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom labels to be added to nodes created from this template."
        },
        "customTaints": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeTemplateCustomTaint:NodeTemplateCustomTaint"
          },
          "description": "Custom taints to be added to the nodes created from this template. `shouldTaint` has to be <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> in order to create/update the node template with custom taints. If `shouldTaint` is <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, but no custom taints are provided, the nodes will be tainted with the default node template taint."
        },
        "gpu": {
          "$ref": "#/types/castai:config%2FNodeTemplateGpu:NodeTemplateGpu",
          "description": "GPU configuration."
        },
        "isDefault": {
          "type": "boolean",
          "description": "Flag whether the node template is default."
        },
        "isEnabled": {
          "type": "boolean",
          "description": "Flag whether the node template is enabled and considered for autoscaling."
        },
        "name": {
          "type": "string",
          "description": "Name of the node template."
        },
        "rebalancingConfigMinNodes": {
          "type": "integer",
          "description": "Minimum nodes that will be kept when rebalancing nodes using this node template."
        },
        "shouldTaint": {
          "type": "boolean",
          "description": "Marks whether the templated nodes will have a taint."
        }
      },
      "type": "object",
      "required": [
        "isEnabled",
        "name"
      ],
      "inputProperties": {
        "clmEnabled": {
          "type": "boolean",
          "description": "Marks whether CLM should be enabled for nodes created from this template."
        },
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id."
        },
        "configurationId": {
          "type": "string",
          "description": "CAST AI node configuration id to be used for node template."
        },
        "constraints": {
          "$ref": "#/types/castai:config%2FNodeTemplateConstraints:NodeTemplateConstraints"
        },
        "customInstancesEnabled": {
          "type": "boolean",
          "description": "Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP."
        },
        "customInstancesWithExtendedMemoryEnabled": {
          "type": "boolean",
          "description": "Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP."
        },
        "customLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom labels to be added to nodes created from this template."
        },
        "customTaints": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:config%2FNodeTemplateCustomTaint:NodeTemplateCustomTaint"
          },
          "description": "Custom taints to be added to the nodes created from this template. `shouldTaint` has to be <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> in order to create/update the node template with custom taints. If `shouldTaint` is <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, but no custom taints are provided, the nodes will be tainted with the default node template taint."
        },
        "gpu": {
          "$ref": "#/types/castai:config%2FNodeTemplateGpu:NodeTemplateGpu",
          "description": "GPU configuration."
        },
        "isDefault": {
          "type": "boolean",
          "description": "Flag whether the node template is default."
        },
        "isEnabled": {
          "type": "boolean",
          "description": "Flag whether the node template is enabled and considered for autoscaling."
        },
        "name": {
          "type": "string",
          "description": "Name of the node template.",
          "willReplaceOnChanges": true
        },
        "rebalancingConfigMinNodes": {
          "type": "integer",
          "description": "Minimum nodes that will be kept when rebalancing nodes using this node template."
        },
        "shouldTaint": {
          "type": "boolean",
          "description": "Marks whether the templated nodes will have a taint."
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NodeTemplate resources.\n",
        "properties": {
          "clmEnabled": {
            "type": "boolean",
            "description": "Marks whether CLM should be enabled for nodes created from this template."
          },
          "clusterId": {
            "type": "string",
            "description": "CAST AI cluster id."
          },
          "configurationId": {
            "type": "string",
            "description": "CAST AI node configuration id to be used for node template."
          },
          "constraints": {
            "$ref": "#/types/castai:config%2FNodeTemplateConstraints:NodeTemplateConstraints"
          },
          "customInstancesEnabled": {
            "type": "boolean",
            "description": "Marks whether custom instances should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP."
          },
          "customInstancesWithExtendedMemoryEnabled": {
            "type": "boolean",
            "description": "Marks whether custom instances with extended memory should be used when deciding which parts of inventory are available. Custom instances are only supported in GCP."
          },
          "customLabels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Custom labels to be added to nodes created from this template."
          },
          "customTaints": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:config%2FNodeTemplateCustomTaint:NodeTemplateCustomTaint"
            },
            "description": "Custom taints to be added to the nodes created from this template. `shouldTaint` has to be <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> in order to create/update the node template with custom taints. If `shouldTaint` is <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, but no custom taints are provided, the nodes will be tainted with the default node template taint."
          },
          "gpu": {
            "$ref": "#/types/castai:config%2FNodeTemplateGpu:NodeTemplateGpu",
            "description": "GPU configuration."
          },
          "isDefault": {
            "type": "boolean",
            "description": "Flag whether the node template is default."
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Flag whether the node template is enabled and considered for autoscaling."
          },
          "name": {
            "type": "string",
            "description": "Name of the node template.",
            "willReplaceOnChanges": true
          },
          "rebalancingConfigMinNodes": {
            "type": "integer",
            "description": "Minimum nodes that will be kept when rebalancing nodes using this node template."
          },
          "shouldTaint": {
            "type": "boolean",
            "description": "Marks whether the templated nodes will have a taint."
          }
        },
        "type": "object"
      }
    },
    "castai:gcp:GkeCluster": {
      "properties": {
        "clusterToken": {
          "type": "string",
          "description": "CAST.AI agent cluster token",
          "secret": true
        },
        "credentialsId": {
          "type": "string",
          "description": "CAST AI credentials id for cluster"
        },
        "credentialsJson": {
          "type": "string",
          "description": "GCP credentials.json from ServiceAccount with credentials for CAST AI",
          "secret": true
        },
        "deleteNodesOnDisconnect": {
          "type": "boolean",
          "description": "Should CAST AI remove nodes managed by CAST.AI on disconnect"
        },
        "location": {
          "type": "string",
          "description": "GCP cluster zone in case of zonal or region in case of regional cluster"
        },
        "name": {
          "type": "string",
          "description": "GKE cluster name"
        },
        "projectId": {
          "type": "string",
          "description": "GCP project id"
        }
      },
      "type": "object",
      "required": [
        "clusterToken",
        "credentialsId",
        "location",
        "name",
        "projectId"
      ],
      "inputProperties": {
        "credentialsJson": {
          "type": "string",
          "description": "GCP credentials.json from ServiceAccount with credentials for CAST AI",
          "secret": true
        },
        "deleteNodesOnDisconnect": {
          "type": "boolean",
          "description": "Should CAST AI remove nodes managed by CAST.AI on disconnect"
        },
        "location": {
          "type": "string",
          "description": "GCP cluster zone in case of zonal or region in case of regional cluster",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "GKE cluster name",
          "willReplaceOnChanges": true
        },
        "projectId": {
          "type": "string",
          "description": "GCP project id",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "location",
        "projectId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering GkeCluster resources.\n",
        "properties": {
          "clusterToken": {
            "type": "string",
            "description": "CAST.AI agent cluster token",
            "secret": true
          },
          "credentialsId": {
            "type": "string",
            "description": "CAST AI credentials id for cluster"
          },
          "credentialsJson": {
            "type": "string",
            "description": "GCP credentials.json from ServiceAccount with credentials for CAST AI",
            "secret": true
          },
          "deleteNodesOnDisconnect": {
            "type": "boolean",
            "description": "Should CAST AI remove nodes managed by CAST.AI on disconnect"
          },
          "location": {
            "type": "string",
            "description": "GCP cluster zone in case of zonal or region in case of regional cluster",
            "willReplaceOnChanges": true
          },
          "name": {
            "type": "string",
            "description": "GKE cluster name",
            "willReplaceOnChanges": true
          },
          "projectId": {
            "type": "string",
            "description": "GCP project id",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "castai:gcp:GkeClusterId": {
      "properties": {
        "castServiceAccount": {
          "type": "string",
          "description": "Service account email in cast project"
        },
        "clientServiceAccount": {
          "type": "string",
          "description": "Service account email in client project"
        },
        "clusterToken": {
          "type": "string",
          "description": "CAST.AI agent cluster token",
          "secret": true
        },
        "location": {
          "type": "string",
          "description": "GCP cluster zone in case of zonal or region in case of regional cluster"
        },
        "name": {
          "type": "string",
          "description": "GKE cluster name"
        },
        "projectId": {
          "type": "string",
          "description": "GCP project id"
        }
      },
      "type": "object",
      "required": [
        "castServiceAccount",
        "clusterToken",
        "location",
        "name",
        "projectId"
      ],
      "inputProperties": {
        "castServiceAccount": {
          "type": "string",
          "description": "Service account email in cast project"
        },
        "clientServiceAccount": {
          "type": "string",
          "description": "Service account email in client project"
        },
        "location": {
          "type": "string",
          "description": "GCP cluster zone in case of zonal or region in case of regional cluster",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "GKE cluster name",
          "willReplaceOnChanges": true
        },
        "projectId": {
          "type": "string",
          "description": "GCP project id",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "location",
        "projectId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering GkeClusterId resources.\n",
        "properties": {
          "castServiceAccount": {
            "type": "string",
            "description": "Service account email in cast project"
          },
          "clientServiceAccount": {
            "type": "string",
            "description": "Service account email in client project"
          },
          "clusterToken": {
            "type": "string",
            "description": "CAST.AI agent cluster token",
            "secret": true
          },
          "location": {
            "type": "string",
            "description": "GCP cluster zone in case of zonal or region in case of regional cluster",
            "willReplaceOnChanges": true
          },
          "name": {
            "type": "string",
            "description": "GKE cluster name",
            "willReplaceOnChanges": true
          },
          "projectId": {
            "type": "string",
            "description": "GCP project id",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "castai:iam:EnterpriseRoleBinding": {
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the role binding."
        },
        "enterpriseId": {
          "type": "string",
          "description": "Enterprise organization ID."
        },
        "name": {
          "type": "string",
          "description": "Name of the role binding."
        },
        "organizationId": {
          "type": "string",
          "description": "Organization ID (either enterprise or it's child) where the role binding is created."
        },
        "roleId": {
          "type": "string",
          "description": "Role UUID to bind."
        },
        "scopes": {
          "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingScopes:EnterpriseRoleBindingScopes",
          "description": "Scopes (organization or cluster) for this role binding."
        },
        "subjects": {
          "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingSubjects:EnterpriseRoleBindingSubjects",
          "description": "Subjects (users, service accounts, groups) for this role binding."
        }
      },
      "type": "object",
      "required": [
        "enterpriseId",
        "name",
        "organizationId",
        "roleId",
        "scopes",
        "subjects"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the role binding."
        },
        "enterpriseId": {
          "type": "string",
          "description": "Enterprise organization ID.",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the role binding."
        },
        "organizationId": {
          "type": "string",
          "description": "Organization ID (either enterprise or it's child) where the role binding is created.",
          "willReplaceOnChanges": true
        },
        "roleId": {
          "type": "string",
          "description": "Role UUID to bind."
        },
        "scopes": {
          "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingScopes:EnterpriseRoleBindingScopes",
          "description": "Scopes (organization or cluster) for this role binding."
        },
        "subjects": {
          "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingSubjects:EnterpriseRoleBindingSubjects",
          "description": "Subjects (users, service accounts, groups) for this role binding."
        }
      },
      "requiredInputs": [
        "enterpriseId",
        "organizationId",
        "roleId",
        "scopes",
        "subjects"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering EnterpriseRoleBinding resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the role binding."
          },
          "enterpriseId": {
            "type": "string",
            "description": "Enterprise organization ID.",
            "willReplaceOnChanges": true
          },
          "name": {
            "type": "string",
            "description": "Name of the role binding."
          },
          "organizationId": {
            "type": "string",
            "description": "Organization ID (either enterprise or it's child) where the role binding is created.",
            "willReplaceOnChanges": true
          },
          "roleId": {
            "type": "string",
            "description": "Role UUID to bind."
          },
          "scopes": {
            "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingScopes:EnterpriseRoleBindingScopes",
            "description": "Scopes (organization or cluster) for this role binding."
          },
          "subjects": {
            "$ref": "#/types/castai:iam%2FEnterpriseRoleBindingSubjects:EnterpriseRoleBindingSubjects",
            "description": "Subjects (users, service accounts, groups) for this role binding."
          }
        },
        "type": "object"
      }
    },
    "castai:iam:RoleBindings": {
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the role binding."
        },
        "name": {
          "type": "string",
          "description": "Name of role binding."
        },
        "organizationId": {
          "type": "string",
          "description": "CAST AI organization ID."
        },
        "roleId": {
          "type": "string",
          "description": "ID of role from role binding."
        },
        "scopes": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FRoleBindingsScope:RoleBindingsScope"
          },
          "description": "Scopes of the role binding."
        },
        "subjects": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FRoleBindingsSubject:RoleBindingsSubject"
          }
        }
      },
      "type": "object",
      "required": [
        "description",
        "name",
        "organizationId",
        "roleId",
        "subjects"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the role binding."
        },
        "name": {
          "type": "string",
          "description": "Name of role binding."
        },
        "organizationId": {
          "type": "string",
          "description": "CAST AI organization ID.",
          "willReplaceOnChanges": true
        },
        "roleId": {
          "type": "string",
          "description": "ID of role from role binding."
        },
        "scopes": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FRoleBindingsScope:RoleBindingsScope"
          },
          "description": "Scopes of the role binding."
        },
        "subjects": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:iam%2FRoleBindingsSubject:RoleBindingsSubject"
          }
        }
      },
      "requiredInputs": [
        "organizationId",
        "roleId",
        "subjects"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering RoleBindings resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the role binding."
          },
          "name": {
            "type": "string",
            "description": "Name of role binding."
          },
          "organizationId": {
            "type": "string",
            "description": "CAST AI organization ID.",
            "willReplaceOnChanges": true
          },
          "roleId": {
            "type": "string",
            "description": "ID of role from role binding."
          },
          "scopes": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:iam%2FRoleBindingsScope:RoleBindingsScope"
            },
            "description": "Scopes of the role binding."
          },
          "subjects": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:iam%2FRoleBindingsSubject:RoleBindingsSubject"
            }
          }
        },
        "type": "object"
      }
    },
    "castai:index:AllocationGroup": {
      "properties": {
        "clusterIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of CAST AI cluster ids"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels used to select workloads to track"
        },
        "labelsOperator": {
          "type": "string",
          "description": "Operator with which to connect the labels\n\tOR (default) - workload needs to have at least one label to be included\n\tAND - workload needs to have all the labels to be included"
        },
        "name": {
          "type": "string",
          "description": "Allocation group name"
        },
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of cluster namespaces to track"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "inputProperties": {
        "clusterIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of CAST AI cluster ids"
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Labels used to select workloads to track"
        },
        "labelsOperator": {
          "type": "string",
          "description": "Operator with which to connect the labels\n\tOR (default) - workload needs to have at least one label to be included\n\tAND - workload needs to have all the labels to be included"
        },
        "name": {
          "type": "string",
          "description": "Allocation group name"
        },
        "namespaces": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of cluster namespaces to track"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering AllocationGroup resources.\n",
        "properties": {
          "clusterIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of CAST AI cluster ids"
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Labels used to select workloads to track"
          },
          "labelsOperator": {
            "type": "string",
            "description": "Operator with which to connect the labels\n\tOR (default) - workload needs to have at least one label to be included\n\tAND - workload needs to have all the labels to be included"
          },
          "name": {
            "type": "string",
            "description": "Allocation group name"
          },
          "namespaces": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of cluster namespaces to track"
          }
        },
        "type": "object"
      }
    },
    "castai:index:Commitments": {
      "properties": {
        "azureReservations": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:index%2FCommitmentsAzureReservation:CommitmentsAzureReservation"
          },
          "description": "List of Azure reservations."
        },
        "azureReservationsCsv": {
          "type": "string",
          "description": "CSV file containing reservations exported from Azure."
        },
        "commitmentConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:index%2FCommitmentsCommitmentConfig:CommitmentsCommitmentConfig"
          },
          "description": "List of commitment configurations."
        },
        "gcpCuds": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:index%2FCommitmentsGcpCud:CommitmentsGcpCud"
          },
          "description": "List of GCP CUDs."
        },
        "gcpCudsJson": {
          "type": "string",
          "description": "JSON file containing CUDs exported from GCP."
        }
      },
      "type": "object",
      "required": [
        "azureReservations",
        "gcpCuds"
      ],
      "inputProperties": {
        "azureReservationsCsv": {
          "type": "string",
          "description": "CSV file containing reservations exported from Azure."
        },
        "commitmentConfigs": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:index%2FCommitmentsCommitmentConfig:CommitmentsCommitmentConfig"
          },
          "description": "List of commitment configurations."
        },
        "gcpCudsJson": {
          "type": "string",
          "description": "JSON file containing CUDs exported from GCP."
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Commitments resources.\n",
        "properties": {
          "azureReservations": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:index%2FCommitmentsAzureReservation:CommitmentsAzureReservation"
            },
            "description": "List of Azure reservations."
          },
          "azureReservationsCsv": {
            "type": "string",
            "description": "CSV file containing reservations exported from Azure."
          },
          "commitmentConfigs": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:index%2FCommitmentsCommitmentConfig:CommitmentsCommitmentConfig"
            },
            "description": "List of commitment configurations."
          },
          "gcpCuds": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:index%2FCommitmentsGcpCud:CommitmentsGcpCud"
            },
            "description": "List of GCP CUDs."
          },
          "gcpCudsJson": {
            "type": "string",
            "description": "JSON file containing CUDs exported from GCP."
          }
        },
        "type": "object"
      }
    },
    "castai:index:Reservations": {
      "properties": {
        "organizationId": {
          "type": "string",
          "description": "organization"
        },
        "reservations": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:index%2FReservationsReservation:ReservationsReservation"
          }
        },
        "reservationsCsv": {
          "type": "string",
          "description": "csv file containing reservations"
        }
      },
      "type": "object",
      "required": [
        "reservations",
        "reservationsCsv"
      ],
      "inputProperties": {
        "organizationId": {
          "type": "string",
          "description": "organization"
        },
        "reservationsCsv": {
          "type": "string",
          "description": "csv file containing reservations"
        }
      },
      "requiredInputs": [
        "reservationsCsv"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Reservations resources.\n",
        "properties": {
          "organizationId": {
            "type": "string",
            "description": "organization"
          },
          "reservations": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:index%2FReservationsReservation:ReservationsReservation"
            }
          },
          "reservationsCsv": {
            "type": "string",
            "description": "csv file containing reservations"
          }
        },
        "type": "object"
      }
    },
    "castai:index:SecurityRuntimeRule": {
      "properties": {
        "anomaliesCount": {
          "type": "integer",
          "description": "Number of anomalies detected using this rule."
        },
        "category": {
          "type": "string",
          "description": "Category of the rule."
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether the rule is enabled."
        },
        "isBuiltIn": {
          "type": "boolean",
          "description": "Indicates whether the rule is a built-in rule."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value labels attached to the rule."
        },
        "name": {
          "type": "string"
        },
        "resourceSelector": {
          "type": "string",
          "description": "Optional CEL expression for resource selection."
        },
        "ruleEngineType": {
          "type": "string",
          "description": "The engine type used to evaluate the rule. Only RULE_ENGINE_TYPE_CEL is currently supported."
        },
        "ruleText": {
          "type": "string",
          "description": "CEL rule expression text."
        },
        "severity": {
          "type": "string",
          "description": "Severity of the rule. One of SEVERITY_CRITICAL, SEVERITY_HIGH, SEVERITY_MEDIUM, SEVERITY_LOW, SEVERITY_NONE."
        },
        "type": {
          "type": "string",
          "description": "Type of the rule (internal value)."
        },
        "usedCustomLists": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Custom lists used in this rule, if any."
        }
      },
      "type": "object",
      "required": [
        "anomaliesCount",
        "isBuiltIn",
        "name",
        "ruleText",
        "severity",
        "type",
        "usedCustomLists"
      ],
      "inputProperties": {
        "category": {
          "type": "string",
          "description": "Category of the rule.",
          "willReplaceOnChanges": true
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether the rule is enabled."
        },
        "labels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value labels attached to the rule."
        },
        "name": {
          "type": "string",
          "willReplaceOnChanges": true
        },
        "resourceSelector": {
          "type": "string",
          "description": "Optional CEL expression for resource selection."
        },
        "ruleEngineType": {
          "type": "string",
          "description": "The engine type used to evaluate the rule. Only RULE_ENGINE_TYPE_CEL is currently supported.",
          "willReplaceOnChanges": true
        },
        "ruleText": {
          "type": "string",
          "description": "CEL rule expression text."
        },
        "severity": {
          "type": "string",
          "description": "Severity of the rule. One of SEVERITY_CRITICAL, SEVERITY_HIGH, SEVERITY_MEDIUM, SEVERITY_LOW, SEVERITY_NONE."
        }
      },
      "requiredInputs": [
        "ruleText",
        "severity"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SecurityRuntimeRule resources.\n",
        "properties": {
          "anomaliesCount": {
            "type": "integer",
            "description": "Number of anomalies detected using this rule."
          },
          "category": {
            "type": "string",
            "description": "Category of the rule.",
            "willReplaceOnChanges": true
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the rule is enabled."
          },
          "isBuiltIn": {
            "type": "boolean",
            "description": "Indicates whether the rule is a built-in rule."
          },
          "labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Key-value labels attached to the rule."
          },
          "name": {
            "type": "string",
            "willReplaceOnChanges": true
          },
          "resourceSelector": {
            "type": "string",
            "description": "Optional CEL expression for resource selection."
          },
          "ruleEngineType": {
            "type": "string",
            "description": "The engine type used to evaluate the rule. Only RULE_ENGINE_TYPE_CEL is currently supported.",
            "willReplaceOnChanges": true
          },
          "ruleText": {
            "type": "string",
            "description": "CEL rule expression text."
          },
          "severity": {
            "type": "string",
            "description": "Severity of the rule. One of SEVERITY_CRITICAL, SEVERITY_HIGH, SEVERITY_MEDIUM, SEVERITY_LOW, SEVERITY_NONE."
          },
          "type": {
            "type": "string",
            "description": "Type of the rule (internal value)."
          },
          "usedCustomLists": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Custom lists used in this rule, if any."
          }
        },
        "type": "object"
      }
    },
    "castai:organization:EnterpriseGroup": {
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the group."
        },
        "enterpriseId": {
          "type": "string",
          "description": "Enterprise organization ID."
        },
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FEnterpriseGroupMember:EnterpriseGroupMember"
          },
          "description": "List of group members."
        },
        "name": {
          "type": "string",
          "description": "Name of the group."
        },
        "organizationId": {
          "type": "string",
          "description": "Target organization ID for the group."
        },
        "roleBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FEnterpriseGroupRoleBinding:EnterpriseGroupRoleBinding"
          },
          "description": "List of role bindings for the group."
        }
      },
      "type": "object",
      "required": [
        "enterpriseId",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the group."
        },
        "enterpriseId": {
          "type": "string",
          "description": "Enterprise organization ID.",
          "willReplaceOnChanges": true
        },
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FEnterpriseGroupMember:EnterpriseGroupMember"
          },
          "description": "List of group members."
        },
        "name": {
          "type": "string",
          "description": "Name of the group."
        },
        "organizationId": {
          "type": "string",
          "description": "Target organization ID for the group.",
          "willReplaceOnChanges": true
        },
        "roleBindings": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FEnterpriseGroupRoleBinding:EnterpriseGroupRoleBinding"
          },
          "description": "List of role bindings for the group."
        }
      },
      "requiredInputs": [
        "enterpriseId",
        "organizationId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering EnterpriseGroup resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the group."
          },
          "enterpriseId": {
            "type": "string",
            "description": "Enterprise organization ID.",
            "willReplaceOnChanges": true
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:organization%2FEnterpriseGroupMember:EnterpriseGroupMember"
            },
            "description": "List of group members."
          },
          "name": {
            "type": "string",
            "description": "Name of the group."
          },
          "organizationId": {
            "type": "string",
            "description": "Target organization ID for the group.",
            "willReplaceOnChanges": true
          },
          "roleBindings": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:organization%2FEnterpriseGroupRoleBinding:EnterpriseGroupRoleBinding"
            },
            "description": "List of role bindings for the group."
          }
        },
        "type": "object"
      }
    },
    "castai:organization:OrganizationGroup": {
      "properties": {
        "description": {
          "type": "string",
          "description": "Description of the group."
        },
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FOrganizationGroupMember:OrganizationGroupMember"
          }
        },
        "name": {
          "type": "string",
          "description": "Name of the group."
        },
        "organizationId": {
          "type": "string",
          "description": "CAST AI organization ID."
        }
      },
      "type": "object",
      "required": [
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the group."
        },
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FOrganizationGroupMember:OrganizationGroupMember"
          }
        },
        "name": {
          "type": "string",
          "description": "Name of the group.",
          "willReplaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "description": "CAST AI organization ID.",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "organizationId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering OrganizationGroup resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "Description of the group."
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:organization%2FOrganizationGroupMember:OrganizationGroupMember"
            }
          },
          "name": {
            "type": "string",
            "description": "Name of the group.",
            "willReplaceOnChanges": true
          },
          "organizationId": {
            "type": "string",
            "description": "CAST AI organization ID.",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "castai:organization:OrganizationMembers": {
      "properties": {
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of email addresses corresponding to users who should be given member access to the organization.",
          "deprecationMessage": "The 'members' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
        },
        "organizationId": {
          "type": "string",
          "description": "CAST AI organization ID."
        },
        "owners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of email addresses corresponding to users who should be given owner access to the organization.",
          "deprecationMessage": "The 'owners' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
        },
        "viewers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of email addresses corresponding to users who should be given viewer access to the organization.",
          "deprecationMessage": "The 'viewers' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
        }
      },
      "type": "object",
      "required": [
        "organizationId"
      ],
      "inputProperties": {
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of email addresses corresponding to users who should be given member access to the organization.",
          "deprecationMessage": "The 'members' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
        },
        "organizationId": {
          "type": "string",
          "description": "CAST AI organization ID.",
          "willReplaceOnChanges": true
        },
        "owners": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of email addresses corresponding to users who should be given owner access to the organization.",
          "deprecationMessage": "The 'owners' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
        },
        "viewers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of email addresses corresponding to users who should be given viewer access to the organization.",
          "deprecationMessage": "The 'viewers' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
        }
      },
      "requiredInputs": [
        "organizationId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering OrganizationMembers resources.\n",
        "properties": {
          "members": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of email addresses corresponding to users who should be given member access to the organization.",
            "deprecationMessage": "The 'members' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
          },
          "organizationId": {
            "type": "string",
            "description": "CAST AI organization ID.",
            "willReplaceOnChanges": true
          },
          "owners": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of email addresses corresponding to users who should be given owner access to the organization.",
            "deprecationMessage": "The 'owners' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
          },
          "viewers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of email addresses corresponding to users who should be given viewer access to the organization.",
            "deprecationMessage": "The 'viewers' field is deprecated. Use 'castai_role_bindings' resource instead for more granular role management. This field will be removed in a future version."
          }
        },
        "type": "object"
      }
    },
    "castai:organization:SSOConnection": {
      "properties": {
        "aad": {
          "$ref": "#/types/castai:organization%2FSSOConnectionAad:SSOConnectionAad",
          "description": "Azure AD connector"
        },
        "additionalEmailDomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional email domains that will be allowed to sign in via the connection"
        },
        "emailDomain": {
          "type": "string",
          "description": "Email domain of the connection"
        },
        "name": {
          "type": "string",
          "description": "Connection name"
        },
        "okta": {
          "$ref": "#/types/castai:organization%2FSSOConnectionOkta:SSOConnectionOkta",
          "description": "Okta connector"
        }
      },
      "type": "object",
      "required": [
        "emailDomain",
        "name"
      ],
      "inputProperties": {
        "aad": {
          "$ref": "#/types/castai:organization%2FSSOConnectionAad:SSOConnectionAad",
          "description": "Azure AD connector"
        },
        "additionalEmailDomains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Additional email domains that will be allowed to sign in via the connection"
        },
        "emailDomain": {
          "type": "string",
          "description": "Email domain of the connection"
        },
        "name": {
          "type": "string",
          "description": "Connection name"
        },
        "okta": {
          "$ref": "#/types/castai:organization%2FSSOConnectionOkta:SSOConnectionOkta",
          "description": "Okta connector"
        }
      },
      "requiredInputs": [
        "emailDomain"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SSOConnection resources.\n",
        "properties": {
          "aad": {
            "$ref": "#/types/castai:organization%2FSSOConnectionAad:SSOConnectionAad",
            "description": "Azure AD connector"
          },
          "additionalEmailDomains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Additional email domains that will be allowed to sign in via the connection"
          },
          "emailDomain": {
            "type": "string",
            "description": "Email domain of the connection"
          },
          "name": {
            "type": "string",
            "description": "Connection name"
          },
          "okta": {
            "$ref": "#/types/castai:organization%2FSSOConnectionOkta:SSOConnectionOkta",
            "description": "Okta connector"
          }
        },
        "type": "object"
      }
    },
    "castai:organization:ServiceAccount": {
      "properties": {
        "authors": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:organization%2FServiceAccountAuthor:ServiceAccountAuthor"
          },
          "description": "Author of the service account."
        },
        "description": {
          "type": "string",
          "description": "Description of the service account."
        },
        "email": {
          "type": "string",
          "description": "Email of the service account."
        },
        "name": {
          "type": "string",
          "description": "Name of the service account."
        },
        "organizationId": {
          "type": "string",
          "description": "ID of the organization."
        }
      },
      "type": "object",
      "required": [
        "authors",
        "email",
        "name",
        "organizationId"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "Description of the service account."
        },
        "name": {
          "type": "string",
          "description": "Name of the service account."
        },
        "organizationId": {
          "type": "string",
          "description": "ID of the organization.",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "organizationId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ServiceAccount resources.\n",
        "properties": {
          "authors": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:organization%2FServiceAccountAuthor:ServiceAccountAuthor"
            },
            "description": "Author of the service account."
          },
          "description": {
            "type": "string",
            "description": "Description of the service account."
          },
          "email": {
            "type": "string",
            "description": "Email of the service account."
          },
          "name": {
            "type": "string",
            "description": "Name of the service account."
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization.",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "castai:organization:ServiceAccountKey": {
      "properties": {
        "active": {
          "type": "boolean",
          "description": "Whether the service account key is active. Defaults to true."
        },
        "expiresAt": {
          "type": "string",
          "description": "The expiration time of the service account key in RFC3339 format. Defaults to an empty string."
        },
        "lastUsedAt": {
          "type": "string",
          "description": "Last time the service account key was used."
        },
        "name": {
          "type": "string",
          "description": "Name of the service account key."
        },
        "organizationId": {
          "type": "string",
          "description": "ID of the organization."
        },
        "prefix": {
          "type": "string",
          "description": "Prefix of the service account key."
        },
        "serviceAccountId": {
          "type": "string",
          "description": "ID of the service account."
        },
        "token": {
          "type": "string",
          "description": "The token of the service account key used for authentication."
        }
      },
      "type": "object",
      "required": [
        "lastUsedAt",
        "name",
        "organizationId",
        "prefix",
        "serviceAccountId",
        "token"
      ],
      "inputProperties": {
        "active": {
          "type": "boolean",
          "description": "Whether the service account key is active. Defaults to true."
        },
        "expiresAt": {
          "type": "string",
          "description": "The expiration time of the service account key in RFC3339 format. Defaults to an empty string.",
          "willReplaceOnChanges": true
        },
        "name": {
          "type": "string",
          "description": "Name of the service account key.",
          "willReplaceOnChanges": true
        },
        "organizationId": {
          "type": "string",
          "description": "ID of the organization.",
          "willReplaceOnChanges": true
        },
        "serviceAccountId": {
          "type": "string",
          "description": "ID of the service account.",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "organizationId",
        "serviceAccountId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ServiceAccountKey resources.\n",
        "properties": {
          "active": {
            "type": "boolean",
            "description": "Whether the service account key is active. Defaults to true."
          },
          "expiresAt": {
            "type": "string",
            "description": "The expiration time of the service account key in RFC3339 format. Defaults to an empty string.",
            "willReplaceOnChanges": true
          },
          "lastUsedAt": {
            "type": "string",
            "description": "Last time the service account key was used."
          },
          "name": {
            "type": "string",
            "description": "Name of the service account key.",
            "willReplaceOnChanges": true
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization.",
            "willReplaceOnChanges": true
          },
          "prefix": {
            "type": "string",
            "description": "Prefix of the service account key."
          },
          "serviceAccountId": {
            "type": "string",
            "description": "ID of the service account.",
            "willReplaceOnChanges": true
          },
          "token": {
            "type": "string",
            "description": "The token of the service account key used for authentication."
          }
        },
        "type": "object"
      }
    },
    "castai:rebalancing:HibernationSchedule": {
      "properties": {
        "clusterAssignments": {
          "$ref": "#/types/castai:rebalancing%2FHibernationScheduleClusterAssignments:HibernationScheduleClusterAssignments"
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables or disables the schedule."
        },
        "name": {
          "type": "string",
          "description": "Name of the schedule."
        },
        "organizationId": {
          "type": "string",
          "description": "ID of the organization. If not provided, then will attempt to infer it using CAST AI API client."
        },
        "pauseConfig": {
          "$ref": "#/types/castai:rebalancing%2FHibernationSchedulePauseConfig:HibernationSchedulePauseConfig"
        },
        "resumeConfig": {
          "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfig:HibernationScheduleResumeConfig"
        }
      },
      "type": "object",
      "required": [
        "enabled",
        "name",
        "pauseConfig",
        "resumeConfig"
      ],
      "inputProperties": {
        "clusterAssignments": {
          "$ref": "#/types/castai:rebalancing%2FHibernationScheduleClusterAssignments:HibernationScheduleClusterAssignments"
        },
        "enabled": {
          "type": "boolean",
          "description": "Enables or disables the schedule."
        },
        "name": {
          "type": "string",
          "description": "Name of the schedule."
        },
        "organizationId": {
          "type": "string",
          "description": "ID of the organization. If not provided, then will attempt to infer it using CAST AI API client."
        },
        "pauseConfig": {
          "$ref": "#/types/castai:rebalancing%2FHibernationSchedulePauseConfig:HibernationSchedulePauseConfig"
        },
        "resumeConfig": {
          "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfig:HibernationScheduleResumeConfig"
        }
      },
      "requiredInputs": [
        "enabled",
        "pauseConfig",
        "resumeConfig"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering HibernationSchedule resources.\n",
        "properties": {
          "clusterAssignments": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleClusterAssignments:HibernationScheduleClusterAssignments"
          },
          "enabled": {
            "type": "boolean",
            "description": "Enables or disables the schedule."
          },
          "name": {
            "type": "string",
            "description": "Name of the schedule."
          },
          "organizationId": {
            "type": "string",
            "description": "ID of the organization. If not provided, then will attempt to infer it using CAST AI API client."
          },
          "pauseConfig": {
            "$ref": "#/types/castai:rebalancing%2FHibernationSchedulePauseConfig:HibernationSchedulePauseConfig"
          },
          "resumeConfig": {
            "$ref": "#/types/castai:rebalancing%2FHibernationScheduleResumeConfig:HibernationScheduleResumeConfig"
          }
        },
        "type": "object"
      }
    },
    "castai:rebalancing:RebalancingJob": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id."
        },
        "enabled": {
          "type": "boolean",
          "description": "The job will only be executed if it's enabled."
        },
        "rebalancingScheduleId": {
          "type": "string",
          "description": "Rebalancing schedule of this job."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "rebalancingScheduleId"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id."
        },
        "enabled": {
          "type": "boolean",
          "description": "The job will only be executed if it's enabled."
        },
        "rebalancingScheduleId": {
          "type": "string",
          "description": "Rebalancing schedule of this job."
        }
      },
      "requiredInputs": [
        "clusterId",
        "rebalancingScheduleId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering RebalancingJob resources.\n",
        "properties": {
          "clusterId": {
            "type": "string",
            "description": "CAST AI cluster id."
          },
          "enabled": {
            "type": "boolean",
            "description": "The job will only be executed if it's enabled."
          },
          "rebalancingScheduleId": {
            "type": "string",
            "description": "Rebalancing schedule of this job."
          }
        },
        "type": "object"
      }
    },
    "castai:rebalancing:RebalancingSchedule": {
      "properties": {
        "launchConfiguration": {
          "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleLaunchConfiguration:RebalancingScheduleLaunchConfiguration"
        },
        "name": {
          "type": "string",
          "description": "Name of the schedule."
        },
        "schedule": {
          "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleSchedule:RebalancingScheduleSchedule"
        },
        "triggerConditions": {
          "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleTriggerConditions:RebalancingScheduleTriggerConditions"
        }
      },
      "type": "object",
      "required": [
        "launchConfiguration",
        "name",
        "schedule",
        "triggerConditions"
      ],
      "inputProperties": {
        "launchConfiguration": {
          "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleLaunchConfiguration:RebalancingScheduleLaunchConfiguration"
        },
        "name": {
          "type": "string",
          "description": "Name of the schedule."
        },
        "schedule": {
          "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleSchedule:RebalancingScheduleSchedule"
        },
        "triggerConditions": {
          "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleTriggerConditions:RebalancingScheduleTriggerConditions"
        }
      },
      "requiredInputs": [
        "launchConfiguration",
        "schedule",
        "triggerConditions"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering RebalancingSchedule resources.\n",
        "properties": {
          "launchConfiguration": {
            "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleLaunchConfiguration:RebalancingScheduleLaunchConfiguration"
          },
          "name": {
            "type": "string",
            "description": "Name of the schedule."
          },
          "schedule": {
            "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleSchedule:RebalancingScheduleSchedule"
          },
          "triggerConditions": {
            "$ref": "#/types/castai:rebalancing%2FRebalancingScheduleTriggerConditions:RebalancingScheduleTriggerConditions"
          }
        },
        "type": "object"
      }
    },
    "castai:workload:WorkloadScalingPolicy": {
      "properties": {
        "antiAffinity": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAntiAffinity:WorkloadScalingPolicyAntiAffinity"
        },
        "applyType": {
          "type": "string",
          "description": "Recommendation apply type.\n\t- IMMEDIATE - pods are restarted immediately when new recommendation is generated.\n\t- DEFERRED - pods are not restarted and recommendation values are applied during natural restarts only (new deployment, etc.)"
        },
        "assignmentRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAssignmentRule:WorkloadScalingPolicyAssignmentRule"
          },
          "description": "Allows defining conditions for automatically assigning workloads to this scaling policy."
        },
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id"
        },
        "confidence": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyConfidence:WorkloadScalingPolicyConfidence",
          "description": "Defines the confidence settings for applying recommendations."
        },
        "cpu": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyCpu:WorkloadScalingPolicyCpu"
        },
        "downscaling": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyDownscaling:WorkloadScalingPolicyDownscaling"
        },
        "managementOption": {
          "type": "string",
          "description": "Defines possible options for workload management.\n\t- READ_ONLY - workload watched (metrics collected), but no actions performed by CAST AI.\n\t- MANAGED - workload watched (metrics collected), CAST AI may perform actions on the workload."
        },
        "memory": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyMemory:WorkloadScalingPolicyMemory"
        },
        "memoryEvent": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyMemoryEvent:WorkloadScalingPolicyMemoryEvent"
        },
        "name": {
          "type": "string",
          "description": "Scaling policy name"
        },
        "predictiveScaling": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyPredictiveScaling:WorkloadScalingPolicyPredictiveScaling"
        },
        "rolloutBehavior": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyRolloutBehavior:WorkloadScalingPolicyRolloutBehavior",
          "description": "Defines the rollout behavior used when applying recommendations. Prerequisites:\n\t- Applicable to Deployment resources that support running as multi-replica.\n\t- Deployment is running with single replica (replica count = 1).\n\t- Deployment's rollout strategy allows for downtime.\n\t- Recommendation apply type is \"immediate\".\n\t- Cluster has workload-autoscaler component version v0.35.3 or higher."
        },
        "startup": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyStartup:WorkloadScalingPolicyStartup"
        }
      },
      "type": "object",
      "required": [
        "applyType",
        "clusterId",
        "cpu",
        "managementOption",
        "memory",
        "name"
      ],
      "inputProperties": {
        "antiAffinity": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAntiAffinity:WorkloadScalingPolicyAntiAffinity"
        },
        "applyType": {
          "type": "string",
          "description": "Recommendation apply type.\n\t- IMMEDIATE - pods are restarted immediately when new recommendation is generated.\n\t- DEFERRED - pods are not restarted and recommendation values are applied during natural restarts only (new deployment, etc.)"
        },
        "assignmentRules": {
          "type": "array",
          "items": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAssignmentRule:WorkloadScalingPolicyAssignmentRule"
          },
          "description": "Allows defining conditions for automatically assigning workloads to this scaling policy."
        },
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id",
          "willReplaceOnChanges": true
        },
        "confidence": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyConfidence:WorkloadScalingPolicyConfidence",
          "description": "Defines the confidence settings for applying recommendations."
        },
        "cpu": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyCpu:WorkloadScalingPolicyCpu"
        },
        "downscaling": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyDownscaling:WorkloadScalingPolicyDownscaling"
        },
        "managementOption": {
          "type": "string",
          "description": "Defines possible options for workload management.\n\t- READ_ONLY - workload watched (metrics collected), but no actions performed by CAST AI.\n\t- MANAGED - workload watched (metrics collected), CAST AI may perform actions on the workload."
        },
        "memory": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyMemory:WorkloadScalingPolicyMemory"
        },
        "memoryEvent": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyMemoryEvent:WorkloadScalingPolicyMemoryEvent"
        },
        "name": {
          "type": "string",
          "description": "Scaling policy name"
        },
        "predictiveScaling": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyPredictiveScaling:WorkloadScalingPolicyPredictiveScaling"
        },
        "rolloutBehavior": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyRolloutBehavior:WorkloadScalingPolicyRolloutBehavior",
          "description": "Defines the rollout behavior used when applying recommendations. Prerequisites:\n\t- Applicable to Deployment resources that support running as multi-replica.\n\t- Deployment is running with single replica (replica count = 1).\n\t- Deployment's rollout strategy allows for downtime.\n\t- Recommendation apply type is \"immediate\".\n\t- Cluster has workload-autoscaler component version v0.35.3 or higher."
        },
        "startup": {
          "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyStartup:WorkloadScalingPolicyStartup"
        }
      },
      "requiredInputs": [
        "applyType",
        "clusterId",
        "cpu",
        "managementOption",
        "memory"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering WorkloadScalingPolicy resources.\n",
        "properties": {
          "antiAffinity": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAntiAffinity:WorkloadScalingPolicyAntiAffinity"
          },
          "applyType": {
            "type": "string",
            "description": "Recommendation apply type.\n\t- IMMEDIATE - pods are restarted immediately when new recommendation is generated.\n\t- DEFERRED - pods are not restarted and recommendation values are applied during natural restarts only (new deployment, etc.)"
          },
          "assignmentRules": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyAssignmentRule:WorkloadScalingPolicyAssignmentRule"
            },
            "description": "Allows defining conditions for automatically assigning workloads to this scaling policy."
          },
          "clusterId": {
            "type": "string",
            "description": "CAST AI cluster id",
            "willReplaceOnChanges": true
          },
          "confidence": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyConfidence:WorkloadScalingPolicyConfidence",
            "description": "Defines the confidence settings for applying recommendations."
          },
          "cpu": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyCpu:WorkloadScalingPolicyCpu"
          },
          "downscaling": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyDownscaling:WorkloadScalingPolicyDownscaling"
          },
          "managementOption": {
            "type": "string",
            "description": "Defines possible options for workload management.\n\t- READ_ONLY - workload watched (metrics collected), but no actions performed by CAST AI.\n\t- MANAGED - workload watched (metrics collected), CAST AI may perform actions on the workload."
          },
          "memory": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyMemory:WorkloadScalingPolicyMemory"
          },
          "memoryEvent": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyMemoryEvent:WorkloadScalingPolicyMemoryEvent"
          },
          "name": {
            "type": "string",
            "description": "Scaling policy name"
          },
          "predictiveScaling": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyPredictiveScaling:WorkloadScalingPolicyPredictiveScaling"
          },
          "rolloutBehavior": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyRolloutBehavior:WorkloadScalingPolicyRolloutBehavior",
            "description": "Defines the rollout behavior used when applying recommendations. Prerequisites:\n\t- Applicable to Deployment resources that support running as multi-replica.\n\t- Deployment is running with single replica (replica count = 1).\n\t- Deployment's rollout strategy allows for downtime.\n\t- Recommendation apply type is \"immediate\".\n\t- Cluster has workload-autoscaler component version v0.35.3 or higher."
          },
          "startup": {
            "$ref": "#/types/castai:workload%2FWorkloadScalingPolicyStartup:WorkloadScalingPolicyStartup"
          }
        },
        "type": "object"
      }
    },
    "castai:workload:WorkloadScalingPolicyOrder": {
      "properties": {
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id"
        },
        "policyIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of scaling policy IDs in the order they should be applied."
        }
      },
      "type": "object",
      "required": [
        "clusterId",
        "policyIds"
      ],
      "inputProperties": {
        "clusterId": {
          "type": "string",
          "description": "CAST AI cluster id",
          "willReplaceOnChanges": true
        },
        "policyIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of scaling policy IDs in the order they should be applied."
        }
      },
      "requiredInputs": [
        "clusterId",
        "policyIds"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering WorkloadScalingPolicyOrder resources.\n",
        "properties": {
          "clusterId": {
            "type": "string",
            "description": "CAST AI cluster id",
            "willReplaceOnChanges": true
          },
          "policyIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of scaling policy IDs in the order they should be applied."
          }
        },
        "type": "object"
      }
    }
  },
  "functions": {
    "castai:aws:GetEksSettingsDataSource": {
      "inputs": {
        "description": "A collection of arguments for invoking GetEksSettingsDataSource.\n",
        "properties": {
          "accountId": {
            "type": "string",
            "willReplaceOnChanges": true
          },
          "cluster": {
            "type": "string",
            "willReplaceOnChanges": true
          },
          "region": {
            "type": "string",
            "willReplaceOnChanges": true
          },
          "vpc": {
            "type": "string",
            "willReplaceOnChanges": true
          }
        },
        "type": "object",
        "required": [
          "accountId",
          "cluster",
          "region",
          "vpc"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by GetEksSettingsDataSource.\n",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "cluster": {
            "type": "string"
          },
          "iamManagedPolicies": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "iamPolicyJson": {
            "type": "string"
          },
          "iamUserPolicyJson": {
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "vpc": {
            "type": "string"
          }
        },
        "required": [
          "accountId",
          "cluster",
          "iamManagedPolicies",
          "iamPolicyJson",
          "iamUserPolicyJson",
          "id",
          "region",
          "vpc"
        ],
        "type": "object"
      }
    },
    "castai:aws:GetEksUserArnDataSource": {
      "inputs": {
        "description": "A collection of arguments for invoking GetEksUserArnDataSource.\n",
        "properties": {
          "clusterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by GetEksUserArnDataSource.\n",
        "properties": {
          "arn": {
            "type": "string"
          },
          "clusterId": {
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          }
        },
        "required": [
          "arn",
          "clusterId",
          "id"
        ],
        "type": "object"
      }
    },
    "castai:gcp:GetGkePoliciesDataSource": {
      "inputs": {
        "description": "A collection of arguments for invoking GetGkePoliciesDataSource.\n",
        "properties": {
          "features": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            },
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by GetGkePoliciesDataSource.\n",
        "properties": {
          "features": {
            "additionalProperties": {
              "type": "boolean"
            },
            "type": "object"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "policies": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "policies"
        ],
        "type": "object"
      }
    },
    "castai:organization:GetOrganizationDataSource": {
      "inputs": {
        "description": "A collection of arguments for invoking GetOrganizationDataSource.\n",
        "properties": {
          "name": {
            "type": "string",
            "willReplaceOnChanges": true
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by GetOrganizationDataSource.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      }
    },
    "castai:rebalancing:GetHibernationScheduleDataSource": {
      "inputs": {
        "description": "A collection of arguments for invoking GetHibernationScheduleDataSource.\n",
        "properties": {
          "clusterAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceClusterAssignment:GetHibernationScheduleDataSourceClusterAssignment"
            }
          },
          "name": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by GetHibernationScheduleDataSource.\n",
        "properties": {
          "clusterAssignments": {
            "items": {
              "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceClusterAssignment:GetHibernationScheduleDataSourceClusterAssignment"
            },
            "type": "array"
          },
          "enabled": {
            "type": "boolean"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "pauseConfigs": {
            "items": {
              "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourcePauseConfig:GetHibernationScheduleDataSourcePauseConfig"
            },
            "type": "array"
          },
          "resumeConfigs": {
            "items": {
              "$ref": "#/types/castai:rebalancing%2FGetHibernationScheduleDataSourceResumeConfig:GetHibernationScheduleDataSourceResumeConfig"
            },
            "type": "array"
          }
        },
        "required": [
          "clusterAssignments",
          "enabled",
          "id",
          "name",
          "pauseConfigs",
          "resumeConfigs"
        ],
        "type": "object"
      }
    },
    "castai:rebalancing:GetRebalancingScheduleDataSource": {
      "inputs": {
        "description": "A collection of arguments for invoking GetRebalancingScheduleDataSource.\n",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by GetRebalancingScheduleDataSource.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "launchConfigurations": {
            "items": {
              "$ref": "#/types/castai:rebalancing%2FGetRebalancingScheduleDataSourceLaunchConfiguration:GetRebalancingScheduleDataSourceLaunchConfiguration"
            },
            "type": "array"
          },
          "name": {
            "type": "string"
          },
          "schedules": {
            "items": {
              "$ref": "#/types/castai:rebalancing%2FGetRebalancingScheduleDataSourceSchedule:GetRebalancingScheduleDataSourceSchedule"
            },
            "type": "array"
          },
          "triggerConditions": {
            "items": {
              "$ref": "#/types/castai:rebalancing%2FGetRebalancingScheduleDataSourceTriggerCondition:GetRebalancingScheduleDataSourceTriggerCondition"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "launchConfigurations",
          "name",
          "schedules",
          "triggerConditions"
        ],
        "type": "object"
      }
    },
    "castai:workload:GetWorkloadScalingPolicyOrderDataSource": {
      "inputs": {
        "description": "A collection of arguments for invoking GetWorkloadScalingPolicyOrderDataSource.\n",
        "properties": {
          "clusterId": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "clusterId"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by GetWorkloadScalingPolicyOrderDataSource.\n",
        "properties": {
          "clusterId": {
            "type": "string"
          },
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "policyIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "clusterId",
          "id",
          "policyIds"
        ],
        "type": "object"
      }
    },
    "pulumi:providers:castai/terraformConfig": {
      "description": "This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.",
      "inputs": {
        "properties": {
          "__self__": {
            "$ref": "#/resources/pulumi:providers:castai"
          }
        },
        "type": "object",
        "required": [
          "__self__"
        ]
      },
      "outputs": {
        "properties": {
          "result": {
            "additionalProperties": {
              "$ref": "pulumi.json#/Any"
            },
            "type": "object"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      }
    }
  }
}
