---
type: api
title: Search Deployments
description: Retrieves the information for all of the deployments that match the specified query.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/cloud/operation/operation-search-deployments
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/cloud/operation/operation-search-deployments
products:
  - Elastic Cloud Hosted
---

# Search Deployments

- Server: `https://api.elastic-cloud.com/api/v1`

## Paths

- `POST` `/deployments/_search`

## Description

Retrieves the information for all of the deployments that match the specified query.

## Query String Parameters

- `minimal_metadata` (string)
  Comma separated list of attributes to include in response for deployments found. Useful for reducing response size when retrieving many deployments. Use of this parameter moves the result to the minimal_metadata section of the response.

## Request Body

`application/json`

(Optional) The search query to run. When not specified, all of the deployments are matched.

- `from` (integer) — optional
  Deprecated, use cursor for a more scalable approach to paging.
- `cursor` (string) — optional
  To retrieve the next page of hits, set this to the cursor value of the previous response. When set, all other fields are ignored.
- `size` (integer) — optional
  The maximum number of search results to return.
- `query` ({} QueryContainer) — optional
  The container for all of the allowed Elasticsearch queries. Specify only one property each time.
  - `match` (map string to MatchQuery) — optional
    Map values ({} MatchQuery)
    - `query` (string) — required
      The text/numeric/date to query for.
    - `operator` (string) — optional
      The operator flag can be set to or or and to control the boolean clauses (defaults to or).
    - `minimum_should_match` (integer) — optional
      The minimum number of optional should clauses to match.
    - `analyzer` (string) — optional
      The analyzer that will be used to perform the analysis process on the text. Defaults to the analyzer that was used to index the field.
  - `match_all` (MatchAllQuery) — optional
    A query that matches all documents.
  - `match_none` (MatchNoneQuery) — optional
    A query that doesn't match any documents.
  - `term` (map string to TermQuery) — optional
    Map values ({} TermQuery)
    - `value` (string) — required
      The exact value to query for.
  - `bool` ({} BoolQuery) — optional
    A query for documents that match boolean combinations of other queries.
    - `must` ([] QueryContainer) — optional — recursive
      Same fields as `query`
    - `should` ([] QueryContainer) — optional — recursive
      Same fields as `query`
    - `must_not` ([] QueryContainer) — optional — recursive
      Same fields as `query`
    - `filter` ([] QueryContainer) — optional — recursive
      Same fields as `query`
    - `minimum_should_match` (integer) — optional
      The minimum number of optional should clauses to match.
  - `query_string` ({} QueryStringQuery) — optional
    A query that uses the strict query string syntax for parsing. Will return an error for invalid syntax.
    - `query` (string) — required
      The actual query to be parsed.
    - `default_field` (string) — optional
      The default field for query terms if no prefix field is specified.
    - `analyzer` (string) — optional
      The analyzer used to analyze each term of the query when creating composite queries.
    - `default_operator` (string) — optional
      The default operator used if no explicit operator is specified.
    - `allow_leading_wildcard` (boolean) — optional
      When set, * or ? are allowed as the first character. Defaults to false.
  - `nested` ({} NestedQuery) — optional
    A query that matches nested objects.
    - `query` ({} QueryContainer) — required — recursive
      The container for all of the allowed Elasticsearch queries. Specify only one property each time.
      Same fields as `query`
    - `path` (string) — required
      The path to the nested object.
    - `score_mode` (enum) — optional
      Allows to specify how inner children matching affects score of the parent. Refer to the Elasticsearch documentation for details.
      Values: `avg`, `sum`, `min`, `max`, `none`
  - `prefix` (map string to PrefixQuery) — optional
    Map values ({} PrefixQuery)
    - `value` (string) — required
      The prefix to search for.
    - `boost` (number) — optional
      An optional boost value to apply to the query.
  - `exists` ({} ExistsQuery) — optional
    Matches documents that have at least one non-`null` value in the original field.
    - `field` (string) — required
      The field to check for non-null values in.
  - `range` (map string to RangeQuery) — optional
    Map values ({} RangeQuery)
    - `gt` (object) — optional
      Greater-than
    - `gte` (object) — optional
      Greater-than or equal to
    - `lt` (object) — optional
      Less-than
    - `lte` (object) — optional
      Less-than or equal to.
    - `boost` (number) — optional
      An optional boost value to apply to the query.
    - `format` (string) — optional
      Formatted dates will be parsed using the format specified on the date field by default, but it can be overridden by passing the format parameter.
    - `time_zone` (string) — optional
      Dates can be converted from another timezone to UTC either by specifying the time zone in the date value itself (if the format accepts it), or it can be specified as the time_zone parameter.
  - `simple_query_string` ({} SimpleQueryStringQuery) — optional
    A query that uses simple query string syntax. Will ignore invalid syntax.
    - `query` (string) — required
      The query expressed in simple query string syntax.
    - `fields` ([] string) — optional
      Array of fields to search
    - `default_operator` (string) — optional
      The boolean operator used to combine the terms of the query. Valid values are `OR` (default) and `AND`.
    - `analyze_wildcard` (boolean) — optional
      If `true`, the query attempts to analyze wildcard terms. Defaults to `false`.
    - `analyzer` (string) — optional
      The name of the analyzer to use to convert the query text into tokens.
    - `auto_generate_synonyms_phrase_query` (boolean) — optional
      If `true`, the parse creates a `match_phrase` uery for each multi-position token. Defaults to `true`.
    - `flags` (string) — optional
      List of enabled operators for the simple query string syntax. Defaults to `ALL`.
    - `fuzzy_max_expansions` (integer) — optional
      Maximum number of terms to which the query expands for fuzzy matching. Defaults to 50.
    - `fuzzy_prefix_length` (integer) — optional
      Number of beginning characters left unchanged for fuzzy matching. Defaults to 0.
    - `fuzzy_transpositions` (boolean) — optional
      If `true`, edits for fuzzy matching include transpositions of two adjacent characters. Defaults to `false`.
    - `lenient` (boolean) — optional
      If `true`, format-based errors, such as providing a text value for a numeric field are ignored. Defaults to `false`.
    - `minimum_should_match` (string) — optional
      Minimum number of clauses that must match for a document to be returned.
    - `quote_field_suffix` (string) — optional
      Suffix appended to quoted text in the query string.
- `sort` ([] object) — optional
  An array of fields to sort the search results by. Defaults to query rank and last modified date descending.

## Response

The list of deployments that match the specified query and belong to the authenticated user.

`application/json`

- `return_count` (integer)
  The number of deployments actually returned, either as deployment instances or as minimalMetadata objects
- `match_count` (integer)
  If a query is supplied, then the total number of deployments that matched
