Elastic Stack (ELK Stack) Deployment Templates API
The DeploymentTemplates API from Elastic Stack (ELK Stack) — 2 operation(s) for deploymenttemplates.
The DeploymentTemplates API from Elastic Stack (ELK Stack) — 2 operation(s) for deploymenttemplates.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/elk-stack-deploymenttemplates-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: '1'
title: Elastic Cloud Enterprise Deployment Templates API
termsOfService: ''
servers:
- url: https://{{hostname}}/api/v1
security:
- basicAuth: []
- apiKey: []
tags:
- name: DeploymentTemplates
paths:
/deployments/templates:
get:
tags:
- DeploymentTemplates
summary: Get deployment templates
description: Retrieves all deployment templates.
operationId: get-deployment-templates-v2
parameters:
- name: metadata
in: query
description: An optional key/value pair in the form of (key:value) that will act as a filter and exclude any templates that do not have a matching metadata item associated.
required: false
schema:
type: string
- name: show_instance_configurations
in: query
description: If true, will return details for each instance configuration referenced by the template.
required: false
schema:
type: boolean
default: true
- name: show_max_zones
in: query
description: If true, will populate the max_zones field in the instance configurations. Only relevant if show_instance_configurations=true.
required: false
schema:
type: boolean
default: false
- name: stack_version
in: query
description: If present, it will cause the returned deployment templates to be adapted to return only the elements allowed in that version.
required: false
schema:
type: string
- name: hide_deprecated
in: query
description: If true, templates flagged as deprecated will NOT be returned.
required: false
schema:
type: boolean
default: false
- name: show_hidden
in: query
description: If true, templates flagged as hidden will be returned.
required: false
schema:
type: boolean
default: false
- name: region
in: query
description: Region of the deployment templates
required: true
schema:
type: string
responses:
'200':
description: The deployment templates were returned successfully.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DeploymentTemplateInfoV2'
'401':
description: 'The user is not authorized to access requested region. (code: `templates.region_not_allowed`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_allowed
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'400':
description: 'The requested region was not found. (code: `templates.region_not_found`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_found
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
x-doc:
tag: Deployments - Templates
post:
tags:
- DeploymentTemplates
summary: Create deployment template
description: Creates a deployment template.
operationId: create-deployment-template-v2
parameters:
- name: validate_only
in: query
description: If true, the deployment template definition will be validated but the template will not be created.
required: false
schema:
type: boolean
default: false
- name: region
in: query
description: Region of the deployment template
required: true
schema:
type: string
responses:
'201':
description: The deployment definition was valid and the template has been created.
content:
application/json:
schema:
$ref: '#/components/schemas/IdResponse'
'200':
description: The request was valid (used when validate_only is true).
content:
application/json:
schema:
$ref: '#/components/schemas/IdResponse'
'400':
description: 'The requested region is not supported. (code: `templates.region_not_found`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_found
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'401':
description: 'The user is not authorized to access requested region. (code: `templates.region_not_allowed`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_allowed
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
x-doc:
tag: Deployments - Templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentTemplateRequestBody'
description: The deployment template definition.
required: true
/deployments/templates/{template_id}:
get:
tags:
- DeploymentTemplates
summary: Get deployment template
description: Retrieves a deployment template by id.
operationId: get-deployment-template-v2
parameters:
- name: template_id
in: path
description: The identifier for the deployment template.
required: true
schema:
type: string
- name: show_instance_configurations
in: query
description: If true, will return details for each instance configuration referenced by the template.
required: false
schema:
type: boolean
default: true
- name: show_max_zones
in: query
description: If true, will populate the max_zones field in the instance configurations. Only relevant if show_instance_configurations=true.
required: false
schema:
type: boolean
default: false
- name: stack_version
in: query
description: If present, it will cause the returned deployment template to be adapted to return only the elements allowed in that version.
required: false
schema:
type: string
- name: region
in: query
description: Region of the deployment template
required: true
schema:
type: string
responses:
'200':
description: The deployment template was found and returned successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentTemplateInfoV2'
'404':
description: 'The deployment template specified by {template_id} cannot be found. (code: `templates.template_not_found`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.template_not_found
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'401':
description: 'The user is not authorized to access requested region. (code: `templates.region_not_allowed`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_allowed
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'400':
description: 'The requested region is not supported. (code: `templates.region_not_found`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_found
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
x-doc:
tag: Deployments - Templates
put:
tags:
- DeploymentTemplates
summary: Set deployment template
description: Creates or updates a deployment template.
operationId: set-deployment-template-v2
parameters:
- name: template_id
in: path
description: The identifier for the deployment template.
required: true
schema:
type: string
- name: version
in: query
description: If specified, checks for conflicts against the version of the template (returned in 'x-cloud-resource-version' of the GET request)
required: false
schema:
type: string
- name: create_only
in: query
description: If true, will fail if the deployment template already exists at the given id
required: false
schema:
type: boolean
default: false
- name: validate_only
in: query
description: If true, the deployment template definition will be validated but the template will not be updated.
required: false
schema:
type: boolean
default: false
- name: region
in: query
description: Region of the deployment template
required: true
schema:
type: string
responses:
'200':
description: The deployment definition was valid and the template has been updated.
content:
application/json:
schema:
$ref: '#/components/schemas/IdResponse'
'201':
description: The deployment definition was valid and the template was created.
content:
application/json:
schema:
$ref: '#/components/schemas/IdResponse'
'400':
description: 'The requested region is not supported. (code: `templates.region_not_found`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_found
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'401':
description: 'The user is not authorized to access requested region. (code: `templates.region_not_allowed`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_allowed
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'404':
description: 'The deployment template specified by {template_id} cannot be found. (code: `templates.template_not_found`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.template_not_found
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'409':
description: 'The version supplied in the request conflicted with the version found on the server. (code: `templates.version_conflict`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.version_conflict
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
x-doc:
tag: Deployments - Templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeploymentTemplateRequestBody'
description: The deployment template definition.
required: true
delete:
tags:
- DeploymentTemplates
summary: Delete deployment template
description: Deletes a deployment template by id.
operationId: delete-deployment-template-v2
parameters:
- name: template_id
in: path
description: The identifier for the deployment template.
required: true
schema:
type: string
- name: region
in: query
description: Region of the deployment template
required: true
schema:
type: string
responses:
'200':
description: The deployment template was successfully deleted.
content:
application/json:
schema:
$ref: '#/components/schemas/EmptyResponse'
'404':
description: 'The deployment template specified by {template_id} cannot be found. (code: `templates.template_not_found`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.template_not_found
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'401':
description: 'The user is not authorized to access requested region. (code: `templates.region_not_allowed`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_allowed
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
'400':
description: 'The requested region is not supported. (code: `templates.region_not_found`)'
headers:
x-cloud-error-codes:
description: The error codes associated with the response
schema:
type: string
enum:
- templates.region_not_found
content:
application/json:
schema:
$ref: '#/components/schemas/BasicFailedReply'
x-doc:
tag: Deployments - Templates
components:
schemas:
ElasticsearchPayload:
type: object
required:
- plan
- ref_id
- region
properties:
ref_id:
type: string
description: A locally-unique user-specified id for this Elasticsearch cluster
display_name:
type: string
description: The human readable name for the cluster (defaults to the generated cluster id if not specified)
region:
type: string
description: The region where this resource exists
plan:
description: The plan for building this Elasticsearch cluster
$ref: '#/components/schemas/ElasticsearchClusterPlan'
settings:
description: The settings for building this Elasticsearch cluster
$ref: '#/components/schemas/ElasticsearchClusterSettings'
description: An alias for an Elasticsearch Cluster paired with a request for creating one
AppSearchConfiguration:
type: object
properties:
version:
type: string
description: 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:
type: string
description: A docker URI that allows overriding of the default docker image specified for this version
system_settings:
$ref: '#/components/schemas/AppSearchSystemSettings'
user_settings_json:
type: object
description: 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)
properties: {}
user_settings_yaml:
type: string
description: 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:
type: object
description: 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)
properties: {}
user_settings_override_yaml:
type: string
description: 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)
TransientEnterpriseSearchPlanConfiguration:
type: object
properties:
strategy:
$ref: '#/components/schemas/PlanStrategy'
plan_configuration:
$ref: '#/components/schemas/EnterpriseSearchPlanControlConfiguration'
description: Defines configuration parameters that control how the plan (i.e. consisting of the cluster topology and Enterprise Search settings) is applied
ElasticsearchNodeType:
type: object
properties:
master:
type: boolean
description: 'Defines whether this node can be elected master (default: false)'
data:
type: boolean
description: 'Defines whether this node can hold data (default: false)'
ingest:
type: boolean
description: 'Defines whether this node can run an ingest pipeline (default: false)'
ml:
type: boolean
description: 'Defines whether this node can run ml jobs, valid only for versions 5.4.0 or greater (default: false)'
description: '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.'
ClusterMetadataResourcesSettings:
type: object
properties:
cpu:
$ref: '#/components/schemas/ClusterMetadataCpuResourcesSettings'
description: The top-level configuration settings for the Elasticsearch cluster resources.
DeploymentCreateResources:
type: object
properties:
elasticsearch:
type: array
description: A list of payloads for Elasticsearch cluster creation.
items:
$ref: '#/components/schemas/ElasticsearchPayload'
kibana:
type: array
description: A list of payloads for Kibana creation.
items:
$ref: '#/components/schemas/KibanaPayload'
apm:
type: array
description: 'A list of payloads for APM creation. WARNING: For stack versions 8.0.0 and higher the integrations_server payload should be used instead, as this field becomes deprecated.'
items:
$ref: '#/components/schemas/ApmPayload'
appsearch:
type: array
description: A list of payloads for AppSearch updates. AppSearch has been replaced by Enterprise Search in the Elastic Stack 7.7 and higher.
items:
$ref: '#/components/schemas/AppSearchPayload'
enterprise_search:
type: array
description: A list of payloads for Enterprise Search creation.
items:
$ref: '#/components/schemas/EnterpriseSearchPayload'
integrations_server:
type: array
description: A list of payloads for Integrations Server creation.
items:
$ref: '#/components/schemas/IntegrationsServerPayload'
description: Describes the resources that will belong to a Deployment
RestoreSnapshotConfiguration:
type: object
required:
- snapshot_name
properties:
repository_name:
type: string
description: If specified, contains the name of the snapshot repository - else will default to the Elastic Cloud system repo ('found-snapshots')
snapshot_name:
type: string
description: The name of the snapshot to restore. Use '\_\_latest_success\_\_' to get the most recent snapshot from the specified repository
repository_config:
description: Raw remote snapshot restore settings. Do not send this if you are sending source_cluster_id
$ref: '#/components/schemas/RestoreSnapshotRepoConfiguration'
restore_payload:
$ref: '#/components/schemas/RestoreSnapshotApiConfiguration'
strategy:
type: string
description: The restore strategy to use. Defaults to a full restore. Partial restore will attempt to restore unavailable indices only
enum:
- partial
- full
- recovery
source_cluster_id:
type: string
description: If specified, contains the name of the source cluster id. Do not send this if you are sending repository_config
description: Restores a snapshot from a local or remote repository.
ElasticsearchScriptTypeSettings:
type: object
properties:
enabled:
type: boolean
description: '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:
type: boolean
description: '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]'')'
description: 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`).
ElasticsearchConfiguration:
type: object
properties:
version:
type: string
description: 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:
type: string
description: A docker URI that allows overriding of the default docker image specified for this version
system_settings:
$ref: '#/components/schemas/ElasticsearchSystemSettings'
user_settings_json:
type: object
description: '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)'
properties: {}
user_settings_yaml:
type: string
description: '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:
type: object
description: '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)'
properties: {}
user_settings_override_yaml:
type: string
description: '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:
type: array
description: '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)'
items:
type: string
user_plugins:
type: array
description: A list of admin-uploaded plugin objects that are available for this user.
items:
$ref: '#/components/schemas/ElasticsearchUserPlugin'
user_bundles:
type: array
description: A list of admin-uploaded bundle objects (eg scripts, synonym files) that are available for this user.
items:
$ref: '#/components/schemas/ElasticsearchUserBundle'
curation:
description: Defines the index curation routing for the cluster
$ref: '#/components/schemas/ElasticsearchCuration'
node_attributes:
type: object
description: Defines the Elasticsearch node attributes for the instances in the topology
additionalProperties:
type: string
description: 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.
EmptyResponse:
type: object
DiscreteSizes:
type: object
required:
- sizes
properties:
sizes:
type: array
description: List of supported sizes
items:
type: integer
format: int32
default_size:
type: integer
format: int32
description: The default size
resource:
type: string
description: The unit that each size represents. If not specified, it will default to 'memory'.
enum:
- memory
- storage
description: Instance sizes that are supported by the Elasticsearch instance, Kibana instance, or APM Server configuration.
ApmConfiguration:
type: object
properties:
version:
type: string
description: 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:
type: string
description: A docker URI that allows overriding of the default docker image specified for this version
system_settings:
$ref: '#/components/schemas/ApmSystemSettings'
user_settings_json:
type: object
description: 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)
properties: {}
user_settings_yaml:
type: string
description: 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:
type: object
description: 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)
properties: {}
user_settings_override_yaml:
type: string
description: 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)
description: The configuration options for the APM Server.
ManagedMonitoringSettings:
type: object
required:
- target_cluster_id
properties:
target_cluster_id:
type: string
description: The Id of the target cluster to which to send monitoring information
description: The settings for sending monitoring information to another cluster.
ElasticsearchClusterTrustSettings:
type: object
properties:
accounts:
type: array
description: The list of trust relationships with different accounts
items:
$ref: '#/components/schemas/AccountTrustRelationship'
external:
type: array
description: The list of trust relationships with external entities
items:
$ref: '#/components/schemas/ExternalTrustRelationship'
direct:
type: array
description: 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.
items:
$ref: '#/components/schemas/DirectTrustRelationship'
description: Configuration of trust with other clusters.
IntegrationsServerConfiguration:
type: object
properties:
version:
type: string
description: 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:
type: string
description: A docker URI that allows overriding of the default docker image specified for this version
system_settings:
$ref: '#/components/schemas/IntegrationsServerSystemSettings'
user_settings_json:
type: object
description: An arbitrary JSON object allowing (non-admin) cluster
# --- truncated at 32 KB (130 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elk-stack/refs/heads/main/openapi/elk-stack-deploymenttemplates-api-openapi.yml