---
type: api
title: Update Deployment
description: Updates a Deployment.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/cloud-enterprise/operation/operation-update-deployment
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/cloud-enterprise/operation/operation-update-deployment
products:
  - Elastic Cloud Enterprise
---

# Update Deployment

## Paths

- `PUT` `/deployments/{deployment_id}`

- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/cloud-enterprise/authentication#basicauth)
- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/cloud-enterprise/authentication#apikey)

#### Path Parameters

- `deployment_id` (string)
  Identifier for the Deployment

## Description

Updates a Deployment.

## Query String Parameters

- `hide_pruned_orphans` (boolean · default: false)
  Whether or not to hide orphaned resources that were shut down (relevant if prune on the request is true)
- `skip_snapshot` (boolean · default: false)
  Whether or not to skip snapshots before shutting down orphaned resources (relevant if prune on the request is true)
- `validate_only` (boolean · default: false)
  If true, will just validate the Deployment definition but will not perform the update
- `version` (string)
  If specified then checks for conflicts against the version stored in the persistent store (returned in 'x-cloud-resource-version' of the GET request)

## Request Body

`application/json`

The deployment definition

- `name` (string) — optional
  A new name for the deployment, otherwise stays the same.
- `prune_orphans` (boolean) — required
  Whether or not to prune orphan resources that are no longer mentioned in this request. Note that resourcesare tracked by ref_id, and if a resource's ref_id is changed, any previous running resources created with that previousref_id are considered to be orphaned as well.