- `deployments` ([] DeploymentSearchResponse)
  - `id` (string)
    A randomly-generated id of this Deployment
  - `name` (string)
    The name of this deployment
  - `alias` (string)
    A user-defined deployment alias for user-friendly resource URLs
  - `healthy` (boolean)
    Whether the deployment is overall healthy or not (one or more of the resource info subsections will have healthy: false)
  - `resources` ({} DeploymentResources)
    Describes a resource belonging to a Deployment
    - `elasticsearch` ([] ElasticsearchResourceInfo)
      List of Elasticsearch resources in your Deployment
      - `ref_id` (string)
        The locally-unique user-specified id of a Resource
      - `id` (string)
        The randomly-generated id of a Resource
      - `region` (string)
        The region where this resource exists
      - `info` ({} ElasticsearchClusterInfo)
        The information for an Elasticsearch cluster.
        - `cluster_id` (string)
          The id of the cluster
        - `cluster_name` (string)
          The name of the cluster
        - `deployment_id` (string)
          The id of the deployment that this Elasticsearch belongs to.
        - `healthy` (boolean)
          Whether the cluster is healthy or not (one or more of the info subsections will have healthy: false)
        - `status` (enum)
          Cluster status
          Values: `initializing`, `stopping`, `stopped`, `rebooting`, `restarting`, `reconfiguring`, `started`
        - `plan_info` ({} ElasticsearchClusterPlansInfo)
          Information about the current, pending, and past Elasticsearch cluster plans.
          - `healthy` (boolean)
            Whether the plan situation is healthy (if unhealthy, means the last plan attempt failed)
          - `current` ({} ElasticsearchClusterPlanInfo)
            Information about the Elasticsearch cluster plan.
            - `plan_attempt_id` (string)
              A UUID for each plan attempt
            - `plan_attempt_name` (string)
              A human readable name for each plan attempt, only populated when retrieving plan histories
            - `healthy` (boolean)
              Either the plan ended successfully, or is not yet completed (and no errors have occurred)
            - `attempt_start_time` (string)
              When this plan attempt (ie to apply the plan to the cluster) started (ISO format in UTC)
            - `attempt_end_time` (string)
              If this plan completed or failed (ie is not pending), when the attempt ended (ISO format in UTC)
            - `plan_end_time` (string)
              If this plan is not current or pending, when the plan was no longer active (ISO format in UTC)
            - `plan` ({} ElasticsearchClusterPlan)
              The plan for the Elasticsearch cluster.
              - `cluster_topology` ([] ElasticsearchClusterTopologyElement)
                - `id` (string)
                  Unique identifier of this topology element
                - `node_type` ({} ElasticsearchNodeType)
                  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)
                    Defines whether this node can be elected master (default: false)
                  - `data` (boolean)
                    Defines whether this node can hold data (default: false)
                  - `ingest` (boolean)
                    Defines whether this node can run an ingest pipeline (default: false)
                  - `ml` (boolean)
                    Defines whether this node can run ml jobs, valid only for versions 5.4.0 or greater (default: false)
                - `node_roles` ([] enum)
                  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`
                - `zone_count` (integer)
                  The default number of zones in which data nodes will be placed
                - `elasticsearch` ({} ElasticsearchConfiguration)
                  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)
                    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)
                    A docker URI that allows overriding of the default docker image specified for this version
                  - `system_settings` ({} ElasticsearchSystemSettings)
                    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)
                      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)
                        (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)
                        (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)
                        (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)
                        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)
                          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)
                          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)
                        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)
                          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)
                          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)
                        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)
                          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)
                          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)
                      Limits remote Elasticsearch clusters that can be used as the source for '_reindex' API commands
                    - `auto_create_index` (boolean)
                      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)
                      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)
                      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)
                      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)
                      (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)
                      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)
                      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)
                    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)
                    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)
                    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)
                    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)
                    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)
                    A list of admin-uploaded plugin objects that are available for this user.
                    - `name` (string)
                      The name of the plugin
                    - `url` (string)
                      The URL of the plugin (must be accessible from the ECE infrastructure)
                    - `elasticsearch_version` (string)
                      The supported Elasticsearch version (must match the version in the plan)
                  - `user_bundles` ([] ElasticsearchUserBundle)
                    A list of admin-uploaded bundle objects (eg scripts, synonym files) that are available for this user.
                    - `name` (string)
                      The name of the bundle
                    - `url` (string)
                      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)
                      The supported Elasticsearch version (must match the version in the plan)
                  - `curation` ({} ElasticsearchCuration)
                    The structure that defines the routing settings for index curation.
                    - `from_instance_configuration_id` (string)
                      The source instance configuration
                    - `to_instance_configuration_id` (string)
                      The destination instance configuration
                  - `node_attributes` (map string to string)
                    Defines the Elasticsearch node attributes for the instances in the topology
                - `instance_configuration_id` (string)
                  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)
                  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)
                  Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                  - `value` (integer)
                    Amount of resource
                  - `resource` (enum)
                    Type of resource. In ESS the resource used should always be `memory`.
                    Values: `memory`, `storage`
                - `autoscaling_min` ({} TopologySize)
                  Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                  - `value` (integer)
                    Amount of resource
                  - `resource` (enum)
                    Type of resource. In ESS the resource used should always be `memory`.
                    Values: `memory`, `storage`
                - `autoscaling_max` ({} TopologySize)
                  Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                  - `value` (integer)
                    Amount of resource
                  - `resource` (enum)
                    Type of resource. In ESS the resource used should always be `memory`.
                    Values: `memory`, `storage`
                - `autoscaling_policy_override_json` (object)
                  An arbitrary JSON object overriding the default autoscaling policy. Don't set unless you really know what you are doing.
                - `topology_element_control` ({} TopologyElementControl)
                  Controls for the topology element. Only used as part of the deployment template. Ignored if included as part of a deployment.
                  - `min` ({} TopologySize)
                    Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                    - `value` (integer)
                      Amount of resource
                    - `resource` (enum)
                      Type of resource. In ESS the resource used should always be `memory`.
                      Values: `memory`, `storage`
                - `autoscaling_tier_override` (boolean)
                  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)
                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)
                Specifies the deployment template used to create the plan.
                - `id` (string)
                  The unique identifier of the deployment template
                - `version` (string)
                  A version identifier to disambiguate multiple revisions of the same template
              - `transient` ({} TransientElasticsearchPlanConfiguration)
                Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Elasticsearch settings.
                - `strategy` ({} PlanStrategy)
                  The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
                  - `rolling` ({} RollingStrategyConfig)
                    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)
                      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)
                      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)
                      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)
                      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)
                    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)
                    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)
                    A strategy that lets constructor choose the most optimal way to execute the plan.
                - `plan_configuration` ({} ElasticsearchPlanControlConfiguration)
                  The configuration settings for the timeout and fallback parameters.
                  - `timeout` (integer)
                    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)
                    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
                  - `skip_snapshot` (boolean)
                    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)
                    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)
                    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)
                    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)
                    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`
                - `restore_snapshot` ({} RestoreSnapshotConfiguration)
                  Restores a snapshot from a local or remote repository.
                  - `repository_name` (string)
                    If specified, contains the name of the snapshot repository - else will default to the Elastic Cloud system repo ('found-snapshots')
                  - `snapshot_name` (string)
                    The name of the snapshot to restore. Use '\_\_latest_success\_\_' to get the most recent snapshot from the specified repository
                  - `repository_config` ({} RestoreSnapshotRepoConfiguration)
                    Configures the location of a remote repository. The default is the system repository.
                    - `raw_settings` (object)
                      The remote snapshot settings raw JSON - see the Elasticsearch '_snapshot' documentation for more details on supported formats
                  - `restore_payload` ({} RestoreSnapshotApiConfiguration)
                    The configuration for the restore command, such as which indices you want to restore.
                    - `indices` ([] string)
                      The list of indices to restore (supports +ve and -ve selection and wildcarding - see the default Elasticsearch index format documentation)
                    - `raw_settings` (object)
                      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)
                    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)
                    If specified, contains the name of the source cluster id. Do not send this if you are sending repository_config
                - `snapshot_dependency` ({} SnapshotDependencyConfiguration)
                  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)
                    The cluster ID of the source cluster whose snapshots will be made available
                - `remote_clusters` ({} RemoteResources)
                  The list of resources used as remote clusters
                  - `resources` ([] RemoteResourceRef)
                    The remote resources
                    - `deployment_id` (string)
                      The id of the deployment
                    - `elasticsearch_ref_id` (string)
                      The locally-unique user-specified id of an Elasticsearch Resource
                    - `alias` (string)
                      The alias for this remote cluster. Aliases must only contain letters, digits, dashes and underscores
                    - `skip_unavailable` (boolean)
                      If true, skip this cluster during search if it is disconnected. Default: false
                    - `info` ({} RemoteResourceInfo)
                      Information about a Remote Cluster.
                      - `healthy` (boolean)
                        Whether or not the remote cluster is healthy
                      - `connected` (boolean)
                        Whether or not there is at least one connection to the remote cluster.
                      - `compatible` (boolean)
                        Whether or not the remote cluster version is compatible with this cluster version.
                      - `trusted` (boolean)
                        Whether or not the remote cluster is trusted by this cluster.
                      - `trusted_back` (boolean)
                        Whether or not the remote cluster trusts this cluster back.
                - `cluster_settings_json` (object)
                  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)
                Enable autoscaling for this Elasticsearch cluster.
            - `plan_attempt_log` ([] ClusterPlanStepInfo)
              - `step_id` (string)
                ID of current step
              - `started` (string)
                When the step started (ISO format in UTC)
              - `completed` (string)
                When the step completed (ISO format in UTC)
              - `duration_in_millis` (integer)
                The duration of the step in MS
              - `status` (enum)
                The status of the step (success, warning, error - warning means something didn't go as expected but it was not serious enough to abort the plan)
                Values: `success`, `warning`, `error`, `pending`
              - `stage` (enum)
                Current stage that the step is in
                Values: `starting`, `completed`, `in_progress`
              - `info_log` ([] ClusterPlanStepLogMessageInfo)
                Human readable summaries of the step, including messages for each stage of the step
                - `timestamp` (string)
                  Timestamp marking on info log of step
                - `delta_in_millis` (integer)
                  Time in milliseconds since previous log message
                - `stage` (enum)
                  Stage that info log message takes place in
                  Values: `starting`, `completed`, `in_progress`
                - `message` (string)
                  Human readable log message
                - `details` (map string to string)
                  A map with details for the log about what happened during the step execution. Keys and values for are always both strings, representing the name of the detail and its value, respectively.
                - `failure_type` (string)
                  The failure type, in case the step failed
            - `source` ({} ChangeSourceInfo)
              A container for information about the source of a change.
              - `facilitator` (string)
                The service where the change originated from
              - `action` (string)
                The type of plan change that was initiated
              - `date` (string)
                The time the change was initiated
              - `user_id` (string)
                The user that requested the change
              - `admin_id` (string)
                The admin user that requested the change
              - `remote_addresses` ([] string)
                The host addresses of the user that originated the change
            - `warnings` ([] ClusterPlanWarning)
              - `code` (string)
                A unique warning code
              - `message` (string)
                A description of the warning
              - `step_id` (string)
                The ID of the step which produced a warning, if any
            - `error` ({} ClusterPlanAttemptError)
              Information about an error during a plan attempt.
              - `timestamp` (string)
                Timestamp marking on info log of step
              - `message` (string)
                Human readable error message
              - `details` (map string to string)
                A map with details regarding the error. Both the keys and values are always strings, representing the name of the detail and its value, respectively.
              - `failure_type` (string)
                The failure type
          - `pending` ({} ElasticsearchClusterPlanInfo)
            Information about the Elasticsearch cluster plan.
            Same fields as `current` in `plan_info`
          - `history` ([] ElasticsearchClusterPlanInfo)
            Same fields as `current` in `plan_info`
        - `elasticsearch` ({} ElasticsearchInfo)
          Information about the Elasticsearch cluster.
          - `healthy` (boolean)
            Whether the Elasticsearch cluster is healthy (check the sub-objects for more details if not)
          - `shard_info` ({} ElasticsearchShardsInfo)
            > WARNING
> This endpoint is deprecated and scheduled to be removed in the next major version. Use `shards_status` instead.

Information about the shards and replicas that comprise the Elasticsearch indices.
            - `healthy` (boolean)
              Whether the shard situation is healthy (any unavailable shards is unhealthy)
            - `available_shards` ([] ElasticsearchShardElement)
              - `instance_name` (string)
                The Elastic Cloud name/id of the instance (container)
              - `shard_count` (integer)
                The number of shards of the given type (available/unavailable) on this instance
            - `unavailable_shards` ([] ElasticsearchShardElement)
              - `instance_name` (string)
                The Elastic Cloud name/id of the instance (container)
              - `shard_count` (integer)
                The number of shards of the given type (available/unavailable) on this instance
            - `unavailable_replicas` ([] ElasticsearchReplicaElement)
              - `instance_name` (string)
                The Elastic Cloud name/id of the instance (container)
              - `replica_count` (integer)
                The number of unavailable replicas on this instance
          - `shards_status` ({} ElasticsearchShardsStatus)
            Shards status represented as green, yellow, or red, as returned by the Elasticsearch cluster health API
            - `status` (enum)
              Indicates the elasticsearch cluster health status as a color
              Values: `green`, `red`, `yellow`
          - `master_info` ({} ElasticsearchMasterInfo)
            Information about the master nodes in the Elasticsearch cluster.
            - `healthy` (boolean)
              Whether the master situation in the cluster is healthy (ie is the number of masters != 1), or do any instances have no master
            - `masters` ([] ElasticsearchMasterElement)
              - `master_node_id` (string)
                The Elasticsearch node id of a master node
              - `master_instance_name` (string)
                The corresponding instance name of the container hosting the Elasticsearch master node, if available
              - `instances` ([] string)
                The names of the instance/container hosting the node belong to the cluster with the given master
            - `instances_with_no_master` ([] string)
              A list of any instances with no master
          - `blocking_issues` ({} ElasticsearchClusterBlockingIssues)
            > WARNING
> This endpoint is deprecated and scheduled to be removed in the next major version. Use `cluster_blocking_issues` instead

Issues that prevent the Elasticsearch cluster or index from operating correctly.
            - `healthy` (boolean)
              Whether the cluster has issues (false) or not (true)
            - `cluster_level` ([] ElasticsearchClusterBlockingIssueElement)
              A list of issues that affect availability of entire cluster
              - `description` (string)
                Description of the issue
              - `instances` ([] string)
                A list of instances that are affected by the issue
            - `index_level` ([] ElasticsearchClusterBlockingIssueElement)
              A list of issues that affect availability of the cluster's indices
              - `description` (string)
                Description of the issue
              - `instances` ([] string)
                A list of instances that are affected by the issue
          - `cluster_blocking_issues` ({} ElasticsearchBlockingIssues)
            Issues that prevent the Elasticsearch cluster or index from correctly operating.
            - `healthy` (boolean)
              Whether the cluster has issues (false) or not (true)
            - `blocks` ([] ElasticsearchBlockingIssueElement)
              A list of blocks that affect the availability of the cluster
              - `description` (string)
                Description of the block
              - `level` (enum)
                Applicable level for the block. Either global ie. cluster-wide or index level
                Values: `index`, `global`
        - `metadata` ({} ClusterMetadataInfo)
          Information about the public and internal state, and the configuration settings of an Elasticsearch cluster.
          - `version` (integer)
            The resource version number of the cluster metadata
          - `last_modified` (string)
            The most recent time the cluster metadata was changed (ISO format in UTC)
          - `endpoint` (string)
            The DNS name of the cluster endpoint, if available
          - `service_url` (string)
            The full URL to access this deployment resource
          - `aliased_endpoint` (string)
            The DNS name of the cluster endpoint derived from the deployment alias, if available
          - `aliased_url` (string)
            The full aliased URL to access this deployment resource
          - `cloud_id` (string)
            The cloud ID, an encoded string that provides other Elastic services with the necessary information to connect to this Elasticsearch and Kibana (only present if both exist)
          - `raw` (object)
            An unstructured JSON representation of the public and internal state (can be filtered out via URL parameter). The contents and structure of the `raw` field can change at any time.
          - `ports` ({} ClusterMetadataPortInfo)
            Information about the ports that allow communication between the Elasticsearch cluster and various protocols.
            - `http` (integer)
              Port where the cluster listens for HTTP traffic
            - `https` (integer)
              Port where the cluster listens for HTTPS traffic
            - `transport_passthrough` (integer)
              Port where the cluster listens for transport traffic using TLS
          - `services_urls` ([] ServiceUrl)
            A list of the URLs to access services that the resource provides at this time. Note that if the service is not running or has not started yet, the URL to access it won't be available
            - `service` (string)
              Name of the service
            - `url` (string)
              The full URL to access the service
        - `topology` ({} ClusterTopologyInfo)
          The topology for Elasticsearch clusters, multiple Kibana instances, or multiple APM Servers. The `ClusterTopologyInfo` also includes the instances and containers, and where they are located.
          - `healthy` (boolean)
            Whether the cluster topology is healthy (ie all instances are started and the services they run - ie elasticsearch - are available
          - `instances` ([] ClusterInstanceInfo)
            - `instance_name` (string)
              The name of the instance in Elastic Cloud
            - `instance_configuration` ({} ClusterInstanceConfigurationInfo)
              Information about a configuration that creates a Kibana instance or APM Server.
              - `id` (string)
                The id of the configuration used to create the instance
              - `name` (string)
                The name of the configuration used to create the instance
              - `config_version` (integer)
                If the IC is configuration controlled, this field is the version either being read back (reads return the latest IC unless specified by the 'config_version' URL param), or the version to update. Cannot be used in creates. For unversioned IC reads it is left empty.
              - `resource` (enum)
                The resource type of the instance configuration
                Values: `memory`, `storage`
            - `service_version` (string)
              The version of the service that the instance is running (eg Elasticsearch or Kibana), if available
            - `healthy` (boolean)
              Whether the instance is healthy (ie started and running)
            - `container_started` (boolean)
              Whether the container has started (does not tell you anything about the service -ie Elasticsearch- running inside the container)
            - `service_running` (boolean)
              Whether the service launched inside the container -ie Elasticsearch- is actually running
            - `maintenance_mode` (boolean)
              Whether the service is is maintenance mode (meaning that the proxy is not routing external traffic to it)
            - `zone` (string)
              The zone in which this instance is being allocated
            - `allocator_id` (string)
              The id of the allocator on which this instance is running (if the container is started or starting)
            - `memory` ({} ClusterInstanceMemoryInfo)
              Information about the specific instances memory capacity and its usage
              - `instance_capacity` (integer)
                The memory capacity in MB of the instance
              - `instance_capacity_planned` (integer)
                The planned memory capacity in MB of the instance (only shown when an override is present)
              - `memory_pressure` (integer)
                The % memory pressure of Elasticsearch JVM heap space if available (60-75% consider increasing capacity, >75% can incur significant performance and stability issues)
              - `native_memory_pressure` (integer)
                The % memory pressure of the instance Docker container (if available)
            - `disk` ({} ClusterInstanceDiskInfo)
              Information about the use and storage capacity of a Kibana instance or APM Server.
              - `disk_space_available` (integer)
                If known, the amount of total disk space available to the container in MB
              - `disk_space_used` (integer)
                The amount of disk space being used by the service in MB
              - `storage_multiplier` (number)
                The storage multiplier originally defined to calculate disk space.
            - `service_roles` ([] string)
              List of roles assigned to the service running in the instance. Currently only populated for Elasticsearch, with possible values: master,data,ingest,ml
            - `node_roles` ([] enum)
              A list of the node roles assigned to the service running in the instance. Currently populated only for Elasticsearch.
              Values: `master`, `ingest`, `ml`, `data_hot`, `data_content`, `data_warm`, `data_cold`, `data_frozen`, `remote_cluster_client`, `transform`, `voting_only`
            - `instance_overrides` ({} InstanceOverrides)
              - `capacity` (integer)
                Sets the memory capacity for the instances container. Requires a restart to take effect.
              - `storage_multiplier` (number)
                Overrides the disk quota multiplier for the instance
        - `system_alerts` ([] ClusterSystemAlert)
          List of cluster system alerts
          - `timestamp` (string)
            Timestamp marking the system alert
          - `instance_name` (string)
            Instance that caused the system alert
          - `alert_type` (enum)
            Type of system alert
            Values: `automatic_restart`, `heap_dump`, `unknown_event`
          - `url` (string)
            The URL related to the event. Only applicable for alert_type: heap_dump
          - `exit_code` (integer)
            The exit_code related to the event. Only applicable for alert_type: slain
        - `associated_kibana_clusters` ([] KibanaSubClusterInfo)
          - `kibana_id` (string)
            The Kibana cluster Id
          - `enabled` (boolean)
            Whether the associated Kibana cluster is currently available
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `associated_apm_clusters` ([] ApmSubInfo)
          - `apm_id` (string)
            The APM cluster Id
          - `enabled` (boolean)
            Whether the associated APM cluster is currently available
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `associated_appsearch_clusters` ([] AppSearchSubInfo)
          - `app_search_id` (string)
            The App Search Id
          - `enabled` (boolean)
            Whether the associated App Search is currently available
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `associated_enterprise_search_clusters` ([] EnterpriseSearchSubInfo)
          - `enterprise_search_id` (string)
            The Enterprise Search Id
          - `enabled` (boolean)
            Whether the associated Enterprise Search is currently available
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `security` ({} ElasticsearchClusterSecurityInfo)
          For 2.x Elasticsearch clusters, specifies the information about the users and roles. For 5.x Elasticsearch clusters, use the Kibana management UI.
          - `version` (integer)
            The resource version number of the security settings
          - `last_modified` (string)
            The most recent time the security settings were changed (ISO format in UTC)
          - `users` ([] ElasticsearchClusterUser)
            - `username` (string)
              The username
            - `password_hash` (string)
              The hashed password
          - `roles` (object)
            An arbitrarily nested JSON object mapping roles to sets of resources and permissions - see the Elasticsearch security documentation for more details on roles
          - `users_roles` ([] ElasticsearchClusterRole)
            - `username` (string)
              The username
            - `roles` ([] string)
              The list of roles for this user
        - `elasticsearch_monitoring_info` ({} ElasticsearchMonitoringInfo)
          Information about the monitoring status for the Elasticsearch cluster.
          - `healthy` (boolean)
            Whether the Monitoring configuration has been successfully applied
          - `last_modified` (string)
            The time the monitoring configuration was last changed
          - `last_update_status` (string)
            The status message from the last update (successful or not)
          - `source_cluster_ids` ([] string)
            The list of clusters Ids from which this cluster is currently receiving monitoring data
          - `destination_cluster_ids` ([] string)
            The list of clusters Ids to which this cluster is currently sending monitoring data
        - `snapshots` ({} SnapshotStatusInfo)
          Information about the snapshot status for the Elasticsearch cluster. For example, the health status.
          - `healthy` (boolean)
            Health status of snapshots for this cluster
          - `count` (integer)
            Number of snapshots stored for this cluster
          - `latest_successful` (boolean)
            Latest snapshot status
          - `latest_status` (string)
            Status of the latest snapshot attempt, if any exist.
          - `scheduled_time` (string)
            Scheduled time of next snapshot attempt
          - `latest_end_time` (string)
            The end time of the most recently attempted snapshot
          - `latest_successful_end_time` (string)
            The end time of the most recently successful snapshot
          - `recent_success` (boolean)
            Indicates whether the cluster has a relatively recent successful snapshot.
        - `external_links` ([] ExternalHyperlink · unique)
          External resources related to the cluster
          - `id` (string)
            Identifier of the external link
          - `label` (string)
            Human-readable description of the external link
          - `uri` (string)
            hyperlink to an external resource
        - `links` (map string to Hyperlink)
          A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
          Map values ({} Hyperlink)
          - `need_elevated_permissions` (boolean)
            Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `settings` ({} ElasticsearchClusterSettings)
          The settings for an Elasticsearch cluster.
          - `snapshot` ({} ClusterSnapshotSettings)
            The snapshot configuration settings for an Elasticsearch cluster.
            - `interval` (string)
              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
            - `retention` ({} ClusterSnapshotRetention)
              Information about the Elasticsearch cluster snapshot retention.
              - `snapshots` (integer)
                Number of snapshots to retain
              - `max_age` (string)
                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)
              When set to true, the deployment will have SLM enabled. Default value is true.
            - `cron_expression` (string)
              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)
            The settings for sending monitoring information to another cluster.
            - `target_cluster_id` (string)
              The Id of the target cluster to which to send monitoring information
          - `metadata` ({} ClusterMetadataSettings)
            The top-level configuration settings for the Elasticsearch cluster.
            - `name` (string)
              The display name of the cluster
          - `curation` ({} ClusterCurationSettings)
            The index curation settings for an Elasticsearch cluster.
            - `specs` ([] ClusterCurationSpec)
              Specifications for curation
              - `index_pattern` (string)
                Index matching pattern
              - `trigger_interval_seconds` (integer)
                Number of seconds after index creation to trigger this spec
          - `dedicated_masters_threshold` (integer)
            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)
            The configuration settings for the traffic filter.
            - `rulesets` ([] string)
              IDs of the traffic filter rulesets
          - `trust` ({} ElasticsearchClusterTrustSettings)
            Configuration of trust with other clusters.
            - `accounts` ([] AccountTrustRelationship)
              The list of trust relationships with different accounts
              - `account_id` (string)
                the ID of the Account
              - `name` (string)
                A human readable name of the trust relationship
              - `trust_all` (boolean)
                If true, all clusters in this account will by default be trusted and the `trust_allowlist` is ignored.
              - `trust_allowlist` ([] string)
                The list of clusters to trust. Only used when `trust_all` is false.
            - `external` ([] ExternalTrustRelationship)
              The list of trust relationships with external entities
              - `trust_relationship_id` (string)
                The ID of the external trust relationship
              - `name` (string)
                The name of the external trust relationship. Retrieved from the TrustRelationship and ignored on write.
              - `trust_all` (boolean)
                If true, all clusters in this external entity will be trusted and the `trust_allowlist` is ignored.
              - `trust_allowlist` ([] string)
                The list of clusters to trust. Only used when `trust_all` is false.
            - `direct` ([] DirectTrustRelationship)
              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)
                Auto generated identifier for this trust, allows distinguishing between update vs remove and add.
              - `name` (string)
                a human readable name of the trust relationship
              - `type` (enum)
                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)
                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)
                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)
                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)
                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)
                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)
                  The public ca certificate as string in PEM format.
                - `metadata` ({} CertificateMetaData)
                  The certificate MetaData
                  - `fingerprint` (string)
                    The fingerprint of the certificate
                  - `valid_to` (string)
                    The expiry date of the certificate in UTC
                  - `valid_from` (string)
                    The valid from date of the certificate in UTC
                  - `also_trusted_by` ([] string)
                    Other deployments also trusting this certificate
          - `keystore_contents` ({} KeystoreContents)
            The contents of the Elasticsearch keystore.
            - `secrets` (map string to KeystoreSecret)
              List of secrets
              Map values ({} KeystoreSecret)
              - `value` (object)
                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)
                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)
                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)
                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.
        - `region` (string)
          The region that this cluster belongs to. Only populated in SaaS or federated ECE.
    - `kibana` ([] KibanaResourceInfo)
      List of Kibana resources in your Deployment
      - `ref_id` (string)
        The locally-unique user-specified id of a Resource
      - `elasticsearch_cluster_ref_id` (string)
        The Elasticsearch cluster that this resource depends on.
      - `id` (string)
        The randomly-generated id of a Resource
      - `region` (string)
        The region where this resource exists
      - `info` ({} KibanaClusterInfo)
        The top-level object information for a Kibana instance.
        - `cluster_id` (string)
          The id of the cluster
        - `cluster_name` (string)
          The name of the cluster
        - `elasticsearch_cluster` ({} TargetElasticsearchCluster)
          Information about the specified Elasticsearch cluster.
          - `elasticsearch_id` (string)
            The Elasticsearch cluster Id
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `deployment_id` (string)
          The id of the deployment to which this Kibana Server belongs to.
        - `healthy` (boolean)
          Whether the cluster is healthy or not (one or more of the info subsections will have healthy: false)
        - `status` (enum)
          Cluster status
          Values: `initializing`, `stopping`, `stopped`, `rebooting`, `restarting`, `reconfiguring`, `started`
        - `plan_info` ({} KibanaClusterPlansInfo)
          Information about the current, pending, or past Kibana instance plans.
          - `healthy` (boolean)
            Whether the plan situation is healthy (if unhealthy, means the last plan attempt failed)
          - `current` ({} KibanaClusterPlanInfo)
            Information about the current, pending, or past Kibana instance plan.
            - `plan_attempt_id` (string)
              A UUID for each plan attempt
            - `plan_attempt_name` (string)
              A human readable name for each plan attempt, only populated when retrieving plan histories
            - `healthy` (boolean)
              Either the plan ended successfully, or is not yet completed (and no errors have occurred)
            - `attempt_start_time` (string)
              When this plan attempt (ie to apply the plan to the cluster) started (ISO format in UTC)
            - `attempt_end_time` (string)
              If this plan completed or failed (ie is not pending), when the attempt ended (ISO format in UTC)
            - `plan_end_time` (string)
              If this plan is not current or pending, when the plan was no longer active (ISO format in UTC)
            - `plan` ({} KibanaClusterPlan)
              The plan for the Kibana instance.
              - `cluster_topology` ([] KibanaClusterTopologyElement)
                - `instance_configuration_id` (string)
                  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)
                  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)
                  Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                  - `value` (integer)
                    Amount of resource
                  - `resource` (enum)
                    Type of resource. In ESS the resource used should always be `memory`.
                    Values: `memory`, `storage`
                - `zone_count` (integer)
                  number of zones in which nodes will be placed
                - `kibana` ({} KibanaConfiguration)
                  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)
                    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)
                    A docker URI that allows overriding of the default docker image specified for this version
                  - `system_settings` ({} KibanaSystemSettings)
                    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)
                      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)
                      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)
                    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)
                    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)
                    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)
                    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)
                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)
                  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)
                  A docker URI that allows overriding of the default docker image specified for this version
                - `system_settings` ({} KibanaSystemSettings)
                  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)
                    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)
                    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)
                  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)
                  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)
                  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)
                  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)
                Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Kibana instance settings.
                - `strategy` ({} PlanStrategy)
                  The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
                  - `rolling` ({} RollingStrategyConfig)
                    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)
                      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)
                      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)
                      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)
                      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)
                    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)
                    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)
                    A strategy that lets constructor choose the most optimal way to execute the plan.
                - `plan_configuration` ({} KibanaPlanControlConfiguration)
                  The configuration settings for the timeout and fallback parameters.
                  - `timeout` (integer)
                    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)
                    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
                  - `extended_maintenance` (boolean)
                    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)
                    Set to 'forced' to force a reboot as part of the upgrade plan
                    Values: `forced`
            - `plan_attempt_log` ([] ClusterPlanStepInfo)
              Same fields as `plan_attempt_log` in `current`
            - `source` ({} ChangeSourceInfo)
              A container for information about the source of a change.
              - `facilitator` (string)
                The service where the change originated from
              - `action` (string)
                The type of plan change that was initiated
              - `date` (string)
                The time the change was initiated
              - `user_id` (string)
                The user that requested the change
              - `admin_id` (string)
                The admin user that requested the change
              - `remote_addresses` ([] string)
                The host addresses of the user that originated the change
            - `warnings` ([] ClusterPlanWarning)
              - `code` (string)
                A unique warning code
              - `message` (string)
                A description of the warning
              - `step_id` (string)
                The ID of the step which produced a warning, if any
            - `error` ({} ClusterPlanAttemptError)
              Information about an error during a plan attempt.
              - `timestamp` (string)
                Timestamp marking on info log of step
              - `message` (string)
                Human readable error message
              - `details` (map string to string)
                A map with details regarding the error. Both the keys and values are always strings, representing the name of the detail and its value, respectively.
              - `failure_type` (string)
                The failure type
          - `pending` ({} KibanaClusterPlanInfo)
            Information about the current, pending, or past Kibana instance plan.
            Same fields as `current` in `plan_info`
          - `history` ([] KibanaClusterPlanInfo)
            Same fields as `current` in `plan_info`
        - `metadata` ({} ClusterMetadataInfo)
          Information about the public and internal state, and the configuration settings of an Elasticsearch cluster.
          Same fields as `metadata` in `info`
        - `topology` ({} ClusterTopologyInfo)
          The topology for Elasticsearch clusters, multiple Kibana instances, or multiple APM Servers. The `ClusterTopologyInfo` also includes the instances and containers, and where they are located.
          Same fields as `topology` in `info`
        - `external_links` ([] ExternalHyperlink · unique)
          External resources related to the cluster
          - `id` (string)
            Identifier of the external link
          - `label` (string)
            Human-readable description of the external link
          - `uri` (string)
            hyperlink to an external resource
        - `links` (map string to Hyperlink)
          A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
          Map values ({} Hyperlink)
          - `need_elevated_permissions` (boolean)
            Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `settings` ({} KibanaClusterSettings)
          The settings for multiple Kibana instances.
          - `metadata` ({} ClusterMetadataSettings)
            The top-level configuration settings for the Elasticsearch cluster.
            - `name` (string)
              The display name of the cluster
        - `region` (string)
          The region that this cluster belongs to. Only populated in SaaS or federated ECE.
    - `apm` ([] ApmResourceInfo)
      List of Apm resources in your Deployment
      - `ref_id` (string)
        The locally-unique user-specified id of a Resource
      - `elasticsearch_cluster_ref_id` (string)
        The Elasticsearch cluster that this resource depends on.
      - `id` (string)
        The randomly-generated id of a Resource
      - `region` (string)
        The region where this resource exists
      - `info` ({} ApmInfo)
        The overview information for the APM Server.
        - `id` (string)
          The id of the APM
        - `name` (string)
          The name of the APM
        - `elasticsearch_cluster` ({} TargetElasticsearchCluster)
          Information about the specified Elasticsearch cluster.
          - `elasticsearch_id` (string)
            The Elasticsearch cluster Id
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `deployment_id` (string)
          The id of the deployment that this APM Server belongs to.
        - `healthy` (boolean)
          Whether the APM is healthy or not (one or more of the info subsections will have healthy: false)
        - `status` (enum)
          APM status
          Values: `initializing`, `stopping`, `stopped`, `rebooting`, `restarting`, `reconfiguring`, `started`
        - `plan_info` ({} ApmPlansInfo)
          Information about current, pending, and past APM Server plans.
          - `healthy` (boolean)
            Whether the plan situation is healthy (if unhealthy, means the last plan attempt failed)
          - `current` ({} ApmPlanInfo)
            Information about the APM Server plan.
            - `plan_attempt_id` (string)
              A UUID for each plan attempt
            - `plan_attempt_name` (string)
              A human readable name for each plan attempt, only populated when retrieving plan histories
            - `healthy` (boolean)
              Either the plan ended successfully, or is not yet completed (and no errors have occurred)
            - `attempt_start_time` (string)
              When this plan attempt (ie to apply the plan to the APM) started (ISO format in UTC)
            - `attempt_end_time` (string)
              If this plan completed or failed (ie is not pending), when the attempt ended (ISO format in UTC)
            - `plan_end_time` (string)
              If this plan is not current or pending, when the plan was no longer active (ISO format in UTC)
            - `plan` ({} ApmPlan)
              The plan for the APM Server.
              - `cluster_topology` ([] ApmTopologyElement)
                - `instance_configuration_id` (string)
                  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)
                  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)
                  Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                  - `value` (integer)
                    Amount of resource
                  - `resource` (enum)
                    Type of resource. In ESS the resource used should always be `memory`.
                    Values: `memory`, `storage`
                - `zone_count` (integer)
                  number of zones in which nodes will be placed
                - `apm` ({} ApmConfiguration)
                  The configuration options for the APM Server.
                  - `version` (string)
                    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)
                    A docker URI that allows overriding of the default docker image specified for this version
                  - `system_settings` ({} ApmSystemSettings)
                    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)
                      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)
                      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)
                      Optionally override the secret token within APM - defaults to the previously existing secretToken
                    - `debug_enabled` (boolean)
                      Optionally enable debug mode for APM servers - defaults false
                  - `user_settings_json` (object)
                    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)
                    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)
                    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)
                    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)
                The configuration options for the APM Server.
                Same fields as `apm` in `cluster_topology`
              - `transient` ({} TransientApmPlanConfiguration)
                Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and APM Server settings.
                - `strategy` ({} PlanStrategy)
                  The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
                  - `rolling` ({} RollingStrategyConfig)
                    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)
                      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)
                      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)
                      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)
                      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)
                    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)
                    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)
                    A strategy that lets constructor choose the most optimal way to execute the plan.
                - `plan_configuration` ({} ApmPlanControlConfiguration)
                  The plan control configuration options for the APM Server.
                  - `timeout` (integer)
                    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)
                    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
                  - `extended_maintenance` (boolean)
                    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)
                    Set to 'forced' to force a reboot as part of the upgrade plan
                    Values: `forced`
            - `plan_attempt_log` ([] ClusterPlanStepInfo)
              Same fields as `plan_attempt_log` in `current`
            - `source` ({} ChangeSourceInfo)
              A container for information about the source of a change.
              - `facilitator` (string)
                The service where the change originated from
              - `action` (string)
                The type of plan change that was initiated
              - `date` (string)
                The time the change was initiated
              - `user_id` (string)
                The user that requested the change
              - `admin_id` (string)
                The admin user that requested the change
              - `remote_addresses` ([] string)
                The host addresses of the user that originated the change
            - `warnings` ([] ClusterPlanWarning)
              - `code` (string)
                A unique warning code
              - `message` (string)
                A description of the warning
              - `step_id` (string)
                The ID of the step which produced a warning, if any
            - `error` ({} ClusterPlanAttemptError)
              Information about an error during a plan attempt.
              - `timestamp` (string)
                Timestamp marking on info log of step
              - `message` (string)
                Human readable error message
              - `details` (map string to string)
                A map with details regarding the error. Both the keys and values are always strings, representing the name of the detail and its value, respectively.
              - `failure_type` (string)
                The failure type
          - `pending` ({} ApmPlanInfo)
            Information about the APM Server plan.
            Same fields as `current` in `plan_info`
          - `history` ([] ApmPlanInfo)
            Same fields as `current` in `plan_info`
        - `metadata` ({} ClusterMetadataInfo)
          Information about the public and internal state, and the configuration settings of an Elasticsearch cluster.
          Same fields as `metadata` in `info`
        - `topology` ({} ClusterTopologyInfo)
          The topology for Elasticsearch clusters, multiple Kibana instances, or multiple APM Servers. The `ClusterTopologyInfo` also includes the instances and containers, and where they are located.
          Same fields as `topology` in `info`
        - `external_links` ([] ExternalHyperlink · unique)
          External resources related to the APM
          - `id` (string)
            Identifier of the external link
          - `label` (string)
            Human-readable description of the external link
          - `uri` (string)
            hyperlink to an external resource
        - `links` (map string to Hyperlink)
          A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
          Map values ({} Hyperlink)
          - `need_elevated_permissions` (boolean)
            Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `settings` ({} ApmSettings)
          The settings for the APM Server.
          - `metadata` ({} ClusterMetadataSettings)
            The top-level configuration settings for the Elasticsearch cluster.
            - `name` (string)
              The display name of the cluster
        - `region` (string)
          The region that this APM belongs to. Only populated in SaaS or federated ECE.
        - `apm_server_mode` (enum)
          The mode APM is operating in.
          Values: `standalone`, `managed`
    - `appsearch` ([] AppSearchResourceInfo)
      List of App Search resources in your Deployment
      - `ref_id` (string)
        The locally-unique user-specified id of a Resource
      - `elasticsearch_cluster_ref_id` (string)
        The Elasticsearch cluster that this resource depends on.
      - `id` (string)
        The randomly-generated id of a Resource
      - `region` (string)
        The region where this resource exists
      - `info` ({} AppSearchInfo)
        The overview information for the App Search Server.
        - `id` (string)
          The id of the App Search
        - `name` (string)
          The name of the App Search
        - `elasticsearch_cluster` ({} TargetElasticsearchCluster)
          Information about the specified Elasticsearch cluster.
          - `elasticsearch_id` (string)
            The Elasticsearch cluster Id
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `deployment_id` (string)
          The id of the deployment that this App Search belongs to.
        - `healthy` (boolean)
          Whether the App Search is healthy or not (one or more of the info subsections will have healthy: false)
        - `status` (enum)
          App Search status
          Values: `initializing`, `stopping`, `stopped`, `rebooting`, `restarting`, `reconfiguring`, `started`
        - `plan_info` ({} AppSearchPlansInfo)
          Information about current, pending, and past App Search Server plans.
          - `healthy` (boolean)
            Whether the plan situation is healthy (if unhealthy, means the last plan attempt failed)
          - `current` ({} AppSearchPlanInfo)
            Information about the App Search Server plan.
            - `plan_attempt_id` (string)
              A UUID for each plan attempt
            - `plan_attempt_name` (string)
              A human readable name for each plan attempt, only populated when retrieving plan histories
            - `healthy` (boolean)
              Either the plan ended successfully, or is not yet completed (and no errors have occurred)
            - `attempt_start_time` (string)
              When this plan attempt (ie to apply the plan to the App Search) started (ISO format in UTC)
            - `attempt_end_time` (string)
              If this plan completed or failed (ie is not pending), when the attempt ended (ISO format in UTC)
            - `plan_end_time` (string)
              If this plan is not current or pending, when the plan was no longer active (ISO format in UTC)
            - `plan` ({} AppSearchPlan)
              The plan for the App Search cluster.
              - `cluster_topology` ([] AppSearchTopologyElement)
                - `node_type` ({} AppSearchNodeTypes)
                  Node types to enable for an AppSearch instance
                  - `appserver` (boolean)
                    Defines whether this instance should run as Application/API server
                  - `worker` (boolean)
                    Defines whether this instance should run as background worker
                - `instance_configuration_id` (string)
                  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)
                  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)
                  Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                  - `value` (integer)
                    Amount of resource
                  - `resource` (enum)
                    Type of resource. In ESS the resource used should always be `memory`.
                    Values: `memory`, `storage`
                - `zone_count` (integer)
                  number of zones in which nodes will be placed
                - `appsearch` ({} AppSearchConfiguration)
                  - `version` (string)
                    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)
                    A docker URI that allows overriding of the default docker image specified for this version
                  - `system_settings` ({} AppSearchSystemSettings)
                    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)
                      Optionally override the URL to which to send data (for advanced users only, if unspecified the system selects an internal URL)
                    - `elasticsearch_username` (string)
                      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)
                      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)
                      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)
                    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)
                    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)
                    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)
                    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)
                Same fields as `appsearch` in `cluster_topology`
              - `transient` ({} TransientAppSearchPlanConfiguration)
                Defines configuration parameters that control how the plan (ie consisting of the cluster topology and AppSearch settings) is applied
                - `strategy` ({} PlanStrategy)
                  The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
                  - `rolling` ({} RollingStrategyConfig)
                    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)
                      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)
                      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)
                      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)
                      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)
                    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)
                    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)
                    A strategy that lets constructor choose the most optimal way to execute the plan.
                - `plan_configuration` ({} AppSearchPlanControlConfiguration)
                  - `timeout` (integer)
                    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)
                    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)
                    - `from` (string)
                      The instance id that is going to be moved
                    - `to` ([] string)
                      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)
                      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)
                    - `from` (string)
                      The allocator id off which all instances in the cluster should be moved
                    - `to` ([] string)
                      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)
                      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)
                    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)
                    List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)
                  - `extended_maintenance` (boolean)
                    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)
                    Set to 'forced' to force a reboot as part of the upgrade plan
                    Values: `forced`
            - `plan_attempt_log` ([] ClusterPlanStepInfo)
              Same fields as `plan_attempt_log` in `current`
            - `source` ({} ChangeSourceInfo)
              A container for information about the source of a change.
              - `facilitator` (string)
                The service where the change originated from
              - `action` (string)
                The type of plan change that was initiated
              - `date` (string)
                The time the change was initiated
              - `user_id` (string)
                The user that requested the change
              - `admin_id` (string)
                The admin user that requested the change
              - `remote_addresses` ([] string)
                The host addresses of the user that originated the change
            - `warnings` ([] ClusterPlanWarning)
              - `code` (string)
                A unique warning code
              - `message` (string)
                A description of the warning
              - `step_id` (string)
                The ID of the step which produced a warning, if any
            - `error` ({} ClusterPlanAttemptError)
              Information about an error during a plan attempt.
              - `timestamp` (string)
                Timestamp marking on info log of step
              - `message` (string)
                Human readable error message
              - `details` (map string to string)
                A map with details regarding the error. Both the keys and values are always strings, representing the name of the detail and its value, respectively.
              - `failure_type` (string)
                The failure type
          - `pending` ({} AppSearchPlanInfo)
            Information about the App Search Server plan.
            Same fields as `current` in `plan_info`
          - `history` ([] AppSearchPlanInfo)
            Same fields as `current` in `plan_info`
        - `metadata` ({} ClusterMetadataInfo)
          Information about the public and internal state, and the configuration settings of an Elasticsearch cluster.
          Same fields as `metadata` in `info`
        - `topology` ({} ClusterTopologyInfo)
          The topology for Elasticsearch clusters, multiple Kibana instances, or multiple APM Servers. The `ClusterTopologyInfo` also includes the instances and containers, and where they are located.
          Same fields as `topology` in `info`
        - `external_links` ([] ExternalHyperlink · unique)
          External resources related to the App Search
          - `id` (string)
            Identifier of the external link
          - `label` (string)
            Human-readable description of the external link
          - `uri` (string)
            hyperlink to an external resource
        - `links` (map string to Hyperlink)
          A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
          Map values ({} Hyperlink)
          - `need_elevated_permissions` (boolean)
            Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `settings` ({} AppSearchSettings)
          The settings for the App Search.
          - `metadata` ({} ClusterMetadataSettings)
            The top-level configuration settings for the Elasticsearch cluster.
            - `name` (string)
              The display name of the cluster
        - `region` (string)
          The region that this App Search belongs to. Only populated in SaaS or federated ECE.
    - `enterprise_search` ([] EnterpriseSearchResourceInfo)
      List of Enterprise Search resources in your Deployment
      - `ref_id` (string)
        The locally-unique user-specified id of a Resource
      - `elasticsearch_cluster_ref_id` (string)
        The Elasticsearch cluster that this resource depends on.
      - `id` (string)
        The randomly-generated id of a Resource
      - `region` (string)
        The region where this resource exists
      - `info` ({} EnterpriseSearchInfo)
        The overview information for the Enterprise Search Server.
        - `id` (string)
          The id of the Enterprise Search
        - `name` (string)
          The name of the Enterprise Search
        - `elasticsearch_cluster` ({} TargetElasticsearchCluster)
          Information about the specified Elasticsearch cluster.
          - `elasticsearch_id` (string)
            The Elasticsearch cluster Id
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `deployment_id` (string)
          The id of the deployment that this Enterprise Search belongs to.
        - `healthy` (boolean)
          Whether the Enterprise Search is healthy or not (one or more of the info subsections will have healthy: false)
        - `status` (enum)
          Enterprise Search status
          Values: `initializing`, `stopping`, `stopped`, `rebooting`, `restarting`, `reconfiguring`, `started`
        - `plan_info` ({} EnterpriseSearchPlansInfo)
          Information about current, pending, and past Enterprise Search Server plans.
          - `healthy` (boolean)
            Whether the plan situation is healthy (if unhealthy, means the last plan attempt failed)
          - `current` ({} EnterpriseSearchPlanInfo)
            Information about the Enterprise Search Server plan.
            - `plan_attempt_id` (string)
              A UUID for each plan attempt
            - `plan_attempt_name` (string)
              A human readable name for each plan attempt, only populated when retrieving plan histories
            - `healthy` (boolean)
              Either the plan ended successfully, or is not yet completed (and no errors have occurred)
            - `attempt_start_time` (string)
              When this plan attempt (ie to apply the plan to the Enterprise Search) started (ISO format in UTC)
            - `attempt_end_time` (string)
              If this plan completed or failed (ie is not pending), when the attempt ended (ISO format in UTC)
            - `plan_end_time` (string)
              If this plan is not current or pending, when the plan was no longer active (ISO format in UTC)
            - `plan` ({} EnterpriseSearchPlan)
              The plan for the Enterprise Search cluster.
              - `cluster_topology` ([] EnterpriseSearchTopologyElement)
                - `node_type` ({} EnterpriseSearchNodeTypes)
                  Node types to enable for an Enterprise Search instance
                  - `appserver` (boolean)
                    Defines whether this instance should run as Application/API server
                  - `worker` (boolean)
                    Defines whether this instance should run as background worker
                  - `connector` (boolean)
                    Defines whether this instance should run as Connector
                - `instance_configuration_id` (string)
                  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)
                  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)
                  Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                  - `value` (integer)
                    Amount of resource
                  - `resource` (enum)
                    Type of resource. In ESS the resource used should always be `memory`.
                    Values: `memory`, `storage`
                - `zone_count` (integer)
                  number of zones in which nodes will be placed
                - `enterprise_search` ({} EnterpriseSearchConfiguration)
                  - `version` (string)
                    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)
                    A docker URI that allows overriding of the default docker image specified for this version
                  - `system_settings` ({} EnterpriseSearchSystemSettings)
                    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)
                      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)
                      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)
                      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)
                    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)
                    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)
                    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)
                    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)
                - `node_configuration` (string)
                - `memory_per_node` (object)
                - `node_count_per_zone` (object)
              - `enterprise_search` ({} EnterpriseSearchConfiguration)
                Same fields as `enterprise_search` in `cluster_topology`
              - `transient` ({} TransientEnterpriseSearchPlanConfiguration)
                Defines configuration parameters that control how the plan (i.e. consisting of the cluster topology and Enterprise Search settings) is applied
                - `strategy` ({} PlanStrategy)
                  The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
                  - `rolling` ({} RollingStrategyConfig)
                    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)
                      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)
                      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)
                      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)
                      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)
                    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)
                    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)
                    A strategy that lets constructor choose the most optimal way to execute the plan.
                - `plan_configuration` ({} EnterpriseSearchPlanControlConfiguration)
                  - `timeout` (integer)
                    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)
                    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)
                    - `from` (string)
                      The instance id that is going to be moved
                    - `to` ([] string)
                      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)
                      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)
                    - `from` (string)
                      The allocator id off which all instances in the cluster should be moved
                    - `to` ([] string)
                      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)
                      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)
                    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)
                    List of allocators on which instances are placed if possible (if not possible/not specified then any available allocator with space is used)
                  - `extended_maintenance` (boolean)
                    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)
                    Set to 'forced' to force a reboot as part of the upgrade plan
                    Values: `forced`
            - `plan_attempt_log` ([] ClusterPlanStepInfo)
              Same fields as `plan_attempt_log` in `current`
            - `source` ({} ChangeSourceInfo)
              A container for information about the source of a change.
              - `facilitator` (string)
                The service where the change originated from
              - `action` (string)
                The type of plan change that was initiated
              - `date` (string)
                The time the change was initiated
              - `user_id` (string)
                The user that requested the change
              - `admin_id` (string)
                The admin user that requested the change
              - `remote_addresses` ([] string)
                The host addresses of the user that originated the change
            - `warnings` ([] ClusterPlanWarning)
              - `code` (string)
                A unique warning code
              - `message` (string)
                A description of the warning
              - `step_id` (string)
                The ID of the step which produced a warning, if any
            - `error` ({} ClusterPlanAttemptError)
              Information about an error during a plan attempt.
              - `timestamp` (string)
                Timestamp marking on info log of step
              - `message` (string)
                Human readable error message
              - `details` (map string to string)
                A map with details regarding the error. Both the keys and values are always strings, representing the name of the detail and its value, respectively.
              - `failure_type` (string)
                The failure type
          - `pending` ({} EnterpriseSearchPlanInfo)
            Information about the Enterprise Search Server plan.
            Same fields as `current` in `plan_info`
          - `history` ([] EnterpriseSearchPlanInfo)
            Same fields as `current` in `plan_info`
        - `metadata` ({} ClusterMetadataInfo)
          Information about the public and internal state, and the configuration settings of an Elasticsearch cluster.
          Same fields as `metadata` in `info`
        - `topology` ({} ClusterTopologyInfo)
          The topology for Elasticsearch clusters, multiple Kibana instances, or multiple APM Servers. The `ClusterTopologyInfo` also includes the instances and containers, and where they are located.
          Same fields as `topology` in `info`
        - `external_links` ([] ExternalHyperlink · unique)
          External resources related to the Enterprise Search
          - `id` (string)
            Identifier of the external link
          - `label` (string)
            Human-readable description of the external link
          - `uri` (string)
            hyperlink to an external resource
        - `links` (map string to Hyperlink)
          A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
          Map values ({} Hyperlink)
          - `need_elevated_permissions` (boolean)
            Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `settings` ({} EnterpriseSearchSettings)
          The settings for the Enterprise Search.
          - `metadata` ({} ClusterMetadataSettings)
            The top-level configuration settings for the Elasticsearch cluster.
            - `name` (string)
              The display name of the cluster
        - `region` (string)
          The region that this Enterprise Search belongs to. Only populated in SaaS or federated ECE.
    - `integrations_server` ([] IntegrationsServerResourceInfo)
      List of Integrations Server resources in your Deployment
      - `ref_id` (string)
        The locally-unique user-specified id of a Resource
      - `elasticsearch_cluster_ref_id` (string)
        The Elasticsearch cluster that this resource depends on.
      - `id` (string)
        The randomly-generated id of a Resource
      - `region` (string)
        The region where this resource exists
      - `info` ({} IntegrationsServerInfo)
        The overview information for the Integrations Server.
        - `id` (string)
          The id of the Integrations Server
        - `name` (string)
          The name of the Integrations Server
        - `elasticsearch_cluster` ({} TargetElasticsearchCluster)
          Information about the specified Elasticsearch cluster.
          - `elasticsearch_id` (string)
            The Elasticsearch cluster Id
          - `links` (map string to Hyperlink)
            A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
            Map values ({} Hyperlink)
            - `need_elevated_permissions` (boolean)
              Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `deployment_id` (string)
          The id of the deployment that this Integrations Server belongs to.
        - `healthy` (boolean)
          Whether the Integrations Server is healthy or not (one or more of the info subsections will have healthy: false)
        - `status` (enum)
          Integrations Server status
          Values: `initializing`, `stopping`, `stopped`, `rebooting`, `restarting`, `reconfiguring`, `started`
        - `plan_info` ({} IntegrationsServerPlansInfo)
          Information about current, pending, and past Integrations Server plans.
          - `healthy` (boolean)
            Whether the plan situation is healthy (if unhealthy, means the last plan attempt failed)
          - `current` ({} IntegrationsServerPlanInfo)
            Information about the Integrations Server plan.
            - `plan_attempt_id` (string)
              A UUID for each plan attempt
            - `plan_attempt_name` (string)
              A human readable name for each plan attempt, only populated when retrieving plan histories
            - `healthy` (boolean)
              Either the plan ended successfully, or is not yet completed (and no errors have occurred)
            - `attempt_start_time` (string)
              When this plan attempt (ie to apply the plan to the Integrations Server) started (ISO format in UTC)
            - `attempt_end_time` (string)
              If this plan completed or failed (ie is not pending), when the attempt ended (ISO format in UTC)
            - `plan_end_time` (string)
              If this plan is not current or pending, when the plan was no longer active (ISO format in UTC)
            - `plan` ({} IntegrationsServerPlan)
              The plan for the Integrations Server.
              - `cluster_topology` ([] IntegrationsServerTopologyElement)
                - `instance_configuration_id` (string)
                  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)
                  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)
                  Measured by the amount of a resource. The final cluster size is calculated using multipliers from the topology instance configuration.
                  - `value` (integer)
                    Amount of resource
                  - `resource` (enum)
                    Type of resource. In ESS the resource used should always be `memory`.
                    Values: `memory`, `storage`
                - `zone_count` (integer)
                  number of zones in which nodes will be placed
                - `integrations_server` ({} IntegrationsServerConfiguration)
                  The configuration options for the Integrations Server.
                  - `version` (string)
                    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)
                    A docker URI that allows overriding of the default docker image specified for this version
                  - `system_settings` ({} IntegrationsServerSystemSettings)
                    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)
                      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)
                      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)
                      Optionally override the secret token within Integrations Server - defaults to the previously existing secretToken
                    - `debug_enabled` (boolean)
                      Optionally enable debug mode for Integrations Server - defaults false
                  - `user_settings_json` (object)
                    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)
                    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)
                    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)
                    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)
                    The mode the Integrations Server is operating in.
                    Values: `standalone`, `managed`
              - `integrations_server` ({} IntegrationsServerConfiguration)
                The configuration options for the Integrations Server.
                Same fields as `integrations_server` in `cluster_topology`
              - `transient` ({} TransientIntegrationsServerPlanConfiguration)
                Defines the configuration parameters that control how the plan is applied. For example, the Elasticsearch cluster topology and Integrations Server settings.
                - `strategy` ({} PlanStrategy)
                  The options for performing a plan change. Specify only one property each time. The default is `grow_and_shrink`.
                  - `rolling` ({} RollingStrategyConfig)
                    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)
                      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)
                      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)
                      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)
                      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)
                    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)
                    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)
                    A strategy that lets constructor choose the most optimal way to execute the plan.
                - `plan_configuration` ({} IntegrationsServerPlanControlConfiguration)
                  The plan control configuration options for the Integrations Server.
                  - `timeout` (integer)
                    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)
                    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
                  - `extended_maintenance` (boolean)
                    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)
                    Set to 'forced' to force a reboot as part of the upgrade plan
                    Values: `forced`
            - `plan_attempt_log` ([] ClusterPlanStepInfo)
              Same fields as `plan_attempt_log` in `current`
            - `source` ({} ChangeSourceInfo)
              A container for information about the source of a change.
              - `facilitator` (string)
                The service where the change originated from
              - `action` (string)
                The type of plan change that was initiated
              - `date` (string)
                The time the change was initiated
              - `user_id` (string)
                The user that requested the change
              - `admin_id` (string)
                The admin user that requested the change
              - `remote_addresses` ([] string)
                The host addresses of the user that originated the change
            - `warnings` ([] ClusterPlanWarning)
              - `code` (string)
                A unique warning code
              - `message` (string)
                A description of the warning
              - `step_id` (string)
                The ID of the step which produced a warning, if any
            - `error` ({} ClusterPlanAttemptError)
              Information about an error during a plan attempt.
              - `timestamp` (string)
                Timestamp marking on info log of step
              - `message` (string)
                Human readable error message
              - `details` (map string to string)
                A map with details regarding the error. Both the keys and values are always strings, representing the name of the detail and its value, respectively.
              - `failure_type` (string)
                The failure type
          - `pending` ({} IntegrationsServerPlanInfo)
            Information about the Integrations Server plan.
            Same fields as `current` in `plan_info`
          - `history` ([] IntegrationsServerPlanInfo)
            Same fields as `current` in `plan_info`
        - `metadata` ({} ClusterMetadataInfo)
          Information about the public and internal state, and the configuration settings of an Elasticsearch cluster.
          Same fields as `metadata` in `info`
        - `topology` ({} ClusterTopologyInfo)
          The topology for Elasticsearch clusters, multiple Kibana instances, or multiple APM Servers. The `ClusterTopologyInfo` also includes the instances and containers, and where they are located.
          Same fields as `topology` in `info`
        - `external_links` ([] ExternalHyperlink · unique)
          External resources related to the Integrations Server
          - `id` (string)
            Identifier of the external link
          - `label` (string)
            Human-readable description of the external link
          - `uri` (string)
            hyperlink to an external resource
        - `links` (map string to Hyperlink)
          A map of application-specific operations (which map to 'operationId's in the Swagger API) to metadata about that operation
          Map values ({} Hyperlink)
          - `need_elevated_permissions` (boolean)
            Whether the operation requires elevated permissions (when the field is present, elevated permissions are required).
        - `settings` ({} IntegrationsServerSettings)
          The settings for the Integrations Server.
          - `metadata` ({} ClusterMetadataSettings)
            The top-level configuration settings for the Elasticsearch cluster.
            - `name` (string)
              The display name of the cluster
        - `region` (string)
          The region that this Integrations Server belongs to. Only populated in SaaS or federated ECE.
        - `apm_server_mode` (enum)
          The mode APM is operating in.
          Values: `standalone`, `managed`
  - `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.
    - `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.
  - `metadata` ({} DeploymentMetadata)
    Additional information about the current deployment object.
    - `tags` ([] MetadataItem)
      Arbitrary user-defined metadata associated with this deployment
      - `key` (string)
        The metadata field name
      - `value` (string)
        The metadata value
    - `byok_enabled` (boolean)
      Indicates if the Deployment is BYOK enabled or not
    - `byok_migration` (boolean)
      True if a BYOK migration was requested for this deployment via the migrate_to_byok API. Set at request time, before any plan runs — not a completion signal.
- `minimal_metadata` ([] object)
- `cursor` (string)
  To retrieve the next batch of deployments from this search, specify this value in the cursor field of the next search request. For paginated searches, it is recommended to sort on a static and unique field, like deployment or cluster id. A static and unique sort avoids concurrent updates causing a deployment to move across pages and becoming a duplicate or lost entry. The default sort of rank and modified date is often good for getting a particular deployment into the first page, but if a not yet seen deployment is modified in between page requests, then it would be left out from the next page.
##### 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)

## Code Examples

#### Console

```console
POST /deployments/_search
```

#### curl

```curl
curl -X POST "https://api.elastic-cloud.com/api/v1/deployments/_search"
```