- `resources` ({} DeploymentUpdateResources) — optional
  Describes the Deployment resource updates
  - `elasticsearch` ([] ElasticsearchPayload) — optional
    A list of payloads for Elasticsearch cluster updates
    - `ref_id` (string) — required
      A locally-unique user-specified id for this Elasticsearch cluster
    - `display_name` (string) — optional
      The human readable name for the cluster (defaults to the generated cluster id if not specified)
    - `region` (string) — required
      The region where this resource exists
    - `plan` ({} ElasticsearchClusterPlan) — required
      The plan for the Elasticsearch cluster.
      - `cluster_topology` ([] ElasticsearchClusterTopologyElement) — required
        - `id` (string) — optional
          Unique identifier of this topology element
        - `node_type` ({} ElasticsearchNodeType) — optional
          Controls the combinations of Elasticsearch node types. TIP: By default, the Elasticsearch node is master eligible, can hold data, and run ingest pipelines. WARNING: Do not set for tiebreaker topologies.
          - `master` (boolean) — optional
            Defines whether this node can be elected master (default: false)
          - `data` (boolean) — optional
            Defines whether this node can hold data (default: false)
          - `ingest` (boolean) — optional
            Defines whether this node can run an ingest pipeline (default: false)
          - `ml` (boolean) — optional
            Defines whether this node can run ml jobs, valid only for versions 5.4.0 or greater (default: false)
        - `node_roles` ([] enum) — optional
          The list of node roles for this topology element (ES version >= 7.10). Allowable values are: master, ingest, ml, data_hot, data_content, data_warm, data_cold, data_frozen, remote_cluster_client, transform
          Values: `master`, `ingest`, `ml`, `data_hot`, `data_content`, `data_warm`, `data_cold`, `data_frozen`, `remote_cluster_client`, `transform`
        - `memory_per_node` (integer) — optional
          The memory capacity in MB for each node of this type built in each zone.
        - `node_count_per_zone` (integer) — optional
          The number of nodes of this type that are allocated within each zone. (i.e. total capacity per zone = `node_count_per_zone` * `memory_per_node` in MB). Cannot be set for tiebreaker topologies. For dedicated master nodes, must be 1 if an entry exists.
        - `zone_count` (integer) — optional
          The default number of zones in which data nodes will be placed
        - `elasticsearch` ({} ElasticsearchConfiguration) — optional
          The Elasticsearch cluster settings. When specified at the top level, provides a field-by-field default. When specified at the topology level, provides the override settings.
          - `version` (string) — optional
            The version of the Elasticsearch cluster (must be one of the ECE supported versions). Currently cannot be different across the topology (and is generally specified in the globals). Defaults to the latest version if not specified.
          - `docker_image` (string) — optional
            A docker URI that allows overriding of the default docker image specified for this version
          - `system_settings` ({} ElasticsearchSystemSettings) — optional
            A subset of Elasticsearch settings. TIP: To define the complete set of Elasticsearch settings, use `ElasticsearchSystemSettings` with `user_settings_override*` and `user_settings*`.
            - `scripting` ({} ElasticsearchScriptingUserSettings) — optional
              Controls the languages supported by the Elasticsearch cluster, such as Painless, Mustache, and Expressions. Controls how the languages are used, such as file, index, and inline. TIP: For complex configurations, leave these blank and configure these settings in the user YAML or JSON.
              - `painless_enabled` (boolean) — optional
                (5.x+ only) If enabled (the default) then the painless scripting engine is allowed as a sandboxed language. Sandboxed languages are the only ones allowed if 'sandbox_mode' is set to true. NOTES: (Corresponds to the parameters 'script.engine.painless.[file|stored|inline]')
              - `mustache_enabled` (boolean) — optional
                (5.x+ only) If enabled (the default) then the mustache scripting engine is allowed as a sandboxed language. Sandboxed languages are the only ones allowed if 'sandbox_mode' is set to true. NOTES: (Corresponds to the parameters 'script.engine.mustache.[file|stored|inline]')
              - `expressions_enabled` (boolean) — optional
                (5.x+ only) If enabled (the default) then the expressions scripting engine is allowed as a sandboxed language. Sandboxed languages are the only ones allowed if 'sandbox_mode' is set to true. NOTES: (Corresponds to the parameters 'script.engine.expression.[file|stored|inline]')
              - `stored` ({} ElasticsearchScriptTypeSettings) — optional
                Enables scripting for the specified type and controls other parameters. Store scripts in indexes (`stored`), upload in file bundles (`file`), or use in API requests (`inline`).
                - `enabled` (boolean) — optional
                  If enabled (default: true) then scripts are enabled, either for sandboxing languages (by default), or for all installed languages if 'sandbox_mode' is disabled (or for 6.x). NOTES: (Corresponds to the parameter 'script.file|stored/indexed|inline')
                - `sandbox_mode` (boolean) — optional
                  If enabled (default: true) and this script type is enabled, then only the sandbox languages are allowed. By default the sandbox languages are painless, expressions and mustache, but this can be restricted via the 'painless_enabled', 'mustache_enabled' 'expression_enabled' settings.NOTES: Not supported in 6.x. (Corresponds to the parameters 'script.engine.[painless|mustache|expressions].[file|stored|inline]')
              - `file` ({} ElasticsearchScriptTypeSettings) — optional
                Enables scripting for the specified type and controls other parameters. Store scripts in indexes (`stored`), upload in file bundles (`file`), or use in API requests (`inline`).
                - `enabled` (boolean) — optional
                  If enabled (default: true) then scripts are enabled, either for sandboxing languages (by default), or for all installed languages if 'sandbox_mode' is disabled (or for 6.x). NOTES: (Corresponds to the parameter 'script.file|stored/indexed|inline')
                - `sandbox_mode` (boolean) — optional
                  If enabled (default: true) and this script type is enabled, then only the sandbox languages are allowed. By default the sandbox languages are painless, expressions and mustache, but this can be restricted via the 'painless_enabled', 'mustache_enabled' 'expression_enabled' settings.NOTES: Not supported in 6.x. (Corresponds to the parameters 'script.engine.[painless|mustache|expressions].[file|stored|inline]')
              - `inline` ({} ElasticsearchScriptTypeSettings) — optional
                Enables scripting for the specified type and controls other parameters. Store scripts in indexes (`stored`), upload in file bundles (`file`), or use in API requests (`inline`).
                - `enabled` (boolean) — optional
                  If enabled (default: true) then scripts are enabled, either for sandboxing languages (by default), or for all installed languages if 'sandbox_mode' is disabled (or for 6.x). NOTES: (Corresponds to the parameter 'script.file|stored/indexed|inline')
                - `sandbox_mode` (boolean) — optional
                  If enabled (default: true) and this script type is enabled, then only the sandbox languages are allowed. By default the sandbox languages are painless, expressions and mustache, but this can be restricted via the 'painless_enabled', 'mustache_enabled' 'expression_enabled' settings.NOTES: Not supported in 6.x. (Corresponds to the parameters 'script.engine.[painless|mustache|expressions].[file|stored|inline]')
            - `reindex_whitelist` ([] string) — optional
              Limits remote Elasticsearch clusters that can be used as the source for '_reindex' API commands
            - `auto_create_index` (boolean) — optional
              If true (the default), then any write operation on an index that does not currently exist will create it. NOTES: (Corresponds to the parameter 'action.auto_create_index')
            - `enable_close_index` (boolean) — optional
              Defaults to false on versions <= 7.2.0, true otherwise. If false, then the API commands to close indices are disabled. This is important because Elasticsearch does not snapshot or migrate close indices on versions under 7.2.0, therefore standard Elastic Cloud configuration operations will cause irretrievable loss of indices' data. NOTES: (Corresponds to the parameter 'cluster.indices.close.enable')
            - `destructive_requires_name` (boolean) — optional
              If true (default is false) then the index deletion API will not support wildcards or '_all'. NOTES: (Corresponds to the parameter 'action.destructive_requires_name')
            - `watcher_trigger_engine` (string) — optional
              The trigger engine for Watcher, defaults to 'scheduler' - see the xpack documentation for more information. NOTES: (Corresponds to the parameter '(xpack.)watcher.trigger.schedule.engine', depending on version. Ignored from 6.x onwards.)
            - `default_shards_per_index` (integer) — optional
              (2.x only - to get the same result in 5.x template mappings must be used) Sets the default number of shards per index, defaulting to 1 if not specified. (Corresponds to the parameter 'index.number_of_shards' in 2.x, not supported in 5.x)
            - `monitoring_collection_interval` (integer) — optional
              The default interval at which monitoring information from the cluster if collected, if monitoring is enabled. NOTES: (Corresponds to the parameter 'marvel.agent.interval' in 2.x and 'xpack.monitoring.collection.interval' in 5.x)
            - `monitoring_history_duration` (string) — optional
              The duration for which monitoring history is stored (format '(NUMBER)d' eg '3d' for 3 days). NOTES: ('Corresponds to the parameter xpack.monitoring.history.duration' in 5.x, defaults to '7d')
          - `user_settings_json` (object) — optional
            An arbitrary JSON object allowing cluster owners to set their parameters (only one of this and 'user_settings_yaml' is allowed), provided the parameters arey are on the allowlist and not on the denylist. NOTES: (This field together with 'user_settings_override*' and 'system_settings' defines the total set of Elasticsearch settings)
          - `user_settings_yaml` (string) — optional
            An arbitrary YAML object allowing cluster owners to set their parameters (only one of this and 'user_settings_json' is allowed), provided the parameters arey are on the allowlist and not on the denylist. NOTES: (This field together with 'user_settings_override*' and 'system_settings' defines the total set of Elasticsearch settings)
          - `user_settings_override_json` (object) — optional
            An arbitrary JSON object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_yaml' is allowed), ie in addition to the documented 'system_settings'. NOTES: (This field together with 'system_settings' and 'user_settings*' defines the total set of Elasticsearch settings)
          - `user_settings_override_yaml` (string) — optional
            An arbitrary YAML object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_json' is allowed), ie in addition to the documented 'system_settings'. NOTES: (This field together with 'system_settings' and 'user_settings*' defines the total set of Elasticsearch settings)
          - `enabled_built_in_plugins` ([] string) — optional
            A list of plugin names from the Elastic-supported subset that are bundled with the version images. NOTES: (Users should consult the Elastic stack objects to see what plugins are available, this is currently only available from the UI)
          - `user_plugins` ([] ElasticsearchUserPlugin) — optional
            A list of admin-uploaded plugin objects that are available for this user.
            - `name` (string) — required
              The name of the plugin
            - `url` (string) — required
              The URL of the plugin (must be accessible from the ECE infrastructure)
            - `elasticsearch_version` (string) — required
              The supported Elasticsearch version (must match the version in the plan)
          - `user_bundles` ([] ElasticsearchUserBundle) — optional
            A list of admin-uploaded bundle objects (eg scripts, synonym files) that are available for this user.
            - `name` (string) — required
              The name of the bundle
            - `url` (string) — required
              The URL of the bundle, which must be accessible from the ECE infrastructure. This URL could be cached by platform, make sure to change it when updating the bundle
            - `elasticsearch_version` (string) — required
              The supported Elasticsearch version (must match the version in the plan)
          - `curation` ({} ElasticsearchCuration) — optional
            The structure that defines the routing settings for index curation.
            - `from_instance_configuration_id` (string) — required
              The source instance configuration
            - `to_instance_configuration_id` (string) — required
              The destination instance configuration
          - `node_attributes` (map string to string) — optional
            Defines the Elasticsearch node attributes for the instances in the topology
        - `instance_configuration_id` (string) — optional
          Controls the allocation of this topology element as well as allowed sizes and node_types. It needs to match the id of an existing instance configuration.
        - `instance_configuration_version` (integer) — optional
          The version of the Instance Configuration Id. If it is unset, the meaning depends on read vs writes. For deployment reads, it is equivalent to version 0 (or the IC is unversioned); for deployment creates and deployment template use, it is equivalent to 'the latest version'; and for deployment updates, it is equivalent to 'retain the current version'.
        - `size` ({} TopologySize) — optional
          Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
          - `value` (integer) — required
            Amount of resource
          - `resource` (enum) — required
            Type of resource. In ESS the resource used should always be `memory`.
            Values: `memory`, `storage`
        - `autoscaling_min` ({} TopologySize) — optional
          Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
          - `value` (integer) — required
            Amount of resource
          - `resource` (enum) — required
            Type of resource. In ESS the resource used should always be `memory`.
            Values: `memory`, `storage`
        - `autoscaling_max` ({} TopologySize) — optional
          Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
          - `value` (integer) — required
            Amount of resource
          - `resource` (enum) — required
            Type of resource. In ESS the resource used should always be `memory`.
            Values: `memory`, `storage`
        - `autoscaling_policy_override_json` (object) — optional
          An arbitrary JSON object overriding the default autoscaling policy. Don't set unless you really know what you are doing.
        - `topology_element_control` ({} TopologyElementControl) — optional
          Controls for the topology element. Only used as part of the deployment template. Ignored if included as part of a deployment.
          - `min` ({} TopologySize) — required
            Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
            - `value` (integer) — required
              Amount of resource
            - `resource` (enum) — required
              Type of resource. In ESS the resource used should always be `memory`.
              Values: `memory`, `storage`
        - `autoscaling_tier_override` (boolean) — optional
          Set to true to enable autoscaling for this topology element, even if the cluster-level 'autoscaling_enabled' field is false. Note that 'autoscaling_tier_override' cannot be set to false if cluster-level 'autoscaling_enabled' is true. Currently only supported for the 'ml' tier
      - `elasticsearch` ({} ElasticsearchConfiguration) — required
        The Elasticsearch cluster settings. When specified at the top level, provides a field-by-field default. When specified at the topology level, provides the override settings.
        Same fields as `elasticsearch` in `cluster_topology`
      - `deployment_template` ({} DeploymentTemplateReference) — optional
        Specifies the deployment template used to create the plan.
        - `id` (string) — required
          The unique identifier of the deployment template
        - `version` (string) — optional
          A version identifier to disambiguate multiple revisions of the same template
      - `transient` ({} TransientElasticsearchPlanConfiguration) — optional
        Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Elasticsearch settings.
        - `strategy` ({} PlanStrategy) — optional
          The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
          - `rolling` ({} RollingStrategyConfig) — optional
            Performs inline, rolling configuration changes that mutate existing containers. TIP: This is the fastest way to update a plan, but can fail for complex plan changes, such as topology changes. Also, this is less safe for configuration changes that leave a cluster in a non running state. NOTE: When you perform a major version upgrade, and 'group_by' is set to 'pass:macros[__all__]';, rolling is required.
            - `group_by` (string) — optional
              Specifies the grouping attribute to use when rolling several instances. Instances that share the same value for the provided attribute key are rolled together as a unit. Examples that make sense to use are '\_\_all\_\_' (roll all instances as a single unit), 'logical_zone_name' (roll instances by zone), '\_\_name\_\_' (roll one instance at a time, the default if not specified). Note that '\_\_all\_\_' is required when performing a major version upgrade
            - `allow_inline_resize` (boolean) — optional
              Whether we allow changing the capacity of instances (default false). This is currently implemented by stopping, re-creating then starting the affected instance on its associated allocator when performing the changes. NOTES: This requires a round-trip through the allocation infrastructure of the active constructor, as it has to reserve the target capacity without over-committing
            - `skip_synced_flush` (boolean) — optional
              Whether to skip attempting to do a synced flush on the filesystem of the container (default: false), which is less safe but may be required if the container is unhealthy
            - `shard_init_wait_time` (integer) — optional
              The time, in seconds, to wait for shards that show no progress of initializing before rolling the next group (default: 10 minutes)
          - `grow_and_shrink` (GrowShrinkStrategyConfig) — optional
            A strategy that creates instances with the new plan, migrates data from the old instances, then shuts down the old instances. `GrowShrinkStrategyConfig` is safer than 'rolling' and ensures single node availability during a plan change, but can be a lot slower on larger clusters.
          - `rolling_grow_and_shrink` (RollingGrowShrinkStrategyConfig) — optional
            A strategy that creates new Elasticsearch instances, Kibana instances, and APM Servers with the new plan, then migrates the node data to minimize the amount of spare capacity.
          - `autodetect` (AutodetectStrategyConfig) — optional
            A strategy that lets constructor choose the most optimal way to execute the plan.
        - `plan_configuration` ({} ElasticsearchPlanControlConfiguration) — optional
          The configuration settings for the timeout and fallback parameters.
          - `timeout` (integer) — optional
            The total timeout in seconds after which the plan is cancelled even if it is not complete. Defaults to 4x the max memory capacity per node (in MB). NOTES: A 3 zone cluster with 2 nodes of 2048 each would have a timeout of 4*2048=8192 seconds. Timeout does not include time required to run rollback actions.
          - `calm_wait_time` (integer) — optional
            This timeout determines how long to give a cluster after it responds to API calls before performing actual operations on it. It defaults to 5s
          - `move_instances` ([] InstanceMoveRequest) — optional
            - `from` (string) — required
              The instance id that is going to be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `instance_down` (boolean) — optional
              Tells the infrastructure that the instance should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will automatically decide (currently: will treat the instances as up)
          - `move_allocators` ([] AllocatorMoveRequest) — optional
            - `from` (string) — required
              The allocator id off which all instances in the cluster should be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance(s) should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `allocator_down` (boolean) — optional
              Tells the infrastructure that all instances on the allocator should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will auto-decide (currently: will treat the allocator as up)
          - `move_only` (boolean) — optional
            If true (default: false) only move_instances and move_allocators instructions will be executed, all other changes will be ignored
          - `reallocate_instances` (boolean) — optional
            If true (default: false) does not allow re-using any existing instances currently in the cluster, ie even unchanged instances will be re-created
          - `preferred_allocators` ([] string) — optional
            List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)
          - `preferred_allocator_tags` (map string to string) — optional
            Map containing allocators tags in form of key value pairs, increasing the likelihood during move requests for allocators with matching tags, to be selected as target allocators
          - `skip_snapshot` (boolean) — optional
            If true (default: false), does not take (or require) a successful snapshot to be taken before performing any potentially destructive changes to this cluster
          - `max_snapshot_attempts` (integer) — optional
            If taking a snapshot (ie unless 'skip_snapshots': true) then will retry on failure at most this number of times (default: 5)
          - `max_snapshot_age` (integer) — optional
            When you take a snapshot and 'skip_snapshots' is false, specifies the maximum age in seconds of the most recent snapshot before a new snapshot is created. Default is 300
          - `extended_maintenance` (boolean) — optional
            If true (default false), does not clear the maintenance flag (which prevents its API from being accessed except by the constructor) on new instances added until after a snapshot has been restored, otherwise, the maintenance flag is cleared once the new instances successfully join the new cluster
          - `cluster_reboot` (enum) — optional
            Set to 'forced' to force a reboot as part of the upgrade plan. NOTES: (ie taking an existing plan and leaving it alone except for setting 'transient.plan_configuration.cluster_reboot': 'forced' will reboot the cluster)
            Values: `forced`
          - `override_failsafe` (boolean) — optional
            If false (the default) then the plan will fail out if it believes the requested sequence of operations can result in data loss - this flag will override some of these restraints
          - `skip_data_migration` (boolean) — optional
            If true (default: false) then the plan will not wait for data to be migrated from old instances to new instances before continuing the plan (potentially deleting the old instances and losing data)
          - `skip_upgrade_checker` (boolean) — optional
            If false, the cluster is checked for issues that should be resolved before migration (eg contains old Lucene segments), if true this is bypassed
          - `skip_post_upgrade_steps` (boolean) — optional
            If false (the default), the cluster will run (currently) 2.x->5.x operations for any plan change ending with a 5.x cluster (eg apply a cluster license, ensure Monitoring is configured)
          - `skip_snapshot_post_major_upgrade` (boolean) — optional
            If false (the default), the cluster will perform a snapshot after a major version upgrade takes place
        - `restore_snapshot` ({} RestoreSnapshotConfiguration) — optional
          Restores a snapshot from a local or remote repository.
          - `repository_name` (string) — optional
            If specified, contains the name of the snapshot repository - else will default to the Elastic Cloud system repo ('found-snapshots')
          - `snapshot_name` (string) — required
            The name of the snapshot to restore. Use '\_\_latest_success\_\_' to get the most recent snapshot from the specified repository
          - `repository_config` ({} RestoreSnapshotRepoConfiguration) — optional
            Configures the location of a remote repository. The default is the system repository.
            - `raw_settings` (object) — optional
              The remote snapshot settings raw JSON - see the Elasticsearch '_snapshot' documentation for more details on supported formats
          - `restore_payload` ({} RestoreSnapshotApiConfiguration) — optional
            The configuration for the restore command, such as which indices you want to restore.
            - `indices` ([] string) — optional
              The list of indices to restore (supports +ve and -ve selection and wildcarding - see the default Elasticsearch index format documentation)
            - `raw_settings` (object) — optional
              This JSON object (merged with the 'indices' field (if present) is passed untouched into the restore command - see the Elasticsearch '_snapshot' documentation for more details on supported formats
          - `strategy` (enum) — optional
            The restore strategy to use. Defaults to a full restore. Partial restore will attempt to restore unavailable indices only
            Values: `partial`, `full`, `recovery`
          - `source_cluster_id` (string) — optional
            If specified, contains the name of the source cluster id. Do not send this if you are sending repository_config
        - `snapshot_dependency` ({} SnapshotDependencyConfiguration) — optional
          Configuration for attaching a snapshot repository dependency from another cluster. This creates a snapshot repository in the target cluster pointing to the source cluster's snapshots.
          - `source_cluster_id` (string) — required
            The cluster ID of the source cluster whose snapshots will be made available
        - `remote_clusters` ({} RemoteResources) — optional
          The list of resources used as remote clusters
          - `resources` ([] RemoteResourceRef) — required
            The remote resources
            - `deployment_id` (string) — required
              The id of the deployment
            - `elasticsearch_ref_id` (string) — required
              The locally-unique user-specified id of an Elasticsearch Resource
            - `alias` (string) — required
              The alias for this remote cluster. Aliases must only contain letters, digits, dashes and underscores
            - `skip_unavailable` (boolean) — optional
              If true, skip this cluster during search if it is disconnected. Default: false
            - `info` ({} RemoteResourceInfo) — optional
              Information about a Remote Cluster.
              - `healthy` (boolean) — required
                Whether or not the remote cluster is healthy
              - `connected` (boolean) — required
                Whether or not there is at least one connection to the remote cluster.
              - `compatible` (boolean) — required
                Whether or not the remote cluster version is compatible with this cluster version.
              - `trusted` (boolean) — required
                Whether or not the remote cluster is trusted by this cluster.
              - `trusted_back` (boolean) — required
                Whether or not the remote cluster trusts this cluster back.
        - `cluster_settings_json` (object) — optional
          If specified, contains transient settings to be applied to an Elasticsearch cluster during changes,default values shown below applied.
These can be overridden by specifying them in the map (or null to unset). Additional settings can also be set. Settings will be cleared after the plan has finished. If not specified, no settings will be applied.
NOTE: These settings are only explicitly cleared for 5.x+ clusters, they must be hand-reset to their defaults in 2.x- (or a cluster reboot will clear them).
- indices.store.throttle.max_bytes_per_sec: 120Mb
- indices.recovery.max_bytes_per_sec: 120Mb
- cluster.routing.allocation.cluster_concurrent_rebalance: 5
- cluster.routing.allocation.node_initial_primaries_recoveries: 5
- cluster.routing.allocation.node_concurrent_incoming_recoveries: 5
For version 8.1 and later no defaults are provided through this mechanism, but instead hardware dependent settings are provided to each instance.
      - `autoscaling_enabled` (boolean) — optional
        Enable autoscaling for this Elasticsearch cluster.
    - `settings` ({} ElasticsearchClusterSettings) — optional
      The settings for an Elasticsearch cluster.
      - `snapshot` ({} ClusterSnapshotSettings) — optional
        The snapshot configuration settings for an Elasticsearch cluster.
        - `repository` ({} ClusterSnapshotRepositoryInfo) — optional
          Information about the Elasticsearch cluster snapshot repository.
          - `static` ({} ClusterSnapshotRepositoryStatic) — optional
            The static object for the Elasticsearch cluster snapshot repository.
            - `repository_type` (string) — optional
              Type of snapshot repository, ie: S3
            - `settings` (object) — optional
              Settings associated with snapshot repository
          - `reference` ({} ClusterSnapshotRepositoryReference) — optional
            The reference object for the Elasticsearch cluster snapshot repository.
            - `repository_name` (string) — optional
              ECE snapshot repository name, from the '/platform/configuration/snapshots/repositories' endpoint
          - `default` (ClusterSnapshotRepositoryDefault) — optional
            The default object for the Elasticsearch cluster snapshot repository.
        - `interval` (string) — optional
          Interval between snapshots, with the format 'length unit' (space is optional), where unit can be one of: d (day), h (hour), min (minute). Default is 30 minutes
        - `pending_interval` (string) — optional
          Interval between snapshot progress checks, with the format 'length unit' (space is optional), where unit can be one of: d (day), h (hour), min (minute). Default is 1 minute
        - `wait_time_after_snapshotting` (string) — optional
          The time to wait between snapshot phases (snapshot, purge), with the format 'length unit' (space is optional), where unit can be one of: d (day), h (hour), min (minute). Default is 10 minutes
        - `enabled` (boolean) — optional
          Indicates if Snapshotting is enabled
        - `suspended` ([] string) — optional
          List of temporary snapshot suspensions
        - `retention` ({} ClusterSnapshotRetention) — optional
          Information about the Elasticsearch cluster snapshot retention.
          - `snapshots` (integer) — optional
            Number of snapshots to retain
          - `max_age` (string) — optional
            Total retention period for all snapshots, with the format 'length unit' (space is optional), where unit can be one of: d (day), h (hour), min (minute)
        - `slm` (boolean) — optional
          When set to true, the deployment will have SLM enabled. Default value is true.
        - `cron_expression` (string) — optional
          Cron expression indicating when should snapshots be taken. This can be enabled only if SLM is enabled for the deployment and 'interval' is not present
      - `monitoring` ({} ManagedMonitoringSettings) — optional
        The settings for sending monitoring information to another cluster.
        - `target_cluster_id` (string) — required
          The Id of the target cluster to which to send monitoring information
      - `metadata` ({} ClusterMetadataSettings) — optional
        The top-level configuration settings for the Elasticsearch cluster.
        - `name` (string) — optional
          The display name of the cluster
        - `owner_id` (string) — optional
          The user id (referencing whatever user database is in use) of the cluster owner
        - `organization_id` (string) — optional
          The organization that owns the deployment
        - `subscription_level` (string) — optional
          Subscription level of the cluster
        - `system_owned` (boolean) — optional
          Indicates if a cluster is system owned (restricts the set of operations that can be performed on it)
        - `contact_email` (string) — optional
          Contact email for the cluster
        - `hidden` (boolean) — optional
          Whether or not this cluster is hidden from the normal clusters list
        - `resources` ({} ClusterMetadataResourcesSettings) — optional
          The top-level configuration settings for the Elasticsearch cluster resources.
          - `cpu` ({} ClusterMetadataCpuResourcesSettings) — optional
            Specifies the CPU resource settings for the Elasticsearch cluster.
            - `boost` (boolean) — optional
              Indicates if the CPU boost flag is enabled or not.
            - `hard_limit` (boolean) — optional
              Indicates if the CPU hard limit flag is enabled or not. When set to true (default), allocates CPU timeshare based on the total CPU time multiplied by the relative RAM capacity of the instance on a given host. When set to false, delegates CPU allocation to the operating system to schedule CPU timeshares.
      - `curation` ({} ClusterCurationSettings) — optional
        The index curation settings for an Elasticsearch cluster.
        - `specs` ([] ClusterCurationSpec) — required
          Specifications for curation
          - `index_pattern` (string) — required
            Index matching pattern
          - `trigger_interval_seconds` (integer) — required
            Number of seconds after index creation to trigger this spec
      - `dedicated_masters_threshold` (integer) — optional
        Threshold starting from which the number of instances in the cluster results in the introduction of dedicated masters. If the cluster is downscaled to a number of nodes below this one, dedicated masters will be removed. Limit is inclusive. When provided the threshold setting is updated. A `null` value removes the field. Otherwise, the setting remains as it was set previously.
      - `traffic_filter` ({} TrafficFilterSettings) — optional
        The configuration settings for the traffic filter.
        - `rulesets` ([] string) — required
          IDs of the traffic filter rulesets
      - `trust` ({} ElasticsearchClusterTrustSettings) — optional
        Configuration of trust with other clusters.
        - `accounts` ([] AccountTrustRelationship) — optional
          The list of trust relationships with different accounts
          - `account_id` (string) — required
            the ID of the Account
          - `name` (string) — optional
            A human readable name of the trust relationship
          - `trust_all` (boolean) — required
            If true, all clusters in this account will by default be trusted and the `trust_allowlist` is ignored.
          - `trust_allowlist` ([] string) — optional
            The list of clusters to trust. Only used when `trust_all` is false.
        - `external` ([] ExternalTrustRelationship) — optional
          The list of trust relationships with external entities
          - `trust_relationship_id` (string) — required
            The ID of the external trust relationship
          - `name` (string) — optional
            The name of the external trust relationship. Retrieved from the TrustRelationship and ignored on write.
          - `trust_all` (boolean) — required
            If true, all clusters in this external entity will be trusted and the `trust_allowlist` is ignored.
          - `trust_allowlist` ([] string) — optional
            The list of clusters to trust. Only used when `trust_all` is false.
        - `direct` ([] DirectTrustRelationship) — optional
          The list of trust relationships where the certificate is bundled with the trust setting. Allows configuring trust for clusters running outside of an Elastic Cloud managed environment or in an Elastic Cloud environment without an environment level trust established.
          - `uid` (string) — optional
            Auto generated identifier for this trust, allows distinguishing between update vs remove and add.
          - `name` (string) — required
            a human readable name of the trust relationship
          - `type` (enum) — optional
            The type can either be ESS, ECE, generic or proxy. If none is specified, then generic is assumed. If proxy is specified, trust_all should be false and trust_allowlist, scope_id and additional_node_names should be omitted.
            Values: `ECE`, `ESS`, `generic`, `proxy`
          - `trust_all` (boolean) — required
            If true, scope_id is required and the `trust_allowlist` is ignored and all clusters matching the scope id will be trusted.
          - `trust_allowlist` ([] string) — optional
            The list of clusters with matching scope to trust. Only used when `trust_all` is false. Providing one or more clusters makes scope_id mandatory.
          - `scope_id` (string) — optional
            A lowercase alphanumerical string of max 32 characters. Usually an organization id or an environment id, but could really be any suitable suffix for clusters using the CA certificate of this trust. Required unless trust_all is false and trust_allowlist is empty.
          - `additional_node_names` ([] string) — optional
            A list of node names trusted in addition to those deducible from trust_allowlist and scope id. Allows trusting nodes that don't have a scoped name at the cost of maintaining the list. Mandatory if scope id is not defined. Wildcards are not allowed.
          - `certificates` ([] TrustedCertificate) — required
            The public ca certificate(s) to trust. Only one is required, but it is possible to specify multiple certificates in order to facilitate key rotation.
            - `pem` (string) — required
              The public ca certificate as string in PEM format.
            - `metadata` ({} CertificateMetaData) — optional
              The certificate MetaData
              - `fingerprint` (string) — required
                The fingerprint of the certificate
              - `valid_to` (string) — required
                The expiry date of the certificate in UTC
              - `valid_from` (string) — required
                The valid from date of the certificate in UTC
              - `also_trusted_by` ([] string) — optional
                Other deployments also trusting this certificate
      - `keystore_contents` ({} KeystoreContents) — optional
        The contents of the Elasticsearch keystore.
        - `secrets` (map string to KeystoreSecret) — required
          List of secrets
          Map values ({} KeystoreSecret)
          - `value` (object) — optional
            Value of this setting. This can either be a string or a JSON object that is stored as a JSON string in the keystore. NOTE: When the keystore secret is unspecified, it is removed.
          - `as_file` (boolean) — optional
            Stores the keystore secret as a file. The default is false, which stores the keystore secret as string when value is a plain string, or true when value is an object.
          - `is_allowlisted` (boolean) — optional
            Read-only field, ignored on write. Only returned when calling the set-deployment-es-resource-keystore endpoint with `validate_only=true`. True if this setting/value pair is allowlisted (the allowlist is for informational purposes).
          - `is_reloadable` (boolean) — optional
            Read-only field, ignored on write. Only returned when calling the set-deployment-es-resource-keystore endpoint with `validate_only=true`. True if this setting is reloadable, or if false it requires a cluster restart.
  - `kibana` ([] KibanaPayload) — optional
    A list of payloads for Kibana updates
    - `ref_id` (string) — required
      A locally-unique user-specified id for Kibana
    - `elasticsearch_cluster_ref_id` (string) — required
      Alias to the Elasticsearch Cluster to attach Kibana to
    - `display_name` (string) — optional
      The human readable name for the Kibana cluster (default: takes the name of its Elasticsearch cluster)
    - `region` (string) — required
      The region where this resource exists
    - `plan` ({} KibanaClusterPlan) — required
      The plan for the Kibana instance.
      - `cluster_topology` ([] KibanaClusterTopologyElement) — optional
        - `memory_per_node` (integer) — optional
          The memory capacity in MB for each node of this type built in each zone.
        - `node_count_per_zone` (integer) — optional
          The number of nodes of this type that are allocated within each zone (i.e. total capacity per zone = `node_count_per_zone` * `memory_per_node` in MB).
        - `instance_configuration_id` (string) — optional
          Controls the allocation of this topology element as well as allowed sizes and node_types. It needs to match the id of an existing instance configuration.
        - `instance_configuration_version` (integer) — optional
          The version of the Instance Configuration Id. If it is unset, the meaning depends on read vs writes. For deployment reads, it is equivalent to version 0 (or the IC is unversioned); for deployment creates and deployment template use, it is equivalent to 'the latest version'; and for deployment updates, it is equivalent to 'retain the current version'.
        - `size` ({} TopologySize) — optional
          Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
          - `value` (integer) — required
            Amount of resource
          - `resource` (enum) — required
            Type of resource. In ESS the resource used should always be `memory`.
            Values: `memory`, `storage`
        - `zone_count` (integer) — optional
          number of zones in which nodes will be placed
        - `kibana` ({} KibanaConfiguration) — optional
          The Kibana instance settings. When specified at the top level, provides a field-by-field default. When specified at the topology level, provides the override settings.
          - `version` (string) — optional
            The version of the Kibana cluster (must be one of the ECE supported versions, and won't work unless it matches the Elasticsearch version. Leave blank to auto-detect version.)
          - `docker_image` (string) — optional
            A docker URI that allows overriding of the default docker image specified for this version
          - `system_settings` ({} KibanaSystemSettings) — optional
            A subset of Kibana settings. TIP: To define the complete set of Elasticsearch settings, use `KibanaSystemSettings` with `user_settings_override_` and `user_settings_`.
            - `elasticsearch_username` (string) — optional
              Optionally override the account within Elasticsearch - defaults to a system account that always exists (if specified, the password must also be specified). Note that this field is never returned from the API, it is write only.
            - `elasticsearch_password` (string) — optional
              Optionally override the account within Elasticsearch - defaults to a system account that always exists (if specified, the username must also be specified). Note that this field is never returned from the API, it is write only.
          - `user_settings_json` (object) — optional
            An arbitrary JSON object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_yaml' is allowed), provided the parameters are on the allowlist and not on the denylist. (This field together with 'user_settings_override*' and 'system_settings' defines the total set of Kibana settings)
          - `user_settings_yaml` (string) — optional
            An arbitrary YAML object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_json' is allowed), provided the parameters are on the allowlist and not on the denylist. (These field together with 'user_settings_override*' and 'system_settings' defines the total set of Kibana settings)
          - `user_settings_override_json` (object) — optional
            An arbitrary JSON object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_yaml' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Kibana settings)
          - `user_settings_override_yaml` (string) — optional
            An arbitrary YAML object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_json' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Kibana settings)
      - `kibana` ({} KibanaConfiguration) — required
        The Kibana instance settings. When specified at the top level, provides a field-by-field default. When specified at the topology level, provides the override settings.
        - `version` (string) — optional
          The version of the Kibana cluster (must be one of the ECE supported versions, and won't work unless it matches the Elasticsearch version. Leave blank to auto-detect version.)
        - `docker_image` (string) — optional
          A docker URI that allows overriding of the default docker image specified for this version
        - `system_settings` ({} KibanaSystemSettings) — optional
          A subset of Kibana settings. TIP: To define the complete set of Elasticsearch settings, use `KibanaSystemSettings` with `user_settings_override_` and `user_settings_`.
          - `elasticsearch_username` (string) — optional
            Optionally override the account within Elasticsearch - defaults to a system account that always exists (if specified, the password must also be specified). Note that this field is never returned from the API, it is write only.
          - `elasticsearch_password` (string) — optional
            Optionally override the account within Elasticsearch - defaults to a system account that always exists (if specified, the username must also be specified). Note that this field is never returned from the API, it is write only.
        - `user_settings_json` (object) — optional
          An arbitrary JSON object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_yaml' is allowed), provided the parameters are on the allowlist and not on the denylist. (This field together with 'user_settings_override*' and 'system_settings' defines the total set of Kibana settings)
        - `user_settings_yaml` (string) — optional
          An arbitrary YAML object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_json' is allowed), provided the parameters are on the allowlist and not on the denylist. (These field together with 'user_settings_override*' and 'system_settings' defines the total set of Kibana settings)
        - `user_settings_override_json` (object) — optional
          An arbitrary JSON object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_yaml' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Kibana settings)
        - `user_settings_override_yaml` (string) — optional
          An arbitrary YAML object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_json' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Kibana settings)
      - `transient` ({} TransientKibanaPlanConfiguration) — optional
        Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Kibana instance settings.
        - `strategy` ({} PlanStrategy) — optional
          The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
          - `rolling` ({} RollingStrategyConfig) — optional
            Performs inline, rolling configuration changes that mutate existing containers. TIP: This is the fastest way to update a plan, but can fail for complex plan changes, such as topology changes. Also, this is less safe for configuration changes that leave a cluster in a non running state. NOTE: When you perform a major version upgrade, and 'group_by' is set to 'pass:macros[__all__]';, rolling is required.
            - `group_by` (string) — optional
              Specifies the grouping attribute to use when rolling several instances. Instances that share the same value for the provided attribute key are rolled together as a unit. Examples that make sense to use are '\_\_all\_\_' (roll all instances as a single unit), 'logical_zone_name' (roll instances by zone), '\_\_name\_\_' (roll one instance at a time, the default if not specified). Note that '\_\_all\_\_' is required when performing a major version upgrade
            - `allow_inline_resize` (boolean) — optional
              Whether we allow changing the capacity of instances (default false). This is currently implemented by stopping, re-creating then starting the affected instance on its associated allocator when performing the changes. NOTES: This requires a round-trip through the allocation infrastructure of the active constructor, as it has to reserve the target capacity without over-committing
            - `skip_synced_flush` (boolean) — optional
              Whether to skip attempting to do a synced flush on the filesystem of the container (default: false), which is less safe but may be required if the container is unhealthy
            - `shard_init_wait_time` (integer) — optional
              The time, in seconds, to wait for shards that show no progress of initializing before rolling the next group (default: 10 minutes)
          - `grow_and_shrink` (GrowShrinkStrategyConfig) — optional
            A strategy that creates instances with the new plan, migrates data from the old instances, then shuts down the old instances. `GrowShrinkStrategyConfig` is safer than 'rolling' and ensures single node availability during a plan change, but can be a lot slower on larger clusters.
          - `rolling_grow_and_shrink` (RollingGrowShrinkStrategyConfig) — optional
            A strategy that creates new Elasticsearch instances, Kibana instances, and APM Servers with the new plan, then migrates the node data to minimize the amount of spare capacity.
          - `autodetect` (AutodetectStrategyConfig) — optional
            A strategy that lets constructor choose the most optimal way to execute the plan.
        - `plan_configuration` ({} KibanaPlanControlConfiguration) — optional
          The configuration settings for the timeout and fallback parameters.
          - `timeout` (integer) — optional
            The total timeout in seconds after which the plan is cancelled even if it is not complete. Defaults to 4x the max memory capacity per node (in MB)
          - `calm_wait_time` (integer) — optional
            This timeout determines how long to give a cluster after it responds to API calls before performing actual operations on it. It defaults to 5s
          - `move_instances` ([] InstanceMoveRequest) — optional
            - `from` (string) — required
              The instance id that is going to be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `instance_down` (boolean) — optional
              Tells the infrastructure that the instance should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will automatically decide (currently: will treat the instances as up)
          - `move_allocators` ([] AllocatorMoveRequest) — optional
            - `from` (string) — required
              The allocator id off which all instances in the cluster should be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance(s) should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `allocator_down` (boolean) — optional
              Tells the infrastructure that all instances on the allocator should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will auto-decide (currently: will treat the allocator as up)
          - `reallocate_instances` (boolean) — optional
            If true (default: false) does not allow re-using any existing instances currently in the cluster, ie even unchanged instances will be re-created
          - `preferred_allocators` ([] string) — optional
            List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)
          - `preferred_allocator_tags` (map string to string) — optional
            Map containing allocators tags in form of key value pairs, increasing the likelihood during move requests for allocators with matching tags, to be selected as target allocators
          - `extended_maintenance` (boolean) — optional
            If true (default false), does not clear the maintenance flag (which prevents its API from being accessed except by the constructor) on new instances added until after a snapshot has been restored, otherwise, the maintenance flag is cleared once the new instances successfully join the new cluster
          - `cluster_reboot` (enum) — optional
            Set to 'forced' to force a reboot as part of the upgrade plan
            Values: `forced`
          - `override_failsafe` (boolean) — optional
            If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.
    - `settings` ({} KibanaClusterSettings) — optional
      The settings for multiple Kibana instances.
      - `metadata` ({} ClusterMetadataSettings) — optional
        The top-level configuration settings for the Elasticsearch cluster.
        Same fields as `metadata` in `settings`
  - `apm` ([] ApmPayload) — optional
    A list of payloads for APM updates
    - `ref_id` (string) — required
      A locally-unique user-specified id for APM
    - `elasticsearch_cluster_ref_id` (string) — required
      Alias to the Elasticsearch Cluster to attach APM to
    - `display_name` (string) — optional
      The human readable name for the APM cluster (default: takes the name of its Elasticsearch cluster)
    - `region` (string) — required
      The region where this resource exists
    - `plan` ({} ApmPlan) — required
      The plan for the APM Server.
      - `cluster_topology` ([] ApmTopologyElement) — optional
        - `instance_configuration_id` (string) — optional
          Controls the allocation of this topology element as well as allowed sizes and node_types. It needs to match the id of an existing instance configuration.
        - `instance_configuration_version` (integer) — optional
          The version of the Instance Configuration Id. If it is unset, the meaning depends on read vs writes. For deployment reads, it is equivalent to version 0 (or the IC is unversioned); for deployment creates and deployment template use, it is equivalent to 'the latest version'; and for deployment updates, it is equivalent to 'retain the current version'.
        - `size` ({} TopologySize) — optional
          Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
          - `value` (integer) — required
            Amount of resource
          - `resource` (enum) — required
            Type of resource. In ESS the resource used should always be `memory`.
            Values: `memory`, `storage`
        - `zone_count` (integer) — optional
          number of zones in which nodes will be placed
        - `apm` ({} ApmConfiguration) — optional
          The configuration options for the APM Server.
          - `version` (string) — optional
            The version of the Apm cluster (must be one of the ECE supported versions, and won't work unless it matches the APM version. Leave blank to auto-detect version.)
          - `docker_image` (string) — optional
            A docker URI that allows overriding of the default docker image specified for this version
          - `system_settings` ({} ApmSystemSettings) — optional
            A structure that defines a curated subset of the APM Server settings. 
TIP: To define the complete set of APM Server setting, use `ApmSystemSettings` with `user_settings_override_` and `user_settings_`.
            - `elasticsearch_username` (string) — optional
              Optionally override the account within APM - defaults to a system account that always exists (if specified, the password must also be specified). Note that this field is never returned from the API, it is write only.
            - `elasticsearch_password` (string) — optional
              Optionally override the account within APM - defaults to a system account that always exists (if specified, the username must also be specified). Note that this field is never returned from the API, it is write only.
            - `secret_token` (string) — optional
              Optionally override the secret token within APM - defaults to the previously existing secretToken
            - `debug_enabled` (boolean) — optional
              Optionally enable debug mode for APM servers - defaults false
          - `user_settings_json` (object) — optional
            An arbitrary JSON object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_yaml' is allowed), provided the parameters are on the allowlist and not on the denylist. (This field together with 'user_settings_override*' and 'system_settings' defines the total set of Apm settings)
          - `user_settings_yaml` (string) — optional
            An arbitrary YAML object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_json' is allowed), provided the parameters are on the allowlist and not on the denylist. (These field together with 'user_settings_override*' and 'system_settings' defines the total set of Apm settings)
          - `user_settings_override_json` (object) — optional
            An arbitrary JSON object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_yaml' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Apm settings)
          - `user_settings_override_yaml` (string) — optional
            An arbitrary YAML object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_json' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Apm settings)
      - `apm` ({} ApmConfiguration) — required
        The configuration options for the APM Server.
        Same fields as `apm` in `cluster_topology`
      - `transient` ({} TransientApmPlanConfiguration) — optional
        Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and APM Server settings.
        - `strategy` ({} PlanStrategy) — optional
          The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
          - `rolling` ({} RollingStrategyConfig) — optional
            Performs inline, rolling configuration changes that mutate existing containers. TIP: This is the fastest way to update a plan, but can fail for complex plan changes, such as topology changes. Also, this is less safe for configuration changes that leave a cluster in a non running state. NOTE: When you perform a major version upgrade, and 'group_by' is set to 'pass:macros[__all__]';, rolling is required.
            - `group_by` (string) — optional
              Specifies the grouping attribute to use when rolling several instances. Instances that share the same value for the provided attribute key are rolled together as a unit. Examples that make sense to use are '\_\_all\_\_' (roll all instances as a single unit), 'logical_zone_name' (roll instances by zone), '\_\_name\_\_' (roll one instance at a time, the default if not specified). Note that '\_\_all\_\_' is required when performing a major version upgrade
            - `allow_inline_resize` (boolean) — optional
              Whether we allow changing the capacity of instances (default false). This is currently implemented by stopping, re-creating then starting the affected instance on its associated allocator when performing the changes. NOTES: This requires a round-trip through the allocation infrastructure of the active constructor, as it has to reserve the target capacity without over-committing
            - `skip_synced_flush` (boolean) — optional
              Whether to skip attempting to do a synced flush on the filesystem of the container (default: false), which is less safe but may be required if the container is unhealthy
            - `shard_init_wait_time` (integer) — optional
              The time, in seconds, to wait for shards that show no progress of initializing before rolling the next group (default: 10 minutes)
          - `grow_and_shrink` (GrowShrinkStrategyConfig) — optional
            A strategy that creates instances with the new plan, migrates data from the old instances, then shuts down the old instances. `GrowShrinkStrategyConfig` is safer than 'rolling' and ensures single node availability during a plan change, but can be a lot slower on larger clusters.
          - `rolling_grow_and_shrink` (RollingGrowShrinkStrategyConfig) — optional
            A strategy that creates new Elasticsearch instances, Kibana instances, and APM Servers with the new plan, then migrates the node data to minimize the amount of spare capacity.
          - `autodetect` (AutodetectStrategyConfig) — optional
            A strategy that lets constructor choose the most optimal way to execute the plan.
        - `plan_configuration` ({} ApmPlanControlConfiguration) — optional
          The plan control configuration options for the APM Server.
          - `timeout` (integer) — optional
            The total timeout in seconds after which the plan is cancelled even if it is not complete. Defaults to 4x the max memory capacity per node (in MB)
          - `calm_wait_time` (integer) — optional
            This timeout determines how long to give a cluster after it responds to API calls before performing actual operations on it. It defaults to 5s
          - `move_instances` ([] InstanceMoveRequest) — optional
            - `from` (string) — required
              The instance id that is going to be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `instance_down` (boolean) — optional
              Tells the infrastructure that the instance should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will automatically decide (currently: will treat the instances as up)
          - `move_allocators` ([] AllocatorMoveRequest) — optional
            - `from` (string) — required
              The allocator id off which all instances in the cluster should be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance(s) should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `allocator_down` (boolean) — optional
              Tells the infrastructure that all instances on the allocator should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will auto-decide (currently: will treat the allocator as up)
          - `reallocate_instances` (boolean) — optional
            If true (default: false) does not allow re-using any existing instances currently in the cluster, ie even unchanged instances will be re-created
          - `preferred_allocators` ([] string) — optional
            List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)
          - `preferred_allocator_tags` (map string to string) — optional
            Map containing allocators tags in form of key value pairs, increasing the likelihood during move requests for allocators with matching tags, to be selected as target allocators
          - `extended_maintenance` (boolean) — optional
            If true (default false), does not clear the maintenance flag (which prevents its API from being accessed except by the constructor) on new instances added until after a snapshot has been restored, otherwise, the maintenance flag is cleared once the new instances successfully join the new cluster
          - `cluster_reboot` (enum) — optional
            Set to 'forced' to force a reboot as part of the upgrade plan
            Values: `forced`
          - `override_failsafe` (boolean) — optional
            If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.
    - `settings` ({} ApmSettings) — optional
      The settings for the APM Server.
      - `metadata` ({} ClusterMetadataSettings) — optional
        The top-level configuration settings for the Elasticsearch cluster.
        Same fields as `metadata` in `settings`
  - `appsearch` ([] AppSearchPayload) — optional
    A list of payloads for AppSearch updates. AppSearch has been replaced by Enterprise Search in the Elastic Stack 7.7 and higher
    - `ref_id` (string) — required
      A locally-unique user-specified id for AppSearch
    - `elasticsearch_cluster_ref_id` (string) — required
      Alias to the Elasticsearch Cluster to attach AppSearch to
    - `display_name` (string) — optional
      The human readable name for the AppSearch cluster (default: takes the name of its Elasticsearch cluster)
    - `region` (string) — required
      The region where this resource exists
    - `plan` ({} AppSearchPlan) — required
      The plan for the App Search cluster.
      - `cluster_topology` ([] AppSearchTopologyElement) — optional
        - `node_type` ({} AppSearchNodeTypes) — optional
          Node types to enable for an AppSearch instance
          - `appserver` (boolean) — required
            Defines whether this instance should run as Application/API server
          - `worker` (boolean) — required
            Defines whether this instance should run as background worker
        - `instance_configuration_id` (string) — optional
          Controls the allocation of this topology element as well as allowed sizes and node_types. It needs to match the id of an existing instance configuration.
        - `instance_configuration_version` (integer) — optional
          The version of the Instance Configuration Id. If it is unset, the meaning depends on read vs writes. For deployment reads, it is equivalent to version 0 (or the IC is unversioned); for deployment creates and deployment template use, it is equivalent to 'the latest version'; and for deployment updates, it is equivalent to 'retain the current version'.
        - `size` ({} TopologySize) — optional
          Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
          - `value` (integer) — required
            Amount of resource
          - `resource` (enum) — required
            Type of resource. In ESS the resource used should always be `memory`.
            Values: `memory`, `storage`
        - `zone_count` (integer) — optional
          number of zones in which nodes will be placed
        - `appsearch` ({} AppSearchConfiguration) — optional
          - `version` (string) — optional
            The version of the AppSearch cluster (must be one of the ECE supported versions, and won't work unless it matches the Elasticsearch version. Leave blank to auto-detect version.)
          - `docker_image` (string) — optional
            A docker URI that allows overriding of the default docker image specified for this version
          - `system_settings` ({} AppSearchSystemSettings) — optional
            This structure defines a curated subset of the AppSearch settings. (This field together with 'user_settings_override*' and  'user_settings*' defines the total set of AppSearch settings)
            - `elasticsearch_url` (string) — optional
              Optionally override the URL to which to send data (for advanced users only, if unspecified the system selects an internal URL)
            - `elasticsearch_username` (string) — optional
              Optionally override the account within App Search - defaults to a system account that always exists (if specified, the password must also be specified). Note that this field is never returned from the API, it is write only.
            - `elasticsearch_password` (string) — optional
              Optionally override the account within App Search - defaults to a system account that always exists (if specified, the username must also be specified). Note that this field is never returned from the API, it is write only.
            - `secret_session_key` (string) — optional
              Optionally override the secret session key within App Search - defaults to the previously existing secretSession. Note that this field is never returned from the API, it is write only.
          - `user_settings_json` (object) — optional
            An arbitrary JSON object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_yaml' is allowed), provided the parameters are on the allowlist and not on the denylist. (This field together with 'user_settings_override*' and 'system_settings' defines the total set of AppSearch settings)
          - `user_settings_yaml` (string) — optional
            An arbitrary YAML object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_json' is allowed), provided the parameters are on the allowlist and not on the denylist. (These field together with 'user_settings_override*' and 'system_settings' defines the total set of AppSearch settings)
          - `user_settings_override_json` (object) — optional
            An arbitrary JSON object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_yaml' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of AppSearch settings)
          - `user_settings_override_yaml` (string) — optional
            An arbitrary YAML object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_json' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of AppSearch settings)
      - `appsearch` ({} AppSearchConfiguration) — required
        Same fields as `appsearch` in `cluster_topology`
      - `transient` ({} TransientAppSearchPlanConfiguration) — optional
        Defines configuration parameters that control how the plan (ie consisting of the cluster topology and AppSearch settings) is applied
        - `strategy` ({} PlanStrategy) — optional
          The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
          - `rolling` ({} RollingStrategyConfig) — optional
            Performs inline, rolling configuration changes that mutate existing containers. TIP: This is the fastest way to update a plan, but can fail for complex plan changes, such as topology changes. Also, this is less safe for configuration changes that leave a cluster in a non running state. NOTE: When you perform a major version upgrade, and 'group_by' is set to 'pass:macros[__all__]';, rolling is required.
            - `group_by` (string) — optional
              Specifies the grouping attribute to use when rolling several instances. Instances that share the same value for the provided attribute key are rolled together as a unit. Examples that make sense to use are '\_\_all\_\_' (roll all instances as a single unit), 'logical_zone_name' (roll instances by zone), '\_\_name\_\_' (roll one instance at a time, the default if not specified). Note that '\_\_all\_\_' is required when performing a major version upgrade
            - `allow_inline_resize` (boolean) — optional
              Whether we allow changing the capacity of instances (default false). This is currently implemented by stopping, re-creating then starting the affected instance on its associated allocator when performing the changes. NOTES: This requires a round-trip through the allocation infrastructure of the active constructor, as it has to reserve the target capacity without over-committing
            - `skip_synced_flush` (boolean) — optional
              Whether to skip attempting to do a synced flush on the filesystem of the container (default: false), which is less safe but may be required if the container is unhealthy
            - `shard_init_wait_time` (integer) — optional
              The time, in seconds, to wait for shards that show no progress of initializing before rolling the next group (default: 10 minutes)
          - `grow_and_shrink` (GrowShrinkStrategyConfig) — optional
            A strategy that creates instances with the new plan, migrates data from the old instances, then shuts down the old instances. `GrowShrinkStrategyConfig` is safer than 'rolling' and ensures single node availability during a plan change, but can be a lot slower on larger clusters.
          - `rolling_grow_and_shrink` (RollingGrowShrinkStrategyConfig) — optional
            A strategy that creates new Elasticsearch instances, Kibana instances, and APM Servers with the new plan, then migrates the node data to minimize the amount of spare capacity.
          - `autodetect` (AutodetectStrategyConfig) — optional
            A strategy that lets constructor choose the most optimal way to execute the plan.
        - `plan_configuration` ({} AppSearchPlanControlConfiguration) — optional
          - `timeout` (integer) — optional
            The total timeout in seconds after which the plan is cancelled even if it is not complete. Defaults to 4x the max memory capacity per node (in MB)
          - `calm_wait_time` (integer) — optional
            This timeout determines how long to give a cluster after it responds to API calls before performing actual operations on it. It defaults to 5s
          - `move_instances` ([] InstanceMoveRequest) — optional
            - `from` (string) — required
              The instance id that is going to be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `instance_down` (boolean) — optional
              Tells the infrastructure that the instance should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will automatically decide (currently: will treat the instances as up)
          - `move_allocators` ([] AllocatorMoveRequest) — optional
            - `from` (string) — required
              The allocator id off which all instances in the cluster should be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance(s) should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `allocator_down` (boolean) — optional
              Tells the infrastructure that all instances on the allocator should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will auto-decide (currently: will treat the allocator as up)
          - `reallocate_instances` (boolean) — optional
            If true (default: false) does not allow re-using any existing instances currently in the cluster, ie even unchanged instances will be re-created
          - `preferred_allocators` ([] string) — optional
            List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)
          - `preferred_allocator_tags` (map string to string) — optional
            Map containing allocators tags in form of key value pairs, increasing the likelihood during move requests for allocators with matching tags, to be selected as target allocators
          - `extended_maintenance` (boolean) — optional
            If true (default false), does not clear the maintenance flag (which prevents its API from being accessed except by the constructor) on new instances added until after a snapshot has been restored, otherwise, the maintenance flag is cleared once the new instances successfully join the new cluster
          - `cluster_reboot` (enum) — optional
            Set to 'forced' to force a reboot as part of the upgrade plan
            Values: `forced`
          - `override_failsafe` (boolean) — optional
            If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.
    - `settings` ({} AppSearchSettings) — optional
      The settings for the App Search.
      - `metadata` ({} ClusterMetadataSettings) — optional
        The top-level configuration settings for the Elasticsearch cluster.
        Same fields as `metadata` in `settings`
  - `enterprise_search` ([] EnterpriseSearchPayload) — optional
    A list of payloads for Enterprise Search updates
    - `ref_id` (string) — required
      A locally-unique user-specified id for Enterprise Search
    - `elasticsearch_cluster_ref_id` (string) — required
      Alias to the Elasticsearch Cluster to attach Enterprise Search to
    - `display_name` (string) — optional
      The human readable name for the Enterprise Search cluster (default: takes the name of its Elasticsearch cluster)
    - `region` (string) — required
      The region where this resource exists
    - `plan` ({} EnterpriseSearchPlan) — required
      The plan for the Enterprise Search cluster.
      - `cluster_topology` ([] EnterpriseSearchTopologyElement) — optional
        - `node_type` ({} EnterpriseSearchNodeTypes) — optional
          Node types to enable for an Enterprise Search instance
          - `appserver` (boolean) — required
            Defines whether this instance should run as Application/API server
          - `worker` (boolean) — required
            Defines whether this instance should run as background worker
          - `connector` (boolean) — required
            Defines whether this instance should run as Connector
        - `instance_configuration_id` (string) — optional
          Controls the allocation of this topology element as well as allowed sizes and node_types. It needs to match the id of an existing instance configuration.
        - `instance_configuration_version` (integer) — optional
          The version of the Instance Configuration Id. If it is unset, the meaning depends on read vs writes. For deployment reads, it is equivalent to version 0 (or the IC is unversioned); for deployment creates and deployment template use, it is equivalent to 'the latest version'; and for deployment updates, it is equivalent to 'retain the current version'.
        - `size` ({} TopologySize) — optional
          Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
          - `value` (integer) — required
            Amount of resource
          - `resource` (enum) — required
            Type of resource. In ESS the resource used should always be `memory`.
            Values: `memory`, `storage`
        - `zone_count` (integer) — optional
          number of zones in which nodes will be placed
        - `enterprise_search` ({} EnterpriseSearchConfiguration) — optional
          - `version` (string) — optional
            The version of the Enterprise Search cluster (must be one of the ECE supported versions, and won't work unless it matches the Elasticsearch version. Leave blank to auto-detect version.)
          - `docker_image` (string) — optional
            A docker URI that allows overriding of the default docker image specified for this version
          - `system_settings` ({} EnterpriseSearchSystemSettings) — optional
            This structure defines a curated subset of the Enterprise Search settings. (This field together with 'user_settings_override*' and  'user_settings*' defines the total set of Enterprise Search settings)
            - `elasticsearch_username` (string) — optional
              Optionally override the account within Enterprise Search - defaults to a system account that always exists (if specified, the password must also be specified). Note that this field is never returned from the API, it is write only.
            - `elasticsearch_password` (string) — optional
              Optionally override the account within Enterprise Search - defaults to a system account that always exists (if specified, the username must also be specified). Note that this field is never returned from the API, it is write only.
            - `secret_session_key` (string) — optional
              Optionally override the secret session key within Enterprise Search - defaults to the previously existing secretSession. Note that this field is never returned from the API, it is write only.
          - `user_settings_json` (object) — optional
            An arbitrary JSON object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_yaml' is allowed), provided the parameters are on the allowlist and not on the denylist. (This field together with 'user_settings_override*' and 'system_settings' defines the total set of Enterprise Search settings)
          - `user_settings_yaml` (string) — optional
            An arbitrary YAML object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_json' is allowed), provided the parameters are on the allowlist and not on the denylist. (This field together with 'user_settings_override*' and 'system_settings' defines the total set of Enterprise Search settings)
          - `user_settings_override_json` (object) — optional
            An arbitrary JSON object allowing ECE admins to set clusters' parameters (only one of this and 'user_settings_override_yaml' is allowed), i.e. in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Enterprise Search settings)
          - `user_settings_override_yaml` (string) — optional
            An arbitrary YAML object allowing ECE admins to set clusters' parameters (only one of this and 'user_settings_override_json' is allowed), i.e. in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Enterprise Search settings)
        - `allocator_filter` (object) — optional
        - `node_configuration` (string) — optional
        - `memory_per_node` (object) — optional
        - `node_count_per_zone` (object) — optional
      - `enterprise_search` ({} EnterpriseSearchConfiguration) — required
        Same fields as `enterprise_search` in `cluster_topology`
      - `transient` ({} TransientEnterpriseSearchPlanConfiguration) — optional
        Defines configuration parameters that control how the plan (i.e. consisting of the cluster topology and Enterprise Search settings) is applied
        - `strategy` ({} PlanStrategy) — optional
          The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
          - `rolling` ({} RollingStrategyConfig) — optional
            Performs inline, rolling configuration changes that mutate existing containers. TIP: This is the fastest way to update a plan, but can fail for complex plan changes, such as topology changes. Also, this is less safe for configuration changes that leave a cluster in a non running state. NOTE: When you perform a major version upgrade, and 'group_by' is set to 'pass:macros[__all__]';, rolling is required.
            - `group_by` (string) — optional
              Specifies the grouping attribute to use when rolling several instances. Instances that share the same value for the provided attribute key are rolled together as a unit. Examples that make sense to use are '\_\_all\_\_' (roll all instances as a single unit), 'logical_zone_name' (roll instances by zone), '\_\_name\_\_' (roll one instance at a time, the default if not specified). Note that '\_\_all\_\_' is required when performing a major version upgrade
            - `allow_inline_resize` (boolean) — optional
              Whether we allow changing the capacity of instances (default false). This is currently implemented by stopping, re-creating then starting the affected instance on its associated allocator when performing the changes. NOTES: This requires a round-trip through the allocation infrastructure of the active constructor, as it has to reserve the target capacity without over-committing
            - `skip_synced_flush` (boolean) — optional
              Whether to skip attempting to do a synced flush on the filesystem of the container (default: false), which is less safe but may be required if the container is unhealthy
            - `shard_init_wait_time` (integer) — optional
              The time, in seconds, to wait for shards that show no progress of initializing before rolling the next group (default: 10 minutes)
          - `grow_and_shrink` (GrowShrinkStrategyConfig) — optional
            A strategy that creates instances with the new plan, migrates data from the old instances, then shuts down the old instances. `GrowShrinkStrategyConfig` is safer than 'rolling' and ensures single node availability during a plan change, but can be a lot slower on larger clusters.
          - `rolling_grow_and_shrink` (RollingGrowShrinkStrategyConfig) — optional
            A strategy that creates new Elasticsearch instances, Kibana instances, and APM Servers with the new plan, then migrates the node data to minimize the amount of spare capacity.
          - `autodetect` (AutodetectStrategyConfig) — optional
            A strategy that lets constructor choose the most optimal way to execute the plan.
        - `plan_configuration` ({} EnterpriseSearchPlanControlConfiguration) — optional
          - `timeout` (integer) — optional
            The total timeout in seconds after which the plan is cancelled even if it is not complete. Defaults to 4x the max memory capacity per node (in MB)
          - `calm_wait_time` (integer) — optional
            This timeout determines how long to give a cluster after it responds to API calls before performing actual operations on it. It defaults to 5s
          - `move_instances` ([] InstanceMoveRequest) — optional
            - `from` (string) — required
              The instance id that is going to be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `instance_down` (boolean) — optional
              Tells the infrastructure that the instance should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will automatically decide (currently: will treat the instances as up)
          - `move_allocators` ([] AllocatorMoveRequest) — optional
            - `from` (string) — required
              The allocator id off which all instances in the cluster should be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance(s) should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `allocator_down` (boolean) — optional
              Tells the infrastructure that all instances on the allocator should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will auto-decide (currently: will treat the allocator as up)
          - `reallocate_instances` (boolean) — optional
            If true (default: false) does not allow re-using any existing instances currently in the cluster, i.e. even unchanged instances will be re-created
          - `preferred_allocators` ([] string) — optional
            List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)
          - `preferred_allocator_tags` (map string to string) — optional
            Map containing allocators tags in form of key value pairs, increasing the likelihood during move requests for allocators with matching tags, to be selected as target allocators
          - `extended_maintenance` (boolean) — optional
            If true (default false), does not clear the maintenance flag (which prevents its API from being accessed except by the constructor) on new instances added until after a snapshot has been restored, otherwise, the maintenance flag is cleared once the new instances successfully join the new cluster
          - `cluster_reboot` (enum) — optional
            Set to 'forced' to force a reboot as part of the upgrade plan
            Values: `forced`
          - `override_failsafe` (boolean) — optional
            If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.
    - `settings` ({} EnterpriseSearchSettings) — optional
      The settings for the Enterprise Search.
      - `metadata` ({} ClusterMetadataSettings) — optional
        The top-level configuration settings for the Elasticsearch cluster.
        Same fields as `metadata` in `settings`
  - `integrations_server` ([] IntegrationsServerPayload) — optional
    A list of payloads for Integrations Server updates
    - `ref_id` (string) — required
      A locally-unique user-specified id for the Integrations Server
    - `elasticsearch_cluster_ref_id` (string) — required
      Alias to the Elasticsearch Cluster to attach the Integrations Server to
    - `display_name` (string) — optional
      The human readable name for the Integrations Server cluster (default: takes the name of its Elasticsearch cluster)
    - `region` (string) — required
      The region where this resource exists
    - `plan` ({} IntegrationsServerPlan) — required
      The plan for the Integrations Server.
      - `cluster_topology` ([] IntegrationsServerTopologyElement) — optional
        - `instance_configuration_id` (string) — optional
          Controls the allocation of this topology element as well as allowed sizes and node_types. It needs to match the id of an existing instance configuration.
        - `instance_configuration_version` (integer) — optional
          The version of the Instance Configuration Id. If it is unset, the meaning depends on read vs writes. For deployment reads, it is equivalent to version 0 (or the IC is unversioned); for deployment creates and deployment template use, it is equivalent to 'the latest version'; and for deployment updates, it is equivalent to 'retain the current version'.
        - `size` ({} TopologySize) — optional
          Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
          - `value` (integer) — required
            Amount of resource
          - `resource` (enum) — required
            Type of resource. In ESS the resource used should always be `memory`.
            Values: `memory`, `storage`
        - `zone_count` (integer) — optional
          number of zones in which nodes will be placed
        - `integrations_server` ({} IntegrationsServerConfiguration) — optional
          The configuration options for the Integrations Server.
          - `version` (string) — optional
            The version of the Integrations Server cluster (must be one of the ECE supported versions, and won't work unless it matches the Integrations Server version. Leave blank to auto-detect version.)
          - `docker_image` (string) — optional
            A docker URI that allows overriding of the default docker image specified for this version
          - `system_settings` ({} IntegrationsServerSystemSettings) — optional
            A structure that defines a curated subset of the Integrations Server settings. 
TIP: To define the complete set of Integrations Server setting, use `IntegrationsSystemSettings` with `user_settings_override_` and `user_settings_`.
            - `elasticsearch_username` (string) — optional
              Optionally override the account within Integrations Server - defaults to a system account that always exists (if specified, the password must also be specified). Note that this field is never returned from the API, it is write only.
            - `elasticsearch_password` (string) — optional
              Optionally override the account within Integrations Server - defaults to a system account that always exists (if specified, the username must also be specified). Note that this field is never returned from the API, it is write only.
            - `secret_token` (string) — optional
              Optionally override the secret token within Integrations Server - defaults to the previously existing secretToken
            - `debug_enabled` (boolean) — optional
              Optionally enable debug mode for Integrations Server - defaults false
          - `user_settings_json` (object) — optional
            An arbitrary JSON object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_yaml' is allowed), provided the parameters are on the allowlist and not on the denylist. (This field together with 'user_settings_override*' and 'system_settings' defines the total set of Integrations Server settings)
          - `user_settings_yaml` (string) — optional
            An arbitrary YAML object allowing (non-admin) cluster owners to set their parameters (only one of this and 'user_settings_json' is allowed), provided the parameters are on the allowlist and not on the denylist. (These field together with 'user_settings_override*' and 'system_settings' defines the total set of Integrations Server settings)
          - `user_settings_override_json` (object) — optional
            An arbitrary JSON object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_yaml' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Integrations Server settings)
          - `user_settings_override_yaml` (string) — optional
            An arbitrary YAML object allowing ECE admins owners to set clusters' parameters (only one of this and 'user_settings_override_json' is allowed), ie in addition to the documented 'system_settings'. (This field together with 'system_settings' and 'user_settings*' defines the total set of Integrations Server settings)
          - `mode` (enum) — optional
            The mode the Integrations Server is operating in.
            Values: `standalone`, `managed`
      - `integrations_server` ({} IntegrationsServerConfiguration) — required
        The configuration options for the Integrations Server.
        Same fields as `integrations_server` in `cluster_topology`
      - `transient` ({} TransientIntegrationsServerPlanConfiguration) — optional
        Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Integrations Server settings.
        - `strategy` ({} PlanStrategy) — optional
          The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
          - `rolling` ({} RollingStrategyConfig) — optional
            Performs inline, rolling configuration changes that mutate existing containers. TIP: This is the fastest way to update a plan, but can fail for complex plan changes, such as topology changes. Also, this is less safe for configuration changes that leave a cluster in a non running state. NOTE: When you perform a major version upgrade, and 'group_by' is set to 'pass:macros[__all__]';, rolling is required.
            - `group_by` (string) — optional
              Specifies the grouping attribute to use when rolling several instances. Instances that share the same value for the provided attribute key are rolled together as a unit. Examples that make sense to use are '\_\_all\_\_' (roll all instances as a single unit), 'logical_zone_name' (roll instances by zone), '\_\_name\_\_' (roll one instance at a time, the default if not specified). Note that '\_\_all\_\_' is required when performing a major version upgrade
            - `allow_inline_resize` (boolean) — optional
              Whether we allow changing the capacity of instances (default false). This is currently implemented by stopping, re-creating then starting the affected instance on its associated allocator when performing the changes. NOTES: This requires a round-trip through the allocation infrastructure of the active constructor, as it has to reserve the target capacity without over-committing
            - `skip_synced_flush` (boolean) — optional
              Whether to skip attempting to do a synced flush on the filesystem of the container (default: false), which is less safe but may be required if the container is unhealthy
            - `shard_init_wait_time` (integer) — optional
              The time, in seconds, to wait for shards that show no progress of initializing before rolling the next group (default: 10 minutes)
          - `grow_and_shrink` (GrowShrinkStrategyConfig) — optional
            A strategy that creates instances with the new plan, migrates data from the old instances, then shuts down the old instances. `GrowShrinkStrategyConfig` is safer than 'rolling' and ensures single node availability during a plan change, but can be a lot slower on larger clusters.
          - `rolling_grow_and_shrink` (RollingGrowShrinkStrategyConfig) — optional
            A strategy that creates new Elasticsearch instances, Kibana instances, and APM Servers with the new plan, then migrates the node data to minimize the amount of spare capacity.
          - `autodetect` (AutodetectStrategyConfig) — optional
            A strategy that lets constructor choose the most optimal way to execute the plan.
        - `plan_configuration` ({} IntegrationsServerPlanControlConfiguration) — optional
          The plan control configuration options for the Integrations Server.
          - `timeout` (integer) — optional
            The total timeout in seconds after which the plan is cancelled even if it is not complete. Defaults to 4x the max memory capacity per node (in MB)
          - `calm_wait_time` (integer) — optional
            This timeout determines how long to give a cluster after it responds to API calls before performing actual operations on it. It defaults to 5s
          - `move_instances` ([] InstanceMoveRequest) — optional
            - `from` (string) — required
              The instance id that is going to be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `instance_down` (boolean) — optional
              Tells the infrastructure that the instance should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will automatically decide (currently: will treat the instances as up)
          - `move_allocators` ([] AllocatorMoveRequest) — optional
            - `from` (string) — required
              The allocator id off which all instances in the cluster should be moved
            - `to` ([] string) — optional
              An optional list of allocator ids to which the instance(s) should be moved. If not specified then any available allocator can be used (including the current one if it is healthy)
            - `allocator_down` (boolean) — optional
              Tells the infrastructure that all instances on the allocator should be considered as permanently down when deciding how to migrate data to new nodes. If left blank then the system will auto-decide (currently: will treat the allocator as up)
          - `reallocate_instances` (boolean) — optional
            If true (default: false) does not allow re-using any existing instances currently in the cluster, ie even unchanged instances will be re-created
          - `preferred_allocators` ([] string) — optional
            List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)
          - `preferred_allocator_tags` (map string to string) — optional
            Map containing allocators tags in form of key value pairs, increasing the likelihood during move requests for allocators with matching tags, to be selected as target allocators
          - `extended_maintenance` (boolean) — optional
            If true (default false), does not clear the maintenance flag (which prevents its API from being accessed except by the constructor) on new instances added until after a snapshot has been restored, otherwise, the maintenance flag is cleared once the new instances successfully join the new cluster
          - `cluster_reboot` (enum) — optional
            Set to 'forced' to force a reboot as part of the upgrade plan
            Values: `forced`
          - `override_failsafe` (boolean) — optional
            If false (the default), the plan fails if it determines that the request can result in unsafe operations. Setting this flag overrides some of these check restraints.
    - `settings` ({} IntegrationsServerSettings) — optional
      The settings for the Integrations Server.
      - `metadata` ({} ClusterMetadataSettings) — optional
        The top-level configuration settings for the Elasticsearch cluster.
        Same fields as `metadata` in `settings`
- `settings` ({} DeploymentUpdateSettings) — optional
  Additional configuration for the new deployment object.
  - `observability` ({} DeploymentObservabilitySettings) — optional
    The observability settings for a deployment
    - `logging` ({} DeploymentLoggingSettings) — optional
      The logging settings for a deployment
      - `destination` ({} ObservabilityAbsoluteDeployment) — required
        The destination to send logs and metrics to
        - `deployment_id` (string) — required
          The deployment to send logs and/or metrics to. Contains either the deployment's ID or 'self'.
        - `ref_id` (string) — optional
          RefId of the Elasticsearch cluster to send logs and/or metrics to. If not specified, refId is resolved automatically as long as the destination deployment contains a single Elasticsearch resource.
    - `metrics` ({} DeploymentMetricsSettings) — optional
      The metrics settings for a deployment
      - `destination` ({} ObservabilityAbsoluteDeployment) — required
        The destination to send logs and metrics to
        - `deployment_id` (string) — required
          The deployment to send logs and/or metrics to. Contains either the deployment's ID or 'self'.
        - `ref_id` (string) — optional
          RefId of the Elasticsearch cluster to send logs and/or metrics to. If not specified, refId is resolved automatically as long as the destination deployment contains a single Elasticsearch resource.
      - `force_legacy_monitoring` (boolean) — optional
        Set to true to force the deployment to use legacy monitoring instead of Metricbeat-based monitoring. Only available for versions lower than 9.0.
  - `autoscaling_enabled` (boolean) — optional
    Enable autoscaling for this deployment.
  - `auto_ops` ({} AutoOpsSettings) — optional
    AutoOps settings for this deployment.
    - `status` (enum) — required
      See AutoOps integration status for this deployment.
      Values: `connected`, `not_connected`, `excluded`
- `metadata` ({} DeploymentUpdateMetadata) — optional
  Additional information about the current deployment object.
  - `system_owned` (boolean) — optional
    Indicates if a deployment is system owned (restricts the set of operations that can be performed on it)
  - `hidden` (boolean) — optional
    Whether or not this deployment is hidden from the normal deployment list
  - `tags` ([] MetadataItem) — optional
    Arbitrary user-defined metadata associated with this deployment
    - `key` (string) — required
      The metadata field name
    - `value` (string) — required
      The metadata value
- `alias` (string) — optional
  A user-defined alias to use in place of Cluster IDs for user-friendly URLs

## Responses

#### `200`

The request was valid and the deployment was updated.

`application/json`

- `id` (string)
  The id of the deployment
- `name` (string)
  The name of the deployment
- `alias` (string)
  A user-defined alias to use in place of ResourceIds for user-friendly resource URLs
- `resources` ([] DeploymentResource)
  List of resources that are part of the deployment after the update operation.
  - `ref_id` (string)
    A locally-unique friendly alias for this Elasticsearch cluster
  - `elasticsearch_cluster_ref_id` (string)
    The Elasticsearch cluster that this resource depends on.
  - `id` (string)
    A system-unique id for the created resource
  - `kind` (string)
    The kind of resource
  - `region` (string)
    Identifier of the region in which this resource runs.
  - `cloud_id` (string)
    An encoded string that provides other Elastic services with the necessary information to connect to this Elasticsearch and Kibana
  - `credentials` ({} ClusterCredentials)
    The username and password for the new Elasticsearch cluster, which is returned from the Elasticsearch cluster `create` command.
    - `username` (string)
      The username of the newly created cluster
    - `password` (string)
      The password of the newly created cluster
  - `secret_token` (string)
    Secret token for using a created resource. Only provided on initial create and absent otherwise.
  - `warnings` ([] ReplyWarning)
    List of warnings generated from validating resource updates
    - `code` (string)
      A structured code representing the error type that occurred
    - `message` (string)
      A human readable message describing the warning that occurred
- `shutdown_resources` ({} Orphaned)
  Details about orphaned resources.
  - `elasticsearch` ([] OrphanedElasticsearch)
    List of orphaned Elasticsearch resources
    - `id` (string)
      The id of the orphaned resource
    - `dependents` ([] ElasticsearchDependant)
      List of orphaned dependent resources
      - `id` (string)
        The id of the orphaned resource
      - `kind` (string)
        The kind of resource
  - `kibana` ([] string)
    List of orphaned Kibana resource ids
  - `apm` ([] string)
    List of orphaned APM resource ids
  - `appsearch` ([] string)
    List of orphaned AppSearch resource ids
  - `enterprise_search` ([] string)
    List of orphaned Enterprise Search resource ids
  - `integrations_server` ([] string)
    List of orphaned Integrations Server resource ids
- `diagnostics` ({} DeploymentDiagnostics)
  Describes the diagnostics for a given Deployment-modifying payload
  - `creates` ({} Creates)
    Holds diagnostics for resources that will be created
    - `elasticsearch` ([] Elasticsearch)
      Diagnostics for Elasticsearch clusters
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name for the cluster (defaults to the generated cluster id if not specified)
      - `backend_plan` (object)
        The backend plan as JSON
    - `kibana` ([] Kibana)
      Diagnostics for Kibanas
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
    - `apm` ([] Apm)
      Diagnostics for APMs
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
    - `integrations_server` ([] IntegrationsServer)
      Diagnostics for Integrations Server
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
    - `appsearch` ([] AppSearch)
      Diagnostics for AppSearches
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
    - `enterprise_search` ([] EnterpriseSearch)
      Diagnostics for Enterprise Search resources
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
  - `updates` ({} Updates)
    Holds diagnostics for existing resources that might be updated
    - `elasticsearch` ([] Elasticsearch)
      Diagnostics for Elasticsearch clusters
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name for the cluster (defaults to the generated cluster id if not specified)
      - `backend_plan` (object)
        The backend plan as JSON
    - `kibana` ([] Kibana)
      Diagnostics for Kibanas
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
    - `apm` ([] Apm)
      Diagnostics for APMs
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
    - `integrations_server` ([] IntegrationsServer)
      Diagnostics for Integrations Server
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
    - `appsearch` ([] AppSearch)
      Diagnostics for AppSearches
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
    - `enterprise_search` ([] EnterpriseSearch)
      Diagnostics for Enterprise Search resources
      - `ref_id` (string)
        A locally-unique user-specified id
      - `display_name` (string)
        The human readable name (defaults to the generated cluster id if not specified)
      - `elasticsearch_cluster_ref_id` (string)
        The user-specified id of the Elasticsearch Cluster that this will link to
      - `backend_plan` (object)
        The backend plan as JSON
- `settings` ({} DeploymentSettings)
  Additional configuration about the current deployment object.
  - `traffic_filter_settings` ({} TrafficFilterSettings)
    The configuration settings for the traffic filter.
    - `rulesets` ([] string)
      IDs of the traffic filter rulesets
  - `observability` ({} DeploymentObservabilitySettings)
    The observability settings for a deployment
    - `logging` ({} DeploymentLoggingSettings)
      The logging settings for a deployment
      - `destination` ({} ObservabilityAbsoluteDeployment)
        The destination to send logs and metrics to
        - `deployment_id` (string)
          The deployment to send logs and/or metrics to. Contains either the deployment's ID or 'self'.
        - `ref_id` (string)
          RefId of the Elasticsearch cluster to send logs and/or metrics to. If not specified, refId is resolved automatically as long as the destination deployment contains a single Elasticsearch resource.
    - `metrics` ({} DeploymentMetricsSettings)
      The metrics settings for a deployment
      - `destination` ({} ObservabilityAbsoluteDeployment)
        The destination to send logs and metrics to
        - `deployment_id` (string)
          The deployment to send logs and/or metrics to. Contains either the deployment's ID or 'self'.
        - `ref_id` (string)
          RefId of the Elasticsearch cluster to send logs and/or metrics to. If not specified, refId is resolved automatically as long as the destination deployment contains a single Elasticsearch resource.
      - `force_legacy_monitoring` (boolean)
        Set to true to force the deployment to use legacy monitoring instead of Metricbeat-based monitoring. Only available for versions lower than 9.0.
  - `autoscaling_enabled` (boolean)
    If autoscaling is enabled for this deployment.
  - `auto_ops` ({} AutoOpsSettings)
    AutoOps settings for this deployment.
    - `status` (enum)
      See AutoOps integration status for this deployment.
      Values: `connected`, `not_connected`, `excluded`
  - `byok` ({} ByokSettings)
    Information required to create a Bring Your Own Key (BYOK) deployment.
    - `key_resource_path` (string)
      Key path (i.e arn:aws:kms:us-east-1:1234567890:key/12345678-0000-0000-0000-000000000000).
  - `solution_type` (string)
    An optional string that declares the deployment's expected application. Example supported values are: elasticsearch, observability, security.
##### Response Headers

- `x-cloud-resource-version` (string)
  The resource version, which is used to avoid update conflicts with concurrent operations
- `x-cloud-resource-created` (string)
  The date-time when the resource was created (ISO format relative to UTC)
- `x-cloud-resource-last-modified` (string)
  The date-time when the resource was last modified (ISO format relative to UTC)

#### `400`

The deployment request had errors.

`application/json`

- `errors` ([] BasicFailedReplyElement)
  A list of errors that occurred in the failing request
  - `code` (string)
    A structured code representing the error type that occurred
  - `message` (string)
    A human readable message describing the error that occurred
  - `fields` ([] string)
    If the error can be tied to a specific field or fields in the user request, this lists those fields
#### `401`

You are not authorized to perform this action.

`application/json`

- `errors` ([] BasicFailedReplyElement)
  A list of errors that occurred in the failing request
  - `code` (string)
    A structured code representing the error type that occurred
  - `message` (string)
    A human readable message describing the error that occurred
  - `fields` ([] string)
    If the error can be tied to a specific field or fields in the user request, this lists those fields
#### `404`

The Deployment specified by {deployment_id} cannot be found. (code: `deployments.deployment_not_found`)

`application/json`

- `errors` ([] BasicFailedReplyElement)
  A list of errors that occurred in the failing request
  - `code` (string)
    A structured code representing the error type that occurred
  - `message` (string)
    A human readable message describing the error that occurred
  - `fields` ([] string)
    If the error can be tied to a specific field or fields in the user request, this lists those fields
##### Response Headers

- `x-cloud-error-codes` (enum)
  The error codes associated with the response

## Code Examples

#### Console

```console
PUT /deployments/{deployment_id}
```

#### curl

```curl
curl -X PUT "/deployments/{deployment_id}"
```

