{"name":"elasticstack","version":"0.14.2","description":"A Pulumi provider dynamically bridged from elasticstack.","attribution":"This Pulumi package is based on the [`elasticstack` Terraform Provider](https://github.com/elastic/terraform-provider-elasticstack).","repository":"https://github.com/elastic/terraform-provider-elasticstack","publisher":"elastic","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"compatibility":"tfbridge20","liftSingleValueMethodReturns":true,"respectSchemaVersion":true},"go":{"generateExtraInputTypes":true,"importBasePath":"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack","liftSingleValueMethodReturns":true,"respectSchemaVersion":true,"rootPackageName":"elasticstack"},"java":{"basePackage":"","buildFiles":"","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"compatibility":"tfbridge20","disableUnionOutputTypes":true,"liftSingleValueMethodReturns":true,"packageDescription":"A Pulumi provider dynamically bridged from elasticstack.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/elastic/terraform-provider-elasticstack)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e please consult the source [`terraform-provider-elasticstack` repo](https://github.com/elastic/terraform-provider-elasticstack/issues).","respectSchemaVersion":true},"python":{"compatibility":"tfbridge20","pyproject":{"enabled":true},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/elastic/terraform-provider-elasticstack)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e please consult the source [`terraform-provider-elasticstack` repo](https://github.com/elastic/terraform-provider-elasticstack/issues).","respectSchemaVersion":true}},"config":{"variables":{"elasticsearch":{"$ref":"#/types/elasticstack:config%2Felasticsearch:elasticsearch","description":"Elasticsearch connection configuration block."},"fleet":{"$ref":"#/types/elasticstack:config%2Ffleet:fleet","description":"Fleet connection configuration block."},"kibana":{"$ref":"#/types/elasticstack:config%2Fkibana:kibana","description":"Kibana connection configuration block."}}},"types":{"elasticstack:config/elasticsearch:elasticsearch":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:config/fleet:fleet":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Fleet.\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Fleet.\n","secret":true},"caCerts":{"type":"array","items":{"type":"string"},"description":"A list of paths to CA certificates to validate the certificate presented by the Fleet server.\n"},"endpoint":{"type":"string","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"password":{"type":"string","description":"Password to use for API authentication to Fleet.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Fleet.\n"}},"type":"object"},"elasticstack:config/kibana:kibana":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Kibana\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Kibana\n","secret":true},"caCerts":{"type":"array","items":{"type":"string"},"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"password":{"type":"string","description":"Password to use for API authentication to Kibana.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Kibana.\n"}},"type":"object"},"elasticstack:index/ElasticsearchClusterSettingsElasticsearchConnection:ElasticsearchClusterSettingsElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchClusterSettingsPersistent:ElasticsearchClusterSettingsPersistent":{"properties":{"settings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsPersistentSetting:ElasticsearchClusterSettingsPersistentSetting"},"description":"Defines the setting in the cluster.\n"}},"type":"object","required":["settings"]},"elasticstack:index/ElasticsearchClusterSettingsPersistentSetting:ElasticsearchClusterSettingsPersistentSetting":{"properties":{"name":{"type":"string","description":"The name of the setting to set and track.\n"},"value":{"type":"string","description":"The value of the setting to set and track.\n"},"valueLists":{"type":"array","items":{"type":"string"},"description":"The list of values to be set for the key, where the list is required.\n"}},"type":"object","required":["name"]},"elasticstack:index/ElasticsearchClusterSettingsTransient:ElasticsearchClusterSettingsTransient":{"properties":{"settings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsTransientSetting:ElasticsearchClusterSettingsTransientSetting"},"description":"Defines the setting in the cluster.\n"}},"type":"object","required":["settings"]},"elasticstack:index/ElasticsearchClusterSettingsTransientSetting:ElasticsearchClusterSettingsTransientSetting":{"properties":{"name":{"type":"string","description":"The name of the setting to set and track.\n"},"value":{"type":"string","description":"The value of the setting to set and track.\n"},"valueLists":{"type":"array","items":{"type":"string"},"description":"The list of values to be set for the key, where the list is required.\n"}},"type":"object","required":["name"]},"elasticstack:index/ElasticsearchComponentTemplateElasticsearchConnection:ElasticsearchComponentTemplateElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchComponentTemplateTemplate:ElasticsearchComponentTemplateTemplate":{"properties":{"aliases":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplateAlias:ElasticsearchComponentTemplateTemplateAlias"},"description":"Alias to add.\n"},"mappings":{"type":"string","description":"Mapping for fields in the index. Should be specified as a JSON object of field mappings. See the documentation (https://www.elastic.co/guide/en/elasticsearch/reference/current/explicit-mapping.html) for more details\n"},"settings":{"type":"string","description":"Configuration options for the index. See the [index modules settings documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings) for more details.\n"}},"type":"object"},"elasticstack:index/ElasticsearchComponentTemplateTemplateAlias:ElasticsearchComponentTemplateTemplateAlias":{"properties":{"filter":{"type":"string","description":"Query used to limit documents the alias can access.\n"},"indexRouting":{"type":"string","description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the routing value for indexing operations.\n"},"isHidden":{"type":"boolean","description":"If true, the alias is hidden.\n"},"isWriteIndex":{"type":"boolean","description":"If true, the index is the write index for the alias.\n"},"name":{"type":"string","description":"The alias name. Index alias names support date math. See the [date math index names documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/date-math-index-names.html) for more details.\n"},"routing":{"type":"string","description":"Value used to route indexing and search operations to a specific shard.\n"},"searchRouting":{"type":"string","description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n"}},"type":"object","required":["name"]},"elasticstack:index/ElasticsearchDataStreamElasticsearchConnection:ElasticsearchDataStreamElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchDataStreamIndex:ElasticsearchDataStreamIndex":{"properties":{"indexName":{"type":"string"},"indexUuid":{"type":"string"}},"type":"object","required":["indexName","indexUuid"]},"elasticstack:index/ElasticsearchDataStreamLifecycleDownsampling:ElasticsearchDataStreamLifecycleDownsampling":{"properties":{"after":{"type":"string","description":"Interval representing when the backing index is meant to be downsampled\n"},"fixedInterval":{"type":"string","description":"The interval at which to aggregate the original time series index.\n"}},"type":"object","required":["after","fixedInterval"]},"elasticstack:index/ElasticsearchDataStreamLifecycleElasticsearchConnection:ElasticsearchDataStreamLifecycleElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchEnrichPolicyElasticsearchConnection:ElasticsearchEnrichPolicyElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexAlias:ElasticsearchIndexAlias":{"properties":{"filter":{"type":"string","description":"Query used to limit documents the alias can access.\n"},"indexRouting":{"type":"string","description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the \u003cspan pulumi-lang-nodejs=\"`routing`\" pulumi-lang-dotnet=\"`Routing`\" pulumi-lang-go=\"`routing`\" pulumi-lang-python=\"`routing`\" pulumi-lang-yaml=\"`routing`\" pulumi-lang-java=\"`routing`\"\u003e`routing`\u003c/span\u003e value for indexing operations.\n"},"isHidden":{"type":"boolean","description":"If true, the alias is hidden.\n"},"isWriteIndex":{"type":"boolean","description":"If true, the index is the write index for the alias.\n"},"name":{"type":"string","description":"Index alias name.\n"},"routing":{"type":"string","description":"Value used to route indexing and search operations to a specific shard.\n"},"searchRouting":{"type":"string","description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n"}},"type":"object","required":["name"],"language":{"nodejs":{"requiredOutputs":["indexRouting","isHidden","isWriteIndex","name","routing","searchRouting"]}}},"elasticstack:index/ElasticsearchIndexAliasReadIndex:ElasticsearchIndexAliasReadIndex":{"properties":{"filter":{"type":"string","description":"Query used to limit documents the alias can access.\n"},"indexRouting":{"type":"string","description":"Value used to route indexing operations to a specific shard.\n"},"isHidden":{"type":"boolean","description":"If true, the alias is hidden.\n"},"name":{"type":"string","description":"Name of the read index.\n"},"routing":{"type":"string","description":"Value used to route indexing and search operations to a specific shard.\n"},"searchRouting":{"type":"string","description":"Value used to route search operations to a specific shard.\n"}},"type":"object","required":["name"],"language":{"nodejs":{"requiredOutputs":["isHidden","name"]}}},"elasticstack:index/ElasticsearchIndexAliasWriteIndex:ElasticsearchIndexAliasWriteIndex":{"properties":{"filter":{"type":"string","description":"Query used to limit documents the alias can access.\n"},"indexRouting":{"type":"string","description":"Value used to route indexing operations to a specific shard.\n"},"isHidden":{"type":"boolean","description":"If true, the alias is hidden.\n"},"name":{"type":"string","description":"Name of the write index.\n"},"routing":{"type":"string","description":"Value used to route indexing and search operations to a specific shard.\n"},"searchRouting":{"type":"string","description":"Value used to route search operations to a specific shard.\n"}},"type":"object","required":["name"],"language":{"nodejs":{"requiredOutputs":["isHidden","name"]}}},"elasticstack:index/ElasticsearchIndexElasticsearchConnection:ElasticsearchIndexElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleCold:ElasticsearchIndexLifecycleCold":{"properties":{"allocate":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleColdAllocate:ElasticsearchIndexLifecycleColdAllocate","description":"Updates the index settings to change which nodes are allowed to host the index shards and change the number of replicas.\n"},"downsample":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleColdDownsample:ElasticsearchIndexLifecycleColdDownsample","description":"Roll up documents within a fixed interval to a single summary document. Reduces the index footprint by storing time series data at reduced granularity.\n"},"freeze":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleColdFreeze:ElasticsearchIndexLifecycleColdFreeze","description":"Freeze the index to minimize its memory footprint.\n"},"migrate":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleColdMigrate:ElasticsearchIndexLifecycleColdMigrate","description":"Moves the index to the data tier that corresponds to the current phase by updating the \"index.routing.allocation.include.*tier*preference\" index setting.\n"},"minAge":{"type":"string","description":"ILM moves indices through the lifecycle according to their age. To control the timing of these transitions, you set a minimum age for each phase.\n"},"readonly":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleColdReadonly:ElasticsearchIndexLifecycleColdReadonly","description":"Makes the index read-only.\n"},"searchableSnapshot":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleColdSearchableSnapshot:ElasticsearchIndexLifecycleColdSearchableSnapshot","description":"Takes a snapshot of the managed index in the configured repository and mounts it as a searchable snapshot.\n"},"setPriority":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleColdSetPriority:ElasticsearchIndexLifecycleColdSetPriority","description":"Sets the priority of the index as soon as the policy enters the hot, warm, or cold phase. Higher priority indices are recovered before indices with lower priorities following a node restart. Default priority is 1.\n"},"unfollow":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleColdUnfollow:ElasticsearchIndexLifecycleColdUnfollow","description":"Convert a follower index to a regular index. Performed automatically before a rollover, shrink, or searchable snapshot action.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["minAge"]}}},"elasticstack:index/ElasticsearchIndexLifecycleColdAllocate:ElasticsearchIndexLifecycleColdAllocate":{"properties":{"exclude":{"type":"string","description":"Assigns an index to nodes that have none of the specified custom attributes. Must be valid JSON document.\n"},"include":{"type":"string","description":"Assigns an index to nodes that have at least one of the specified custom attributes. Must be valid JSON document.\n"},"numberOfReplicas":{"type":"number","description":"Number of replicas to assign to the index. Default: \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e\n"},"require":{"type":"string","description":"Assigns an index to nodes that have all of the specified custom attributes. Must be valid JSON document.\n"},"totalShardsPerNode":{"type":"number","description":"The maximum number of shards for the index on a single Elasticsearch node. Defaults to `-1` (unlimited). Supported from Elasticsearch version **7.16**\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdDownsample:ElasticsearchIndexLifecycleColdDownsample":{"properties":{"fixedInterval":{"type":"string","description":"Downsampling interval\n"},"waitTimeout":{"type":"string","description":"Downsampling interval\n"}},"type":"object","required":["fixedInterval"],"language":{"nodejs":{"requiredOutputs":["fixedInterval","waitTimeout"]}}},"elasticstack:index/ElasticsearchIndexLifecycleColdFreeze:ElasticsearchIndexLifecycleColdFreeze":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM freezes the index.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdMigrate:ElasticsearchIndexLifecycleColdMigrate":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM automatically migrates the index during this phase.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdReadonly:ElasticsearchIndexLifecycleColdReadonly":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM makes the index read-only.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdSearchableSnapshot:ElasticsearchIndexLifecycleColdSearchableSnapshot":{"properties":{"forceMergeIndex":{"type":"boolean","description":"Force merges the managed index to one segment.\n"},"snapshotRepository":{"type":"string","description":"Repository used to store the snapshot.\n"}},"type":"object","required":["snapshotRepository"]},"elasticstack:index/ElasticsearchIndexLifecycleColdSetPriority:ElasticsearchIndexLifecycleColdSetPriority":{"properties":{"priority":{"type":"number","description":"The priority for the index. Must be 0 or greater.\n"}},"type":"object","required":["priority"]},"elasticstack:index/ElasticsearchIndexLifecycleColdUnfollow:ElasticsearchIndexLifecycleColdUnfollow":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM makes the follower index a regular one.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleDelete:ElasticsearchIndexLifecycleDelete":{"properties":{"delete":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleDeleteDelete:ElasticsearchIndexLifecycleDeleteDelete","description":"Permanently removes the index.\n"},"minAge":{"type":"string","description":"ILM moves indices through the lifecycle according to their age. To control the timing of these transitions, you set a minimum age for each phase.\n"},"waitForSnapshot":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleDeleteWaitForSnapshot:ElasticsearchIndexLifecycleDeleteWaitForSnapshot","description":"Waits for the specified SLM policy to be executed before removing the index. This ensures that a snapshot of the deleted index is available.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["minAge"]}}},"elasticstack:index/ElasticsearchIndexLifecycleDeleteDelete:ElasticsearchIndexLifecycleDeleteDelete":{"properties":{"deleteSearchableSnapshot":{"type":"boolean","description":"Deletes the searchable snapshot created in a previous phase.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleDeleteWaitForSnapshot:ElasticsearchIndexLifecycleDeleteWaitForSnapshot":{"properties":{"policy":{"type":"string","description":"Name of the SLM policy that the delete action should wait for.\n"}},"type":"object","required":["policy"]},"elasticstack:index/ElasticsearchIndexLifecycleElasticsearchConnection:ElasticsearchIndexLifecycleElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleFrozen:ElasticsearchIndexLifecycleFrozen":{"properties":{"minAge":{"type":"string","description":"ILM moves indices through the lifecycle according to their age. To control the timing of these transitions, you set a minimum age for each phase.\n"},"searchableSnapshot":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleFrozenSearchableSnapshot:ElasticsearchIndexLifecycleFrozenSearchableSnapshot","description":"Takes a snapshot of the managed index in the configured repository and mounts it as a searchable snapshot.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["minAge"]}}},"elasticstack:index/ElasticsearchIndexLifecycleFrozenSearchableSnapshot:ElasticsearchIndexLifecycleFrozenSearchableSnapshot":{"properties":{"forceMergeIndex":{"type":"boolean","description":"Force merges the managed index to one segment.\n"},"snapshotRepository":{"type":"string","description":"Repository used to store the snapshot.\n"}},"type":"object","required":["snapshotRepository"]},"elasticstack:index/ElasticsearchIndexLifecycleHot:ElasticsearchIndexLifecycleHot":{"properties":{"downsample":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHotDownsample:ElasticsearchIndexLifecycleHotDownsample","description":"Roll up documents within a fixed interval to a single summary document. Reduces the index footprint by storing time series data at reduced granularity.\n"},"forcemerge":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHotForcemerge:ElasticsearchIndexLifecycleHotForcemerge","description":"Force merges the index into the specified maximum number of segments. This action makes the index read-only.\n"},"minAge":{"type":"string","description":"ILM moves indices through the lifecycle according to their age. To control the timing of these transitions, you set a minimum age for each phase.\n"},"readonly":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHotReadonly:ElasticsearchIndexLifecycleHotReadonly","description":"Makes the index read-only.\n"},"rollover":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHotRollover:ElasticsearchIndexLifecycleHotRollover","description":"Rolls over a target to a new index when the existing index meets one or more of the rollover conditions.\n"},"searchableSnapshot":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHotSearchableSnapshot:ElasticsearchIndexLifecycleHotSearchableSnapshot","description":"Takes a snapshot of the managed index in the configured repository and mounts it as a searchable snapshot.\n"},"setPriority":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHotSetPriority:ElasticsearchIndexLifecycleHotSetPriority","description":"Sets the priority of the index as soon as the policy enters the hot, warm, or cold phase. Higher priority indices are recovered before indices with lower priorities following a node restart. Default priority is 1.\n"},"shrink":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHotShrink:ElasticsearchIndexLifecycleHotShrink","description":"Sets a source index to read-only and shrinks it into a new index with fewer primary shards.\n"},"unfollow":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHotUnfollow:ElasticsearchIndexLifecycleHotUnfollow","description":"Convert a follower index to a regular index. Performed automatically before a rollover, shrink, or searchable snapshot action.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["minAge"]}}},"elasticstack:index/ElasticsearchIndexLifecycleHotDownsample:ElasticsearchIndexLifecycleHotDownsample":{"properties":{"fixedInterval":{"type":"string","description":"Downsampling interval\n"},"waitTimeout":{"type":"string","description":"Downsampling interval\n"}},"type":"object","required":["fixedInterval"],"language":{"nodejs":{"requiredOutputs":["fixedInterval","waitTimeout"]}}},"elasticstack:index/ElasticsearchIndexLifecycleHotForcemerge:ElasticsearchIndexLifecycleHotForcemerge":{"properties":{"indexCodec":{"type":"string","description":"Codec used to compress the document store.\n"},"maxNumSegments":{"type":"number","description":"Number of segments to merge to. To fully merge the index, set to 1.\n"}},"type":"object","required":["maxNumSegments"]},"elasticstack:index/ElasticsearchIndexLifecycleHotReadonly:ElasticsearchIndexLifecycleHotReadonly":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM makes the index read-only.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotRollover:ElasticsearchIndexLifecycleHotRollover":{"properties":{"maxAge":{"type":"string","description":"Triggers rollover after the maximum elapsed time from index creation is reached.\n"},"maxDocs":{"type":"number","description":"Triggers rollover after the specified maximum number of documents is reached.\n"},"maxPrimaryShardDocs":{"type":"number","description":"Triggers rollover when the largest primary shard in the index reaches a certain number of documents. Supported from Elasticsearch version **8.2**\n"},"maxPrimaryShardSize":{"type":"string","description":"Triggers rollover when the largest primary shard in the index reaches a certain size.\n"},"maxSize":{"type":"string","description":"Triggers rollover when the index reaches a certain size.\n"},"minAge":{"type":"string","description":"Prevents rollover until after the minimum elapsed time from index creation is reached. Supported from Elasticsearch version **8.4**\n"},"minDocs":{"type":"number","description":"Prevents rollover until after the specified minimum number of documents is reached. Supported from Elasticsearch version **8.4**\n"},"minPrimaryShardDocs":{"type":"number","description":"Prevents rollover until the largest primary shard in the index reaches a certain number of documents. Supported from Elasticsearch version **8.4**\n"},"minPrimaryShardSize":{"type":"string","description":"Prevents rollover until the largest primary shard in the index reaches a certain size. Supported from Elasticsearch version **8.4**\n"},"minSize":{"type":"string","description":"Prevents rollover until the index reaches a certain size.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotSearchableSnapshot:ElasticsearchIndexLifecycleHotSearchableSnapshot":{"properties":{"forceMergeIndex":{"type":"boolean","description":"Force merges the managed index to one segment.\n"},"snapshotRepository":{"type":"string","description":"Repository used to store the snapshot.\n"}},"type":"object","required":["snapshotRepository"]},"elasticstack:index/ElasticsearchIndexLifecycleHotSetPriority:ElasticsearchIndexLifecycleHotSetPriority":{"properties":{"priority":{"type":"number","description":"The priority for the index. Must be 0 or greater.\n"}},"type":"object","required":["priority"]},"elasticstack:index/ElasticsearchIndexLifecycleHotShrink:ElasticsearchIndexLifecycleHotShrink":{"properties":{"allowWriteAfterShrink":{"type":"boolean","description":"If true, the shrunken index is made writable by removing the write block.\n"},"maxPrimaryShardSize":{"type":"string","description":"The max primary shard size for the target index.\n"},"numberOfShards":{"type":"number","description":"Number of shards to shrink to.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotUnfollow:ElasticsearchIndexLifecycleHotUnfollow":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM makes the follower index a regular one.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarm:ElasticsearchIndexLifecycleWarm":{"properties":{"allocate":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarmAllocate:ElasticsearchIndexLifecycleWarmAllocate","description":"Updates the index settings to change which nodes are allowed to host the index shards and change the number of replicas.\n"},"downsample":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarmDownsample:ElasticsearchIndexLifecycleWarmDownsample","description":"Roll up documents within a fixed interval to a single summary document. Reduces the index footprint by storing time series data at reduced granularity.\n"},"forcemerge":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarmForcemerge:ElasticsearchIndexLifecycleWarmForcemerge","description":"Force merges the index into the specified maximum number of segments. This action makes the index read-only.\n"},"migrate":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarmMigrate:ElasticsearchIndexLifecycleWarmMigrate","description":"Moves the index to the data tier that corresponds to the current phase by updating the \"index.routing.allocation.include.*tier*preference\" index setting.\n"},"minAge":{"type":"string","description":"ILM moves indices through the lifecycle according to their age. To control the timing of these transitions, you set a minimum age for each phase.\n"},"readonly":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarmReadonly:ElasticsearchIndexLifecycleWarmReadonly","description":"Makes the index read-only.\n"},"setPriority":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarmSetPriority:ElasticsearchIndexLifecycleWarmSetPriority","description":"Sets the priority of the index as soon as the policy enters the hot, warm, or cold phase. Higher priority indices are recovered before indices with lower priorities following a node restart. Default priority is 1.\n"},"shrink":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarmShrink:ElasticsearchIndexLifecycleWarmShrink","description":"Sets a source index to read-only and shrinks it into a new index with fewer primary shards.\n"},"unfollow":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarmUnfollow:ElasticsearchIndexLifecycleWarmUnfollow","description":"Convert a follower index to a regular index. Performed automatically before a rollover, shrink, or searchable snapshot action.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["minAge"]}}},"elasticstack:index/ElasticsearchIndexLifecycleWarmAllocate:ElasticsearchIndexLifecycleWarmAllocate":{"properties":{"exclude":{"type":"string","description":"Assigns an index to nodes that have none of the specified custom attributes. Must be valid JSON document.\n"},"include":{"type":"string","description":"Assigns an index to nodes that have at least one of the specified custom attributes. Must be valid JSON document.\n"},"numberOfReplicas":{"type":"number","description":"Number of replicas to assign to the index. Default: \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e\n"},"require":{"type":"string","description":"Assigns an index to nodes that have all of the specified custom attributes. Must be valid JSON document.\n"},"totalShardsPerNode":{"type":"number","description":"The maximum number of shards for the index on a single Elasticsearch node. Defaults to `-1` (unlimited). Supported from Elasticsearch version **7.16**\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmDownsample:ElasticsearchIndexLifecycleWarmDownsample":{"properties":{"fixedInterval":{"type":"string","description":"Downsampling interval\n"},"waitTimeout":{"type":"string","description":"Downsampling interval\n"}},"type":"object","required":["fixedInterval"],"language":{"nodejs":{"requiredOutputs":["fixedInterval","waitTimeout"]}}},"elasticstack:index/ElasticsearchIndexLifecycleWarmForcemerge:ElasticsearchIndexLifecycleWarmForcemerge":{"properties":{"indexCodec":{"type":"string","description":"Codec used to compress the document store.\n"},"maxNumSegments":{"type":"number","description":"Number of segments to merge to. To fully merge the index, set to 1.\n"}},"type":"object","required":["maxNumSegments"]},"elasticstack:index/ElasticsearchIndexLifecycleWarmMigrate:ElasticsearchIndexLifecycleWarmMigrate":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM automatically migrates the index during this phase.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmReadonly:ElasticsearchIndexLifecycleWarmReadonly":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM makes the index read-only.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmSetPriority:ElasticsearchIndexLifecycleWarmSetPriority":{"properties":{"priority":{"type":"number","description":"The priority for the index. Must be 0 or greater.\n"}},"type":"object","required":["priority"]},"elasticstack:index/ElasticsearchIndexLifecycleWarmShrink:ElasticsearchIndexLifecycleWarmShrink":{"properties":{"allowWriteAfterShrink":{"type":"boolean","description":"If true, the shrunken index is made writable by removing the write block.\n"},"maxPrimaryShardSize":{"type":"string","description":"The max primary shard size for the target index.\n"},"numberOfShards":{"type":"number","description":"Number of shards to shrink to.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmUnfollow:ElasticsearchIndexLifecycleWarmUnfollow":{"properties":{"enabled":{"type":"boolean","description":"Controls whether ILM makes the follower index a regular one.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexSetting:ElasticsearchIndexSetting":{"properties":{"settings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSettingSetting:ElasticsearchIndexSettingSetting"},"description":"Defines the setting for the index.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexSettingSetting:ElasticsearchIndexSettingSetting":{"properties":{"name":{"type":"string","description":"The name of the setting to set and track.\n"},"value":{"type":"string","description":"The value of the setting to set and track.\n"}},"type":"object","required":["name","value"]},"elasticstack:index/ElasticsearchIndexTemplateDataStream:ElasticsearchIndexTemplateDataStream":{"properties":{"allowCustomRouting":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the data stream supports custom routing. Defaults to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e. Available only in **8.x**\n"},"hidden":{"type":"boolean","description":"If true, the data stream is hidden.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateElasticsearchConnection:ElasticsearchIndexTemplateElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateTemplate:ElasticsearchIndexTemplateTemplate":{"properties":{"aliases":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplateAlias:ElasticsearchIndexTemplateTemplateAlias"},"description":"Alias to add.\n"},"lifecycle":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplateLifecycle:ElasticsearchIndexTemplateTemplateLifecycle","description":"Lifecycle of data stream. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/data-stream-lifecycle.html\n"},"mappings":{"type":"string","description":"Mapping for fields in the index. Should be specified as a JSON object of field mappings. See the documentation (https://www.elastic.co/guide/en/elasticsearch/reference/current/explicit-mapping.html) for more details\n"},"settings":{"type":"string","description":"Configuration options for the index. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateTemplateAlias:ElasticsearchIndexTemplateTemplateAlias":{"properties":{"filter":{"type":"string","description":"Query used to limit documents the alias can access.\n"},"indexRouting":{"type":"string","description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the \u003cspan pulumi-lang-nodejs=\"`routing`\" pulumi-lang-dotnet=\"`Routing`\" pulumi-lang-go=\"`routing`\" pulumi-lang-python=\"`routing`\" pulumi-lang-yaml=\"`routing`\" pulumi-lang-java=\"`routing`\"\u003e`routing`\u003c/span\u003e value for indexing operations.\n"},"isHidden":{"type":"boolean","description":"If true, the alias is hidden.\n"},"isWriteIndex":{"type":"boolean","description":"If true, the index is the write index for the alias.\n"},"name":{"type":"string","description":"The alias name.\n"},"routing":{"type":"string","description":"Value used to route indexing and search operations to a specific shard.\n"},"searchRouting":{"type":"string","description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n"}},"type":"object","required":["name"]},"elasticstack:index/ElasticsearchIndexTemplateTemplateLifecycle:ElasticsearchIndexTemplateTemplateLifecycle":{"properties":{"dataRetention":{"type":"string","description":"The retention period of the data indexed in this data stream.\n"}},"type":"object","required":["dataRetention"]},"elasticstack:index/ElasticsearchIngestPipelineElasticsearchConnection:ElasticsearchIngestPipelineElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchLogstashPipelineElasticsearchConnection:ElasticsearchLogstashPipelineElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfig:ElasticsearchMlAnomalyDetectionJobAnalysisConfig":{"properties":{"bucketSpan":{"type":"string","description":"The size of the interval that the analysis is aggregated into, typically between 15m and 1h. If the anomaly detector is expecting to see data at near real-time frequency, then the bucket*span should be set to a value around 10 times the time between ingested documents. For example, if data comes every second, bucket*span should be 10s; if data comes every 5 minutes, bucket*span should be 50m. For sparse or batch data, use larger bucket*span values.\n"},"categorizationFieldName":{"type":"string","description":"For categorization jobs only. The name of the field to categorize.\n"},"categorizationFilters":{"type":"array","items":{"type":"string"},"description":"For categorization jobs only. An array of regular expressions. A categorization message is matched against each regex in the order they are listed in the array.\n"},"detectors":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigDetector:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetector"},"description":"Detector configuration objects. Detectors identify the anomaly detection functions and the fields on which they operate.\n"},"influencers":{"type":"array","items":{"type":"string"},"description":"A comma separated list of influencer field names. Typically these can be the by, over, or partition fields that are used in the detector configuration.\n"},"latency":{"type":"string","description":"The size of the window in which to expect data that is out of time order. If you specify a non-zero value, it must be greater than or equal to one second.\n"},"modelPruneWindow":{"type":"string","description":"Advanced configuration option. The time interval (in days) between pruning the model.\n"},"multivariateByFields":{"type":"boolean","description":"This functionality is reserved for internal use. It is not supported for use in customer environments and is not subject to the support SLA of official GA features.\n"},"perPartitionCategorization":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigPerPartitionCategorization:ElasticsearchMlAnomalyDetectionJobAnalysisConfigPerPartitionCategorization","description":"Settings related to how categorization interacts with partition fields.\n"},"summaryCountFieldName":{"type":"string","description":"If this property is specified, the data that is fed to the job is expected to be pre-summarized.\n"}},"type":"object","required":["detectors"],"language":{"nodejs":{"requiredOutputs":["bucketSpan","detectors","modelPruneWindow"]}}},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetector:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetector":{"properties":{"byFieldName":{"type":"string","description":"The field used to split the data. In particular, this property is used for analyzing the splits with respect to their own history. It is used for finding unusual values in the context of the split.\n"},"customRules":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRule:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRule"},"description":"Custom rules enable you to customize the way detectors operate.\n"},"detectorDescription":{"type":"string","description":"A description of the detector.\n"},"excludeFrequent":{"type":"string","description":"Contains one of the following values: all, none, by, or over.\n"},"fieldName":{"type":"string","description":"The field that the detector function analyzes. Some functions require a field. Functions that don't require a field are count, rare, and freq_rare.\n"},"function":{"type":"string","description":"The analysis function that is used. For example, count, rare, mean, min, max, sum.\n"},"overFieldName":{"type":"string","description":"The field used to split the data. In particular, this property is used for analyzing the splits with respect to the history of all splits. It is used for finding unusual values in the population of all splits.\n"},"partitionFieldName":{"type":"string","description":"The field used to segment the analysis. When you use this property, you have completely independent baselines for each value of this field.\n"},"useNull":{"type":"boolean","description":"Defines whether a new series is used as the null series when there is no value for the by or partition fields.\n"}},"type":"object","required":["function"],"language":{"nodejs":{"requiredOutputs":["function","useNull"]}}},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRule:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRule":{"properties":{"actions":{"type":"array","items":{"type":"string"},"description":"The set of actions to be triggered when the rule applies. If more than one action is specified the effects of all actions are combined.\n"},"conditions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleCondition:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleCondition"},"description":"An array of numeric conditions when the rule applies.\n"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleCondition:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleCondition":{"properties":{"appliesTo":{"type":"string","description":"Specifies the result property to which the condition applies.\n"},"operator":{"type":"string","description":"Specifies the condition operator.\n"},"value":{"type":"number","description":"The value that is compared against the\u003cspan pulumi-lang-nodejs=\" appliesTo \" pulumi-lang-dotnet=\" AppliesTo \" pulumi-lang-go=\" appliesTo \" pulumi-lang-python=\" applies_to \" pulumi-lang-yaml=\" appliesTo \" pulumi-lang-java=\" appliesTo \"\u003e applies_to \u003c/span\u003efield using the operator.\n"}},"type":"object","required":["appliesTo","operator","value"]},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigPerPartitionCategorization:ElasticsearchMlAnomalyDetectionJobAnalysisConfigPerPartitionCategorization":{"properties":{"enabled":{"type":"boolean","description":"To enable this setting, you must also set the partition*field*name property to the same value in every detector that uses the keyword mlcategory. Otherwise, job creation fails.\n"},"stopOnWarn":{"type":"boolean","description":"This setting can be set to true only if per-partition categorization is enabled.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enabled"]}}},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisLimits:ElasticsearchMlAnomalyDetectionJobAnalysisLimits":{"properties":{"categorizationExamplesLimit":{"type":"number","description":"The maximum number of examples stored per category in memory and in the results data store.\n"},"modelMemoryLimit":{"type":"string","description":"The approximate maximum amount of memory resources that are required for analytical processing.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["categorizationExamplesLimit"]}}},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobDataDescription:ElasticsearchMlAnomalyDetectionJobDataDescription":{"properties":{"timeField":{"type":"string","description":"The name of the field that contains the timestamp.\n"},"timeFormat":{"type":"string","description":"The time format, which can be epoch, epoch_ms, or a custom pattern.\n"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobElasticsearchConnection:ElasticsearchMlAnomalyDetectionJobElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobModelPlotConfig:ElasticsearchMlAnomalyDetectionJobModelPlotConfig":{"properties":{"annotationsEnabled":{"type":"boolean","description":"If true, enables calculation and storage of the model change annotations for each entity that is being analyzed.\n"},"enabled":{"type":"boolean","description":"If true, enables calculation and storage of the model bounds for each entity that is being analyzed.\n"},"terms":{"type":"string","description":"Limits data collection to this comma separated list of partition or by field values. If terms are not specified or it is an empty string, no filtering is applied.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["annotationsEnabled","enabled"]}}},"elasticstack:index/ElasticsearchMlDatafeedChunkingConfig:ElasticsearchMlDatafeedChunkingConfig":{"properties":{"mode":{"type":"string","description":"The chunking mode. Can be \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`manual`\" pulumi-lang-dotnet=\"`Manual`\" pulumi-lang-go=\"`manual`\" pulumi-lang-python=\"`manual`\" pulumi-lang-yaml=\"`manual`\" pulumi-lang-java=\"`manual`\"\u003e`manual`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e. In \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e mode, the chunk size is dynamically calculated. In \u003cspan pulumi-lang-nodejs=\"`manual`\" pulumi-lang-dotnet=\"`Manual`\" pulumi-lang-go=\"`manual`\" pulumi-lang-python=\"`manual`\" pulumi-lang-yaml=\"`manual`\" pulumi-lang-java=\"`manual`\"\u003e`manual`\u003c/span\u003e mode, chunking is applied according to the specified \u003cspan pulumi-lang-nodejs=\"`timeSpan`\" pulumi-lang-dotnet=\"`TimeSpan`\" pulumi-lang-go=\"`timeSpan`\" pulumi-lang-python=\"`time_span`\" pulumi-lang-yaml=\"`timeSpan`\" pulumi-lang-java=\"`timeSpan`\"\u003e`time_span`\u003c/span\u003e. In \u003cspan pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\"\u003e`off`\u003c/span\u003e mode, no chunking is applied.\n"},"timeSpan":{"type":"string","description":"The time span for each chunk. Only applicable and required when mode is \u003cspan pulumi-lang-nodejs=\"`manual`\" pulumi-lang-dotnet=\"`Manual`\" pulumi-lang-go=\"`manual`\" pulumi-lang-python=\"`manual`\" pulumi-lang-yaml=\"`manual`\" pulumi-lang-java=\"`manual`\"\u003e`manual`\u003c/span\u003e. Must be a valid duration.\n"}},"type":"object","required":["mode"],"language":{"nodejs":{"requiredOutputs":["mode","timeSpan"]}}},"elasticstack:index/ElasticsearchMlDatafeedDelayedDataCheckConfig:ElasticsearchMlDatafeedDelayedDataCheckConfig":{"properties":{"checkWindow":{"type":"string","description":"The window of time that is searched for late data. This window of time ends with the latest finalized bucket. It defaults to null, which causes an appropriate \u003cspan pulumi-lang-nodejs=\"`checkWindow`\" pulumi-lang-dotnet=\"`CheckWindow`\" pulumi-lang-go=\"`checkWindow`\" pulumi-lang-python=\"`check_window`\" pulumi-lang-yaml=\"`checkWindow`\" pulumi-lang-java=\"`checkWindow`\"\u003e`check_window`\u003c/span\u003e to be calculated when the real-time datafeed runs.\n"},"enabled":{"type":"boolean","description":"Specifies whether the datafeed periodically checks for delayed data.\n"}},"type":"object","required":["enabled"],"language":{"nodejs":{"requiredOutputs":["checkWindow","enabled"]}}},"elasticstack:index/ElasticsearchMlDatafeedElasticsearchConnection:ElasticsearchMlDatafeedElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchMlDatafeedIndicesOptions:ElasticsearchMlDatafeedIndicesOptions":{"properties":{"allowNoIndices":{"type":"boolean","description":"If true, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the `_all` string or when no indices are specified.\n"},"expandWildcards":{"type":"array","items":{"type":"string"},"description":"Type of index that wildcard patterns can match. If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams. Supports comma-separated values.\n"},"ignoreThrottled":{"type":"boolean","description":"If true, concrete, expanded, or aliased indices are ignored when frozen. This setting is deprecated.\n","deprecationMessage":"Deprecated"},"ignoreUnavailable":{"type":"boolean","description":"If true, unavailable indices (missing or closed) are ignored.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["allowNoIndices","expandWildcards","ignoreThrottled","ignoreUnavailable"]}}},"elasticstack:index/ElasticsearchMlDatafeedStateElasticsearchConnection:ElasticsearchMlDatafeedStateElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchMlDatafeedStateTimeouts:ElasticsearchMlDatafeedStateTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"elasticstack:index/ElasticsearchMlJobStateElasticsearchConnection:ElasticsearchMlJobStateElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchMlJobStateTimeouts:ElasticsearchMlJobStateTimeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"elasticstack:index/ElasticsearchScriptElasticsearchConnection:ElasticsearchScriptElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityApiKeyAccess:ElasticsearchSecurityApiKeyAccess":{"properties":{"replications":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyAccessReplication:ElasticsearchSecurityApiKeyAccessReplication"},"description":"A list of replication configurations for which the cross-cluster API key will have replication privileges.\n"},"searches":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyAccessSearch:ElasticsearchSecurityApiKeyAccessSearch"},"description":"A list of search configurations for which the cross-cluster API key will have search privileges.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityApiKeyAccessReplication:ElasticsearchSecurityApiKeyAccessReplication":{"properties":{"names":{"type":"array","items":{"type":"string"},"description":"A list of index patterns for replication.\n"}},"type":"object","required":["names"]},"elasticstack:index/ElasticsearchSecurityApiKeyAccessSearch:ElasticsearchSecurityApiKeyAccessSearch":{"properties":{"allowRestrictedIndices":{"type":"boolean","description":"Whether to allow access to restricted indices.\n"},"fieldSecurity":{"type":"string","description":"Field-level security configuration in JSON format.\n"},"names":{"type":"array","items":{"type":"string"},"description":"A list of index patterns for search.\n"},"query":{"type":"string","description":"Query to filter documents for search operations in JSON format.\n"}},"type":"object","required":["names"]},"elasticstack:index/ElasticsearchSecurityApiKeyElasticsearchConnection:ElasticsearchSecurityApiKeyElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleApplication:ElasticsearchSecurityRoleApplication":{"properties":{"application":{"type":"string","description":"The name of the application to which this entry applies.\n"},"privileges":{"type":"array","items":{"type":"string"},"description":"A list of strings, where each element is the name of an application privilege or action.\n"},"resources":{"type":"array","items":{"type":"string"},"description":"A list resources to which the privileges are applied.\n"}},"type":"object","required":["application","privileges","resources"]},"elasticstack:index/ElasticsearchSecurityRoleElasticsearchConnection:ElasticsearchSecurityRoleElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleIndex:ElasticsearchSecurityRoleIndex":{"properties":{"allowRestrictedIndices":{"type":"boolean","description":"Include matching restricted indices in names parameter. Usage is strongly discouraged as it can grant unrestricted operations on critical data, make the entire system unstable or leak sensitive information.\n"},"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleIndexFieldSecurity:ElasticsearchSecurityRoleIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"type":"array","items":{"type":"string"},"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n"},"privileges":{"type":"array","items":{"type":"string"},"description":"The index level privileges that the owners of the role have on the specified indices.\n"},"query":{"type":"string","description":"A search query that defines the documents the owners of the role have read access to.\n"}},"type":"object","required":["names","privileges"],"language":{"nodejs":{"requiredOutputs":["allowRestrictedIndices","names","privileges"]}}},"elasticstack:index/ElasticsearchSecurityRoleIndexFieldSecurity:ElasticsearchSecurityRoleIndexFieldSecurity":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of the fields to which the grants will not be applied.\n"},"grants":{"type":"array","items":{"type":"string"},"description":"List of the fields to grant the access to.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["excepts"]}}},"elasticstack:index/ElasticsearchSecurityRoleMappingElasticsearchConnection:ElasticsearchSecurityRoleMappingElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleRemoteIndex:ElasticsearchSecurityRoleRemoteIndex":{"properties":{"clusters":{"type":"array","items":{"type":"string"},"description":"A list of cluster aliases to which the permissions in this entry apply.\n"},"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleRemoteIndexFieldSecurity:ElasticsearchSecurityRoleRemoteIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"type":"array","items":{"type":"string"},"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n"},"privileges":{"type":"array","items":{"type":"string"},"description":"The index level privileges that the owners of the role have on the specified indices.\n"},"query":{"type":"string","description":"A search query that defines the documents the owners of the role have read access to.\n"}},"type":"object","required":["clusters","names","privileges"]},"elasticstack:index/ElasticsearchSecurityRoleRemoteIndexFieldSecurity:ElasticsearchSecurityRoleRemoteIndexFieldSecurity":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of the fields to which the grants will not be applied.\n"},"grants":{"type":"array","items":{"type":"string"},"description":"List of the fields to grant the access to.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["excepts"]}}},"elasticstack:index/ElasticsearchSecuritySystemUserElasticsearchConnection:ElasticsearchSecuritySystemUserElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityUserElasticsearchConnection:ElasticsearchSecurityUserElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotLifecycleElasticsearchConnection:ElasticsearchSnapshotLifecycleElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryAzure:ElasticsearchSnapshotRepositoryAzure":{"properties":{"basePath":{"type":"string","description":"Specifies the path within the container to the repository data.\n"},"chunkSize":{"type":"string","description":"Maximum size of files in snapshots.\n"},"client":{"type":"string","description":"Azure named client to use.\n"},"compress":{"type":"boolean","description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n"},"container":{"type":"string","description":"Container name. You must create the Azure container before creating the repository.\n"},"locationMode":{"type":"string","description":"Location mode. \u003cspan pulumi-lang-nodejs=\"`primaryOnly`\" pulumi-lang-dotnet=\"`PrimaryOnly`\" pulumi-lang-go=\"`primaryOnly`\" pulumi-lang-python=\"`primary_only`\" pulumi-lang-yaml=\"`primaryOnly`\" pulumi-lang-java=\"`primaryOnly`\"\u003e`primary_only`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`secondaryOnly`\" pulumi-lang-dotnet=\"`SecondaryOnly`\" pulumi-lang-go=\"`secondaryOnly`\" pulumi-lang-python=\"`secondary_only`\" pulumi-lang-yaml=\"`secondaryOnly`\" pulumi-lang-java=\"`secondaryOnly`\"\u003e`secondary_only`\u003c/span\u003e. See the [Azure storage redundancy documentation](https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy) for more details.\n"},"maxRestoreBytesPerSec":{"type":"string","description":"Maximum snapshot restore rate per node.\n"},"maxSnapshotBytesPerSec":{"type":"string","description":"Maximum snapshot creation rate per node.\n"},"readonly":{"type":"boolean","description":"If true, the repository is read-only.\n"}},"type":"object","required":["container"],"language":{"nodejs":{"requiredOutputs":["basePath","container"]}}},"elasticstack:index/ElasticsearchSnapshotRepositoryElasticsearchConnection:ElasticsearchSnapshotRepositoryElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryFs:ElasticsearchSnapshotRepositoryFs":{"properties":{"chunkSize":{"type":"string","description":"Maximum size of files in snapshots.\n"},"compress":{"type":"boolean","description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n"},"location":{"type":"string","description":"Location of the shared filesystem used to store and retrieve snapshots.\n"},"maxNumberOfSnapshots":{"type":"number","description":"Maximum number of snapshots the repository can contain.\n"},"maxRestoreBytesPerSec":{"type":"string","description":"Maximum snapshot restore rate per node.\n"},"maxSnapshotBytesPerSec":{"type":"string","description":"Maximum snapshot creation rate per node.\n"},"readonly":{"type":"boolean","description":"If true, the repository is read-only.\n"}},"type":"object","required":["location"]},"elasticstack:index/ElasticsearchSnapshotRepositoryGcs:ElasticsearchSnapshotRepositoryGcs":{"properties":{"basePath":{"type":"string","description":"Specifies the path within the bucket to the repository data. Defaults to the root of the bucket.\n"},"bucket":{"type":"string","description":"The name of the bucket to be used for snapshots.\n"},"chunkSize":{"type":"string","description":"Maximum size of files in snapshots.\n"},"client":{"type":"string","description":"The name of the client to use to connect to Google Cloud Storage.\n"},"compress":{"type":"boolean","description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n"},"maxRestoreBytesPerSec":{"type":"string","description":"Maximum snapshot restore rate per node.\n"},"maxSnapshotBytesPerSec":{"type":"string","description":"Maximum snapshot creation rate per node.\n"},"readonly":{"type":"boolean","description":"If true, the repository is read-only.\n"}},"type":"object","required":["bucket"],"language":{"nodejs":{"requiredOutputs":["basePath","bucket"]}}},"elasticstack:index/ElasticsearchSnapshotRepositoryHdfs:ElasticsearchSnapshotRepositoryHdfs":{"properties":{"chunkSize":{"type":"string","description":"Maximum size of files in snapshots.\n"},"compress":{"type":"boolean","description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n"},"loadDefaults":{"type":"boolean","description":"Whether to load the default Hadoop configuration or not.\n"},"maxRestoreBytesPerSec":{"type":"string","description":"Maximum snapshot restore rate per node.\n"},"maxSnapshotBytesPerSec":{"type":"string","description":"Maximum snapshot creation rate per node.\n"},"path":{"type":"string","description":"The file path within the filesystem where data is stored/loaded.\n"},"readonly":{"type":"boolean","description":"If true, the repository is read-only.\n"},"uri":{"type":"string","description":"The uri address for hdfs. ex: \"hdfs://\\n\\n:\\n\\n/\".\n"}},"type":"object","required":["path","uri"]},"elasticstack:index/ElasticsearchSnapshotRepositoryS3:ElasticsearchSnapshotRepositoryS3":{"properties":{"basePath":{"type":"string","description":"Specifies the path to the repository data within its bucket.\n"},"bucket":{"type":"string","description":"Name of the S3 bucket to use for snapshots.\n"},"bufferSize":{"type":"string","description":"Minimum threshold below which the chunk is uploaded using a single request.\n"},"cannedAcl":{"type":"string","description":"The S3 repository supports all S3 canned ACLs.\n"},"chunkSize":{"type":"string","description":"Maximum size of files in snapshots.\n"},"client":{"type":"string","description":"The name of the S3 client to use to connect to S3.\n"},"compress":{"type":"boolean","description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n"},"endpoint":{"type":"string","description":"Custom S3 service endpoint, useful when using VPC endpoints or non-default S3 URLs.\n"},"maxRestoreBytesPerSec":{"type":"string","description":"Maximum snapshot restore rate per node.\n"},"maxSnapshotBytesPerSec":{"type":"string","description":"Maximum snapshot creation rate per node.\n"},"pathStyleAccess":{"type":"boolean","description":"If true, path style access pattern will be used.\n"},"readonly":{"type":"boolean","description":"If true, the repository is read-only.\n"},"serverSideEncryption":{"type":"boolean","description":"When true, files are encrypted server-side using AES-256 algorithm.\n"},"storageClass":{"type":"string","description":"Sets the S3 storage class for objects stored in the snapshot repository.\n"}},"type":"object","required":["bucket"],"language":{"nodejs":{"requiredOutputs":["basePath","bucket","bufferSize","endpoint"]}}},"elasticstack:index/ElasticsearchSnapshotRepositoryUrl:ElasticsearchSnapshotRepositoryUrl":{"properties":{"chunkSize":{"type":"string","description":"Maximum size of files in snapshots.\n"},"compress":{"type":"boolean","description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n"},"httpMaxRetries":{"type":"number","description":"Maximum number of retries for http and https URLs.\n"},"httpSocketTimeout":{"type":"string","description":"Maximum wait time for data transfers over a connection.\n"},"maxNumberOfSnapshots":{"type":"number","description":"Maximum number of snapshots the repository can contain.\n"},"maxRestoreBytesPerSec":{"type":"string","description":"Maximum snapshot restore rate per node.\n"},"maxSnapshotBytesPerSec":{"type":"string","description":"Maximum snapshot creation rate per node.\n"},"readonly":{"type":"boolean","description":"If true, the repository is read-only.\n"},"url":{"type":"string","description":"URL location of the root of the shared filesystem repository.\n"}},"type":"object","required":["url"]},"elasticstack:index/ElasticsearchTransformDestination:ElasticsearchTransformDestination":{"properties":{"aliases":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformDestinationAlias:ElasticsearchTransformDestinationAlias"},"description":"The aliases that the destination index for the transform should have.\n"},"index":{"type":"string","description":"The destination index for the transform.\n"},"pipeline":{"type":"string","description":"The unique identifier for an ingest pipeline.\n"}},"type":"object","required":["index"]},"elasticstack:index/ElasticsearchTransformDestinationAlias:ElasticsearchTransformDestinationAlias":{"properties":{"alias":{"type":"string","description":"The name of the alias.\n"},"moveOnCreation":{"type":"boolean","description":"Whether the destination index should be the only index in this alias. Defaults to false.\n"}},"type":"object","required":["alias"]},"elasticstack:index/ElasticsearchTransformRetentionPolicy:ElasticsearchTransformRetentionPolicy":{"properties":{"time":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformRetentionPolicyTime:ElasticsearchTransformRetentionPolicyTime","description":"Specifies that the transform uses a time field to set the retention policy. This is currently the only supported option.\n"}},"type":"object","required":["time"]},"elasticstack:index/ElasticsearchTransformRetentionPolicyTime:ElasticsearchTransformRetentionPolicyTime":{"properties":{"field":{"type":"string","description":"The date field that is used to calculate the age of the document.\n"},"maxAge":{"type":"string","description":"Specifies the maximum age of a document in the destination index.\n"}},"type":"object","required":["field","maxAge"]},"elasticstack:index/ElasticsearchTransformSource:ElasticsearchTransformSource":{"properties":{"indices":{"type":"array","items":{"type":"string"},"description":"The source indices for the transform.\n"},"query":{"type":"string","description":"A query clause that retrieves a subset of data from the source index.\n"},"runtimeMappings":{"type":"string","description":"Definitions of search-time runtime fields that can be used by the transform.\n"}},"type":"object","required":["indices"]},"elasticstack:index/ElasticsearchTransformSync:ElasticsearchTransformSync":{"properties":{"time":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformSyncTime:ElasticsearchTransformSyncTime","description":"Specifies that the transform uses a time field to synchronize the source and destination indices. This is currently the only supported option.\n"}},"type":"object","required":["time"]},"elasticstack:index/ElasticsearchTransformSyncTime:ElasticsearchTransformSyncTime":{"properties":{"delay":{"type":"string","description":"The time delay between the current time and the latest input data time. The default value is 60s.\n"},"field":{"type":"string","description":"The date field that is used to identify new documents in the source.\n"}},"type":"object","required":["field"]},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptions:FleetAgentPolicyAdvancedMonitoringOptions":{"properties":{"diagnostics":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedMonitoringOptionsDiagnostics:FleetAgentPolicyAdvancedMonitoringOptionsDiagnostics","description":"Diagnostic settings for rate limiting and file upload behavior.\n"},"httpMonitoringEndpoint":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpoint:FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpoint","description":"HTTP monitoring endpoint configuration for agent health checks and liveness probes.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["diagnostics","httpMonitoringEndpoint"]}}},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptionsDiagnostics:FleetAgentPolicyAdvancedMonitoringOptionsDiagnostics":{"properties":{"fileUploader":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploader:FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploader","description":"Diagnostic file upload retry configuration.\n"},"rateLimits":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimits:FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimits","description":"Rate limiting configuration for diagnostics requests from Fleet.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileUploader","rateLimits"]}}},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploader:FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploader":{"properties":{"backoffDuration":{"type":"string","description":"Maximum backoff duration between retry attempts (e.g., '1m', '30s').\n"},"initDuration":{"type":"string","description":"Initial duration before the first retry attempt (e.g., '1s', '500ms').\n"},"maxRetries":{"type":"number","description":"Maximum number of retry attempts for file uploads.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["backoffDuration","initDuration","maxRetries"]}}},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimits:FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimits":{"properties":{"burst":{"type":"number","description":"Rate limiting burst count for diagnostics requests.\n"},"interval":{"type":"string","description":"Rate limiting interval for diagnostics requests (e.g., '1m', '30s').\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["burst","interval"]}}},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpoint:FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpoint":{"properties":{"bufferEnabled":{"type":"boolean","description":"Enable monitoring buffer for the HTTP endpoint.\n"},"enabled":{"type":"boolean","description":"Enable the HTTP monitoring endpoint. When enabled, exposes a /liveness endpoint for health checks.\n"},"host":{"type":"string","description":"Host for the HTTP monitoring endpoint.\n"},"port":{"type":"number","description":"Port for the HTTP monitoring endpoint.\n"},"pprofEnabled":{"type":"boolean","description":"Enable /debug/pprof/* profiling endpoints. Warning: enabling this may pose a security risk if the monitoring endpoint is accessible over a network.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["bufferEnabled","enabled","host","port","pprofEnabled"]}}},"elasticstack:index/FleetAgentPolicyAdvancedSettings:FleetAgentPolicyAdvancedSettings":{"properties":{"downloadTargetDirectory":{"type":"string","description":"Target directory for downloading agent updates.\n"},"downloadTimeout":{"type":"string","description":"Timeout for downloading agent updates (e.g., '2h', '30m').\n"},"goMaxProcs":{"type":"number","description":"Maximum number of CPUs that the agent can use (GOMAXPROCS). Set to 0 to use all available CPUs.\n"},"loggingFilesInterval":{"type":"string","description":"Interval for log file rotation (e.g., '30s', '1m', '1h').\n"},"loggingFilesKeepfiles":{"type":"number","description":"Number of rotated log files to keep.\n"},"loggingFilesRotateeverybytes":{"type":"number","description":"Rotate log files when they reach this size in bytes.\n"},"loggingLevel":{"type":"string","description":"Logging level for the agent. Valid values: debug, info, warning, error.\n"},"loggingMetricsPeriod":{"type":"string","description":"Period for logging agent metrics (e.g., '30s', '1m').\n"},"loggingToFiles":{"type":"boolean","description":"Enable logging to files.\n"},"monitoringRuntimeExperimental":{"type":"string","description":"Experimental runtime monitoring mode. Valid values: '' (empty string to disable), 'process', 'otel'.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["downloadTargetDirectory","downloadTimeout","goMaxProcs","loggingFilesInterval","loggingFilesKeepfiles","loggingFilesRotateeverybytes","loggingLevel","loggingMetricsPeriod","loggingToFiles","monitoringRuntimeExperimental"]}}},"elasticstack:index/FleetAgentPolicyGlobalDataTags:FleetAgentPolicyGlobalDataTags":{"properties":{"numberValue":{"type":"number","description":"Number value for the field. If this is set,\u003cspan pulumi-lang-nodejs=\" stringValue \" pulumi-lang-dotnet=\" StringValue \" pulumi-lang-go=\" stringValue \" pulumi-lang-python=\" string_value \" pulumi-lang-yaml=\" stringValue \" pulumi-lang-java=\" stringValue \"\u003e string_value \u003c/span\u003emust not be defined.\n"},"stringValue":{"type":"string","description":"String value for the field. If this is set,\u003cspan pulumi-lang-nodejs=\" numberValue \" pulumi-lang-dotnet=\" NumberValue \" pulumi-lang-go=\" numberValue \" pulumi-lang-python=\" number_value \" pulumi-lang-yaml=\" numberValue \" pulumi-lang-java=\" numberValue \"\u003e number_value \u003c/span\u003emust not be defined.\n"}},"type":"object"},"elasticstack:index/FleetIntegrationPolicyInputs:FleetIntegrationPolicyInputs":{"properties":{"defaults":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputsDefaults:FleetIntegrationPolicyInputsDefaults","description":"Input defaults.\n"},"enabled":{"type":"boolean","description":"Enable the input.\n"},"streams":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputsStreams:FleetIntegrationPolicyInputsStreams"},"description":"Input streams mapped by stream ID.\n"},"vars":{"type":"string","description":"Input-level variables as JSON.\n","secret":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["defaults","enabled"]}}},"elasticstack:index/FleetIntegrationPolicyInputsDefaults:FleetIntegrationPolicyInputsDefaults":{"properties":{"streams":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputsDefaultsStreams:FleetIntegrationPolicyInputsDefaultsStreams"},"description":"Stream-level defaults mapped by stream ID.\n"},"vars":{"type":"string","description":"Input-level variable defaults as JSON.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["streams","vars"]}}},"elasticstack:index/FleetIntegrationPolicyInputsDefaultsStreams:FleetIntegrationPolicyInputsDefaultsStreams":{"properties":{"enabled":{"type":"boolean","description":"Default enabled state for the stream.\n"},"vars":{"type":"string","description":"Stream-level variable defaults as JSON.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enabled","vars"]}}},"elasticstack:index/FleetIntegrationPolicyInputsStreams:FleetIntegrationPolicyInputsStreams":{"properties":{"enabled":{"type":"boolean","description":"Enable the stream.\n"},"vars":{"type":"string","description":"Stream-level variables as JSON.\n","secret":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["enabled"]}}},"elasticstack:index/FleetOutputKafka:FleetOutputKafka":{"properties":{"authType":{"type":"string","description":"Authentication type for Kafka output.\n"},"brokerTimeout":{"type":"number","description":"Kafka broker timeout.\n"},"clientId":{"type":"string","description":"Kafka client ID.\n"},"compression":{"type":"string","description":"Compression type for Kafka output.\n"},"compressionLevel":{"type":"number","description":"Compression level for Kafka output.\n"},"connectionType":{"type":"string","description":"Connection type for Kafka output.\n"},"hash":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafkaHash:FleetOutputKafkaHash","description":"Hash configuration for Kafka partition.\n"},"headers":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafkaHeader:FleetOutputKafkaHeader"},"description":"Headers for Kafka messages.\n"},"key":{"type":"string","description":"Key field for Kafka messages.\n"},"partition":{"type":"string","description":"Partition strategy for Kafka output.\n"},"password":{"type":"string","description":"Password for Kafka authentication.\n","secret":true},"random":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafkaRandom:FleetOutputKafkaRandom","description":"Random configuration for Kafka partition.\n"},"requiredAcks":{"type":"number","description":"Number of acknowledgments required for Kafka output.\n"},"roundRobin":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafkaRoundRobin:FleetOutputKafkaRoundRobin","description":"Round robin configuration for Kafka partition.\n"},"sasl":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafkaSasl:FleetOutputKafkaSasl","description":"SASL configuration for Kafka authentication.\n"},"timeout":{"type":"number","description":"Timeout for Kafka output.\n"},"topic":{"type":"string","description":"Kafka topic.\n"},"username":{"type":"string","description":"Username for Kafka authentication.\n"},"version":{"type":"string","description":"Kafka version.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["brokerTimeout","clientId","compressionLevel","headers","timeout","version"]}}},"elasticstack:index/FleetOutputKafkaHash:FleetOutputKafkaHash":{"properties":{"hash":{"type":"string","description":"Hash field.\n"},"random":{"type":"boolean","description":"Use random hash.\n"}},"type":"object"},"elasticstack:index/FleetOutputKafkaHeader:FleetOutputKafkaHeader":{"properties":{"key":{"type":"string","description":"Header key.\n"},"value":{"type":"string","description":"Header value.\n"}},"type":"object","required":["key","value"]},"elasticstack:index/FleetOutputKafkaRandom:FleetOutputKafkaRandom":{"properties":{"groupEvents":{"type":"number","description":"Number of events to group.\n"}},"type":"object"},"elasticstack:index/FleetOutputKafkaRoundRobin:FleetOutputKafkaRoundRobin":{"properties":{"groupEvents":{"type":"number","description":"Number of events to group.\n"}},"type":"object"},"elasticstack:index/FleetOutputKafkaSasl:FleetOutputKafkaSasl":{"properties":{"mechanism":{"type":"string","description":"SASL mechanism.\n"}},"type":"object"},"elasticstack:index/FleetOutputSsl:FleetOutputSsl":{"properties":{"certificate":{"type":"string","description":"Client SSL certificate.\n"},"certificateAuthorities":{"type":"array","items":{"type":"string"},"description":"Server SSL certificate authorities.\n"},"key":{"type":"string","description":"Client SSL certificate key.\n","secret":true}},"type":"object","required":["certificate","key"]},"elasticstack:index/KibanaActionConnectorKibanaConnection:KibanaActionConnectorKibanaConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Kibana\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Kibana\n","secret":true},"caCerts":{"type":"array","items":{"type":"string"},"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"password":{"type":"string","description":"Password to use for API authentication to Kibana.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Kibana.\n"}},"type":"object"},"elasticstack:index/KibanaAlertingRuleAction:KibanaAlertingRuleAction":{"properties":{"alertsFilter":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleActionAlertsFilter:KibanaAlertingRuleActionAlertsFilter","description":"Conditions that affect whether the action runs. If you specify multiple conditions, all conditions must be met for the action to run. For example, if an alert occurs within the specified time frame and matches the query, the action runs.\n"},"frequency":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleActionFrequency:KibanaAlertingRuleActionFrequency","description":"The properties that affect how often actions are generated. If the rule type supports setting summary to true, the action can be a summary of alerts at the specified notification interval. Otherwise, an action runs for each alert at the specified notification interval. NOTE: You cannot specify these parameters when \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\"\u003e`throttle`\u003c/span\u003e are defined at the rule level.\n"},"group":{"type":"string","description":"The group name, which affects when the action runs (for example, when the threshold is met or when the alert is recovered). Each rule type has a list of valid action group names.\n"},"id":{"type":"string","description":"The identifier for the connector saved object.\n"},"params":{"type":"string","description":"The parameters for the action, which are sent to the connector.\n"}},"type":"object","required":["id","params"],"language":{"nodejs":{"requiredOutputs":["group","id","params"]}}},"elasticstack:index/KibanaAlertingRuleActionAlertsFilter:KibanaAlertingRuleActionAlertsFilter":{"properties":{"kql":{"type":"string","description":"Defines a query filter that determines whether the action runs. Written in Kibana Query Language (KQL).\n"},"timeframe":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleActionAlertsFilterTimeframe:KibanaAlertingRuleActionAlertsFilterTimeframe","description":"Defines a period that limits whether the action runs.\n"}},"type":"object"},"elasticstack:index/KibanaAlertingRuleActionAlertsFilterTimeframe:KibanaAlertingRuleActionAlertsFilterTimeframe":{"properties":{"days":{"type":"array","items":{"type":"number"},"description":"Defines the days of the week that the action can run, represented as an array of numbers. For example, 1 represents Monday. An empty array is equivalent to specifying all the days of the week.\n"},"hoursEnd":{"type":"string","description":"Defines the range of time in a day that the action can run. The end of the time frame in 24-hour notation (hh:mm).\n"},"hoursStart":{"type":"string","description":"Defines the range of time in a day that the action can run. The start of the time frame in 24-hour notation (hh:mm).\n"},"timezone":{"type":"string","description":"The ISO time zone for the hours values. Values such as UTC and UTC+1 also work but lack built-in daylight savings time support and are not recommended.\n"}},"type":"object"},"elasticstack:index/KibanaAlertingRuleActionFrequency:KibanaAlertingRuleActionFrequency":{"properties":{"notifyWhen":{"type":"string","description":"Defines how often alerts generate actions. Valid values include: `onActionGroupChange`: Actions run when the alert status changes; `onActiveAlert`: Actions run when the alert becomes active and at each check interval while the rule conditions are met; `onThrottleInterval`: Actions run when the alert becomes active and at the interval specified in the throttle property while the rule conditions are met.\n"},"summary":{"type":"boolean","description":"Indicates whether the action is a summary.\n"},"throttle":{"type":"string","description":"Defines how often an alert generates repeated actions. This custom action interval must be specified in seconds, minutes, hours, or days. For example, 10m or 1h. This property is applicable only if \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e is `onThrottleInterval`.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["notifyWhen","summary"]}}},"elasticstack:index/KibanaDataViewDataView:KibanaDataViewDataView":{"properties":{"allowNoIndex":{"type":"boolean","description":"Allows the Data view saved object to exist before the data is available.\n"},"fieldAttrs":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldAttrs:KibanaDataViewDataViewFieldAttrs"},"description":"Map of field attributes by field name.\n"},"fieldFormats":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldFormats:KibanaDataViewDataViewFieldFormats"},"description":"Map of field formats by field name.\n"},"id":{"type":"string","description":"Saved object ID.\n"},"name":{"type":"string","description":"The Data view name.\n"},"namespaces":{"type":"array","items":{"type":"string"},"description":"Array of space IDs for sharing the Data view between multiple spaces.\n"},"runtimeFieldMap":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewRuntimeFieldMap:KibanaDataViewDataViewRuntimeFieldMap"},"description":"Map of runtime field definitions by field name.\n"},"sourceFilters":{"type":"array","items":{"type":"string"},"description":"List of field names you want to filter out in Discover.\n"},"timeFieldName":{"type":"string","description":"Timestamp field name, which you use for time-based Data views.\n"},"title":{"type":"string","description":"Comma-separated list of data streams, indices, and aliases that you want to search. Supports wildcards (*).\n"}},"type":"object","required":["title"],"language":{"nodejs":{"requiredOutputs":["allowNoIndex","id","name","timeFieldName","title"]}}},"elasticstack:index/KibanaDataViewDataViewFieldAttrs:KibanaDataViewDataViewFieldAttrs":{"properties":{"count":{"type":"number","description":"Popularity count for the field.\n"},"customLabel":{"type":"string","description":"Custom label for the field.\n"}},"type":"object"},"elasticstack:index/KibanaDataViewDataViewFieldFormats:KibanaDataViewDataViewFieldFormats":{"properties":{"id":{"type":"string","description":"The ID of the field format. Valid values include: \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`color`\" pulumi-lang-dotnet=\"`Color`\" pulumi-lang-go=\"`color`\" pulumi-lang-python=\"`color`\" pulumi-lang-yaml=\"`color`\" pulumi-lang-java=\"`color`\"\u003e`color`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`date`\" pulumi-lang-dotnet=\"`Date`\" pulumi-lang-go=\"`date`\" pulumi-lang-python=\"`date`\" pulumi-lang-yaml=\"`date`\" pulumi-lang-java=\"`date`\"\u003e`date`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`duration`\" pulumi-lang-dotnet=\"`Duration`\" pulumi-lang-go=\"`duration`\" pulumi-lang-python=\"`duration`\" pulumi-lang-yaml=\"`duration`\" pulumi-lang-java=\"`duration`\"\u003e`duration`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\"\u003e`number`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`percent`\" pulumi-lang-dotnet=\"`Percent`\" pulumi-lang-go=\"`percent`\" pulumi-lang-python=\"`percent`\" pulumi-lang-yaml=\"`percent`\" pulumi-lang-java=\"`percent`\"\u003e`percent`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`relativeDate`\" pulumi-lang-dotnet=\"`RelativeDate`\" pulumi-lang-go=\"`relativeDate`\" pulumi-lang-python=\"`relative_date`\" pulumi-lang-yaml=\"`relativeDate`\" pulumi-lang-java=\"`relativeDate`\"\u003e`relative_date`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`staticLookup`\" pulumi-lang-dotnet=\"`StaticLookup`\" pulumi-lang-go=\"`staticLookup`\" pulumi-lang-python=\"`static_lookup`\" pulumi-lang-yaml=\"`staticLookup`\" pulumi-lang-java=\"`staticLookup`\"\u003e`static_lookup`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`truncate`\" pulumi-lang-dotnet=\"`Truncate`\" pulumi-lang-go=\"`truncate`\" pulumi-lang-python=\"`truncate`\" pulumi-lang-yaml=\"`truncate`\" pulumi-lang-java=\"`truncate`\"\u003e`truncate`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\"\u003e`url`\u003c/span\u003e.\n"},"params":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldFormatsParams:KibanaDataViewDataViewFieldFormatsParams"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","params"]}}},"elasticstack:index/KibanaDataViewDataViewFieldFormatsParams:KibanaDataViewDataViewFieldFormatsParams":{"properties":{"colors":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldFormatsParamsColor:KibanaDataViewDataViewFieldFormatsParamsColor"},"description":"Color rules for the field.\n"},"fieldLength":{"type":"number","description":"Length to truncate the field value.\n"},"fieldType":{"type":"string","description":"Field type for color formatting (e.g., \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\"\u003e`number`\u003c/span\u003e).\n"},"height":{"type":"number","description":"Height for image type URLs.\n"},"includeSpaceWithSuffix":{"type":"boolean","description":"Whether to include a space before the suffix in duration format.\n"},"inputFormat":{"type":"string","description":"Input format for duration fields (e.g., \u003cspan pulumi-lang-nodejs=\"`hours`\" pulumi-lang-dotnet=\"`Hours`\" pulumi-lang-go=\"`hours`\" pulumi-lang-python=\"`hours`\" pulumi-lang-yaml=\"`hours`\" pulumi-lang-java=\"`hours`\"\u003e`hours`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`minutes`\" pulumi-lang-dotnet=\"`Minutes`\" pulumi-lang-go=\"`minutes`\" pulumi-lang-python=\"`minutes`\" pulumi-lang-yaml=\"`minutes`\" pulumi-lang-java=\"`minutes`\"\u003e`minutes`\u003c/span\u003e).\n"},"labeltemplate":{"type":"string","description":"Label template for the field value.\n"},"lookupEntries":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldFormatsParamsLookupEntry:KibanaDataViewDataViewFieldFormatsParamsLookupEntry"},"description":"Key-value pairs for static lookup.\n"},"outputFormat":{"type":"string","description":"Output format for duration fields (e.g., `humanizePrecise`, \u003cspan pulumi-lang-nodejs=\"`humanize`\" pulumi-lang-dotnet=\"`Humanize`\" pulumi-lang-go=\"`humanize`\" pulumi-lang-python=\"`humanize`\" pulumi-lang-yaml=\"`humanize`\" pulumi-lang-java=\"`humanize`\"\u003e`humanize`\u003c/span\u003e).\n"},"outputPrecision":{"type":"number","description":"Precision for duration output.\n"},"pattern":{"type":"string","description":"Pattern for formatting the field value.\n"},"timezone":{"type":"string","description":"Timezone for date formatting (e.g., `America/New_York`).\n"},"transform":{"type":"string","description":"Transform to apply to string fields (e.g., \u003cspan pulumi-lang-nodejs=\"`upper`\" pulumi-lang-dotnet=\"`Upper`\" pulumi-lang-go=\"`upper`\" pulumi-lang-python=\"`upper`\" pulumi-lang-yaml=\"`upper`\" pulumi-lang-java=\"`upper`\"\u003e`upper`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`lower`\" pulumi-lang-dotnet=\"`Lower`\" pulumi-lang-go=\"`lower`\" pulumi-lang-python=\"`lower`\" pulumi-lang-yaml=\"`lower`\" pulumi-lang-java=\"`lower`\"\u003e`lower`\u003c/span\u003e).\n"},"type":{"type":"string","description":"Type of URL format (e.g., \u003cspan pulumi-lang-nodejs=\"`a`\" pulumi-lang-dotnet=\"`A`\" pulumi-lang-go=\"`a`\" pulumi-lang-python=\"`a`\" pulumi-lang-yaml=\"`a`\" pulumi-lang-java=\"`a`\"\u003e`a`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`img`\" pulumi-lang-dotnet=\"`Img`\" pulumi-lang-go=\"`img`\" pulumi-lang-python=\"`img`\" pulumi-lang-yaml=\"`img`\" pulumi-lang-java=\"`img`\"\u003e`img`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`audio`\" pulumi-lang-dotnet=\"`Audio`\" pulumi-lang-go=\"`audio`\" pulumi-lang-python=\"`audio`\" pulumi-lang-yaml=\"`audio`\" pulumi-lang-java=\"`audio`\"\u003e`audio`\u003c/span\u003e).\n"},"unknownKeyValue":{"type":"string","description":"Value to display when key is not found in lookup.\n"},"urltemplate":{"type":"string","description":"URL template for the field value.\n"},"useShortSuffix":{"type":"boolean","description":"Whether to use short suffixes in duration format.\n"},"width":{"type":"number","description":"Width for image type URLs.\n"}},"type":"object"},"elasticstack:index/KibanaDataViewDataViewFieldFormatsParamsColor:KibanaDataViewDataViewFieldFormatsParamsColor":{"properties":{"background":{"type":"string","description":"Background color in hex format.\n"},"range":{"type":"string","description":"Range for the color rule (e.g., `-Infinity:Infinity`).\n"},"regex":{"type":"string","description":"Regex pattern for the color rule.\n"},"text":{"type":"string","description":"Text color in hex format.\n"}},"type":"object"},"elasticstack:index/KibanaDataViewDataViewFieldFormatsParamsLookupEntry:KibanaDataViewDataViewFieldFormatsParamsLookupEntry":{"properties":{"key":{"type":"string","description":"Key for the lookup entry.\n"},"value":{"type":"string","description":"Value for the lookup entry.\n"}},"type":"object","required":["key","value"]},"elasticstack:index/KibanaDataViewDataViewRuntimeFieldMap:KibanaDataViewDataViewRuntimeFieldMap":{"properties":{"scriptSource":{"type":"string","description":"Script of the runtime field.\n"},"type":{"type":"string","description":"Mapping type of the runtime field. For more information, check [Field data types](https://www.elastic.co/guide/en/elasticsearch/reference/8.11/mapping-types.html).\n"}},"type":"object","required":["scriptSource","type"]},"elasticstack:index/KibanaImportSavedObjectsError:KibanaImportSavedObjectsError":{"properties":{"error":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsErrorError:KibanaImportSavedObjectsErrorError"},"id":{"type":"string"},"meta":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsErrorMeta:KibanaImportSavedObjectsErrorMeta"},"title":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["error","id","meta","title","type"]},"elasticstack:index/KibanaImportSavedObjectsErrorError:KibanaImportSavedObjectsErrorError":{"properties":{"type":{"type":"string"}},"type":"object","required":["type"]},"elasticstack:index/KibanaImportSavedObjectsErrorMeta:KibanaImportSavedObjectsErrorMeta":{"properties":{"icon":{"type":"string"},"title":{"type":"string"}},"type":"object","required":["icon","title"]},"elasticstack:index/KibanaImportSavedObjectsSuccessResult:KibanaImportSavedObjectsSuccessResult":{"properties":{"destinationId":{"type":"string"},"id":{"type":"string"},"meta":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsSuccessResultMeta:KibanaImportSavedObjectsSuccessResultMeta"},"type":{"type":"string"}},"type":"object","required":["destinationId","id","meta","type"]},"elasticstack:index/KibanaImportSavedObjectsSuccessResultMeta:KibanaImportSavedObjectsSuccessResultMeta":{"properties":{"icon":{"type":"string"},"title":{"type":"string"}},"type":"object","required":["icon","title"]},"elasticstack:index/KibanaMaintenanceWindowCustomSchedule:KibanaMaintenanceWindowCustomSchedule":{"properties":{"duration":{"type":"string","description":"The duration of the schedule. It allows values in `\u003cinteger\u003e\u003cunit\u003e` format. `\u003cunit\u003e` is one of \u003cspan pulumi-lang-nodejs=\"`d`\" pulumi-lang-dotnet=\"`D`\" pulumi-lang-go=\"`d`\" pulumi-lang-python=\"`d`\" pulumi-lang-yaml=\"`d`\" pulumi-lang-java=\"`d`\"\u003e`d`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`h`\" pulumi-lang-dotnet=\"`H`\" pulumi-lang-go=\"`h`\" pulumi-lang-python=\"`h`\" pulumi-lang-yaml=\"`h`\" pulumi-lang-java=\"`h`\"\u003e`h`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`m`\" pulumi-lang-dotnet=\"`M`\" pulumi-lang-go=\"`m`\" pulumi-lang-python=\"`m`\" pulumi-lang-yaml=\"`m`\" pulumi-lang-java=\"`m`\"\u003e`m`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`s`\" pulumi-lang-dotnet=\"`S`\" pulumi-lang-go=\"`s`\" pulumi-lang-python=\"`s`\" pulumi-lang-yaml=\"`s`\" pulumi-lang-java=\"`s`\"\u003e`s`\u003c/span\u003e for days, hours, minutes, seconds. For example: \u003cspan pulumi-lang-nodejs=\"`1d`\" pulumi-lang-dotnet=\"`1d`\" pulumi-lang-go=\"`1d`\" pulumi-lang-python=\"`1d`\" pulumi-lang-yaml=\"`1d`\" pulumi-lang-java=\"`1d`\"\u003e`1d`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5h`\" pulumi-lang-dotnet=\"`5h`\" pulumi-lang-go=\"`5h`\" pulumi-lang-python=\"`5h`\" pulumi-lang-yaml=\"`5h`\" pulumi-lang-java=\"`5h`\"\u003e`5h`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\"\u003e`30m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5000s`\" pulumi-lang-dotnet=\"`5000s`\" pulumi-lang-go=\"`5000s`\" pulumi-lang-python=\"`5000s`\" pulumi-lang-yaml=\"`5000s`\" pulumi-lang-java=\"`5000s`\"\u003e`5000s`\u003c/span\u003e.\n"},"recurring":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowCustomScheduleRecurring:KibanaMaintenanceWindowCustomScheduleRecurring","description":"A set schedule over which the maintenance window applies.\n"},"start":{"type":"string","description":"The start date and time of the schedule, provided in ISO 8601 format and set to the UTC timezone. For example: `2025-03-12T12:00:00.000Z`.\n"},"timezone":{"type":"string","description":"The timezone of the schedule. The default timezone is UTC.\n"}},"type":"object","required":["duration","recurring","start"],"language":{"nodejs":{"requiredOutputs":["duration","recurring","start","timezone"]}}},"elasticstack:index/KibanaMaintenanceWindowCustomScheduleRecurring:KibanaMaintenanceWindowCustomScheduleRecurring":{"properties":{"end":{"type":"string","description":"The end date and time of the schedule, provided in ISO 8601 format and set to the UTC timezone. For example: `2025-03-12T12:00:00.000Z`.\n"},"every":{"type":"string","description":"The duration of the schedule. It allows values in `\u003cinteger\u003e\u003cunit\u003e` format. `\u003cunit\u003e` is one of \u003cspan pulumi-lang-nodejs=\"`d`\" pulumi-lang-dotnet=\"`D`\" pulumi-lang-go=\"`d`\" pulumi-lang-python=\"`d`\" pulumi-lang-yaml=\"`d`\" pulumi-lang-java=\"`d`\"\u003e`d`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`h`\" pulumi-lang-dotnet=\"`H`\" pulumi-lang-go=\"`h`\" pulumi-lang-python=\"`h`\" pulumi-lang-yaml=\"`h`\" pulumi-lang-java=\"`h`\"\u003e`h`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`m`\" pulumi-lang-dotnet=\"`M`\" pulumi-lang-go=\"`m`\" pulumi-lang-python=\"`m`\" pulumi-lang-yaml=\"`m`\" pulumi-lang-java=\"`m`\"\u003e`m`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`s`\" pulumi-lang-dotnet=\"`S`\" pulumi-lang-go=\"`s`\" pulumi-lang-python=\"`s`\" pulumi-lang-yaml=\"`s`\" pulumi-lang-java=\"`s`\"\u003e`s`\u003c/span\u003e for days, hours, minutes, seconds. For example: \u003cspan pulumi-lang-nodejs=\"`1d`\" pulumi-lang-dotnet=\"`1d`\" pulumi-lang-go=\"`1d`\" pulumi-lang-python=\"`1d`\" pulumi-lang-yaml=\"`1d`\" pulumi-lang-java=\"`1d`\"\u003e`1d`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5h`\" pulumi-lang-dotnet=\"`5h`\" pulumi-lang-go=\"`5h`\" pulumi-lang-python=\"`5h`\" pulumi-lang-yaml=\"`5h`\" pulumi-lang-java=\"`5h`\"\u003e`5h`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\"\u003e`30m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5000s`\" pulumi-lang-dotnet=\"`5000s`\" pulumi-lang-go=\"`5000s`\" pulumi-lang-python=\"`5000s`\" pulumi-lang-yaml=\"`5000s`\" pulumi-lang-java=\"`5000s`\"\u003e`5000s`\u003c/span\u003e.\n"},"occurrences":{"type":"number","description":"The total number of recurrences of the schedule.\n"},"onMonthDays":{"type":"array","items":{"type":"number"},"description":"The specific days of the month for a recurring schedule. Valid values are 1-31.\n"},"onMonths":{"type":"array","items":{"type":"number"},"description":"The specific months for a recurring schedule. Valid values are 1-12.\n"},"onWeekDays":{"type":"array","items":{"type":"string"},"description":"The specific days of the week (`[MO,TU,WE,TH,FR,SA,SU]`) or nth day of month (`[+1MO, -3FR, +2WE, -4SA, -5SU]`) for a recurring schedule.\n"}},"type":"object"},"elasticstack:index/KibanaMaintenanceWindowScope:KibanaMaintenanceWindowScope":{"properties":{"alerting":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowScopeAlerting:KibanaMaintenanceWindowScopeAlerting","description":"A set schedule over which the maintenance window applies.\n"}},"type":"object","required":["alerting"]},"elasticstack:index/KibanaMaintenanceWindowScopeAlerting:KibanaMaintenanceWindowScopeAlerting":{"properties":{"kql":{"type":"string","description":"A filter written in Kibana Query Language (KQL).\n"}},"type":"object","required":["kql"]},"elasticstack:index/KibanaSecurityDetectionRuleAction:KibanaSecurityDetectionRuleAction":{"properties":{"actionTypeId":{"type":"string","description":"The action type used for sending notifications (e.g., .slack, .email, .webhook, .pagerduty, etc.).\n"},"alertsFilter":{"type":"object","additionalProperties":{"type":"string"},"description":"Object containing an action's conditional filters.\n"},"frequency":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleActionFrequency:KibanaSecurityDetectionRuleActionFrequency","description":"The action frequency defines when the action runs.\n"},"group":{"type":"string","description":"Optionally groups actions by use cases. Use 'default' for alert notifications.\n"},"id":{"type":"string","description":"The connector ID.\n"},"params":{"type":"object","additionalProperties":{"type":"string"},"description":"Object containing the allowed connector fields, which varies according to the connector type.\n"},"uuid":{"type":"string","description":"A unique identifier for the action.\n"}},"type":"object","required":["actionTypeId","id","params"],"language":{"nodejs":{"requiredOutputs":["actionTypeId","frequency","id","params","uuid"]}}},"elasticstack:index/KibanaSecurityDetectionRuleActionFrequency:KibanaSecurityDetectionRuleActionFrequency":{"properties":{"notifyWhen":{"type":"string","description":"Defines how often rules run actions. Valid values: onActionGroupChange, onActiveAlert, onThrottleInterval.\n"},"summary":{"type":"boolean","description":"Action summary indicates whether we will send a summary notification about all the generated alerts or notification per individual alert.\n"},"throttle":{"type":"string","description":"Time interval for throttling actions (e.g., '1h', '30m', 'no_actions', 'rule').\n"}},"type":"object","required":["notifyWhen","summary","throttle"]},"elasticstack:index/KibanaSecurityDetectionRuleAlertSuppression:KibanaSecurityDetectionRuleAlertSuppression":{"properties":{"duration":{"type":"string","description":"Duration for which alerts are suppressed.\n"},"groupBies":{"type":"array","items":{"type":"string"},"description":"Array of field names to group alerts by for suppression.\n"},"missingFieldsStrategy":{"type":"string","description":"Strategy for handling missing fields in suppression grouping: 'suppress' - only one alert will be created per suppress by bucket, 'doNotSuppress' - per each document a separate alert will be created.\n"}},"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleExceptionsList:KibanaSecurityDetectionRuleExceptionsList":{"properties":{"id":{"type":"string","description":"The exception container ID.\n"},"listId":{"type":"string","description":"The exception container's list ID.\n"},"namespaceType":{"type":"string","description":"The namespace type for the exception container.\n"},"type":{"type":"string","description":"The type of exception container.\n"}},"type":"object","required":["id","listId","namespaceType","type"]},"elasticstack:index/KibanaSecurityDetectionRuleRelatedIntegration:KibanaSecurityDetectionRuleRelatedIntegration":{"properties":{"integration":{"type":"string","description":"Name of the specific integration.\n"},"package":{"type":"string","description":"Name of the integration package.\n"},"version":{"type":"string","description":"Version of the integration package.\n"}},"type":"object","required":["package","version"]},"elasticstack:index/KibanaSecurityDetectionRuleRequiredField:KibanaSecurityDetectionRuleRequiredField":{"properties":{"ecs":{"type":"boolean","description":"Indicates whether the field is ECS-compliant. This is computed by the backend based on the field name and type.\n"},"name":{"type":"string","description":"Name of the Elasticsearch field.\n"},"type":{"type":"string","description":"Type of the Elasticsearch field.\n"}},"type":"object","required":["name","type"],"language":{"nodejs":{"requiredOutputs":["ecs","name","type"]}}},"elasticstack:index/KibanaSecurityDetectionRuleResponseAction:KibanaSecurityDetectionRuleResponseAction":{"properties":{"actionTypeId":{"type":"string","description":"The action type used for response actions (.osquery, .endpoint).\n"},"params":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseActionParams:KibanaSecurityDetectionRuleResponseActionParams","description":"Parameters for the response action. Structure varies based on action*type*id.\n"}},"type":"object","required":["actionTypeId","params"]},"elasticstack:index/KibanaSecurityDetectionRuleResponseActionParams:KibanaSecurityDetectionRuleResponseActionParams":{"properties":{"command":{"type":"string","description":"Command to run (endpoint only). Valid values: isolate, kill-process, suspend-process.\n"},"comment":{"type":"string","description":"Comment describing the action (endpoint only).\n"},"config":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseActionParamsConfig:KibanaSecurityDetectionRuleResponseActionParamsConfig","description":"Configuration for process commands (endpoint only).\n"},"ecsMapping":{"type":"object","additionalProperties":{"type":"string"},"description":"Map Osquery results columns to ECS fields (osquery only).\n"},"packId":{"type":"string","description":"Query pack identifier (osquery only).\n"},"queries":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseActionParamsQuery:KibanaSecurityDetectionRuleResponseActionParamsQuery"},"description":"Array of queries to run (osquery only).\n"},"query":{"type":"string","description":"SQL query to run (osquery only). Example: 'SELECT * FROM processes;'\n"},"savedQueryId":{"type":"string","description":"Saved query identifier (osquery only).\n"},"timeout":{"type":"number","description":"Timeout period in seconds (osquery only). Min: 60, Max: 900.\n"}},"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleResponseActionParamsConfig:KibanaSecurityDetectionRuleResponseActionParamsConfig":{"properties":{"field":{"type":"string","description":"Field to use instead of process.pid.\n"},"overwrite":{"type":"boolean","description":"Whether to overwrite field with process.pid.\n"}},"type":"object","required":["field"],"language":{"nodejs":{"requiredOutputs":["field","overwrite"]}}},"elasticstack:index/KibanaSecurityDetectionRuleResponseActionParamsQuery:KibanaSecurityDetectionRuleResponseActionParamsQuery":{"properties":{"ecsMapping":{"type":"object","additionalProperties":{"type":"string"},"description":"ECS field mappings for this query.\n"},"id":{"type":"string","description":"Query ID.\n"},"platform":{"type":"string","description":"Platform to run the query on.\n"},"query":{"type":"string","description":"Query to run.\n"},"removed":{"type":"boolean","description":"Whether the query is removed.\n"},"snapshot":{"type":"boolean","description":"Whether this is a snapshot query.\n"},"version":{"type":"string","description":"Query version.\n"}},"type":"object","required":["id","query"]},"elasticstack:index/KibanaSecurityDetectionRuleRiskScoreMapping:KibanaSecurityDetectionRuleRiskScoreMapping":{"properties":{"field":{"type":"string","description":"Source event field used to override the default risk_score.\n"},"operator":{"type":"string","description":"Operator to use for field value matching. Currently only 'equals' is supported.\n"},"riskScore":{"type":"number","description":"Risk score to use when the field matches the value (0-100). If omitted, uses the rule's default risk_score.\n"},"value":{"type":"string","description":"Value to match against the field.\n"}},"type":"object","required":["field","operator","value"]},"elasticstack:index/KibanaSecurityDetectionRuleSeverityMapping:KibanaSecurityDetectionRuleSeverityMapping":{"properties":{"field":{"type":"string","description":"Source event field used to override the default severity.\n"},"operator":{"type":"string","description":"Operator to use for field value matching. Currently only 'equals' is supported.\n"},"severity":{"type":"string","description":"Severity level to use when the field matches the value.\n"},"value":{"type":"string","description":"Value to match against the field.\n"}},"type":"object","required":["field","operator","severity","value"]},"elasticstack:index/KibanaSecurityDetectionRuleThreat:KibanaSecurityDetectionRuleThreat":{"properties":{"framework":{"type":"string","description":"Threat framework (typically 'MITRE ATT\u0026CK').\n"},"tactic":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatTactic:KibanaSecurityDetectionRuleThreatTactic","description":"MITRE ATT\u0026CK tactic information.\n"},"techniques":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatTechnique:KibanaSecurityDetectionRuleThreatTechnique"},"description":"MITRE ATT\u0026CK technique information.\n"}},"type":"object","required":["framework","tactic"]},"elasticstack:index/KibanaSecurityDetectionRuleThreatMapping:KibanaSecurityDetectionRuleThreatMapping":{"properties":{"entries":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatMappingEntry:KibanaSecurityDetectionRuleThreatMappingEntry"},"description":"Array of mapping entries.\n"}},"type":"object","required":["entries"]},"elasticstack:index/KibanaSecurityDetectionRuleThreatMappingEntry:KibanaSecurityDetectionRuleThreatMappingEntry":{"properties":{"field":{"type":"string","description":"Event field to match.\n"},"type":{"type":"string","description":"Type of match (mapping).\n"},"value":{"type":"string","description":"Threat intelligence field to match against.\n"}},"type":"object","required":["field","type","value"]},"elasticstack:index/KibanaSecurityDetectionRuleThreatTactic:KibanaSecurityDetectionRuleThreatTactic":{"properties":{"id":{"type":"string","description":"MITRE ATT\u0026CK tactic ID.\n"},"name":{"type":"string","description":"MITRE ATT\u0026CK tactic name.\n"},"reference":{"type":"string","description":"MITRE ATT\u0026CK tactic reference URL.\n"}},"type":"object","required":["id","name","reference"]},"elasticstack:index/KibanaSecurityDetectionRuleThreatTechnique:KibanaSecurityDetectionRuleThreatTechnique":{"properties":{"id":{"type":"string","description":"MITRE ATT\u0026CK technique ID.\n"},"name":{"type":"string","description":"MITRE ATT\u0026CK technique name.\n"},"reference":{"type":"string","description":"MITRE ATT\u0026CK technique reference URL.\n"},"subtechniques":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatTechniqueSubtechnique:KibanaSecurityDetectionRuleThreatTechniqueSubtechnique"},"description":"MITRE ATT\u0026CK sub-technique information.\n"}},"type":"object","required":["id","name","reference"]},"elasticstack:index/KibanaSecurityDetectionRuleThreatTechniqueSubtechnique:KibanaSecurityDetectionRuleThreatTechniqueSubtechnique":{"properties":{"id":{"type":"string","description":"MITRE ATT\u0026CK sub-technique ID.\n"},"name":{"type":"string","description":"MITRE ATT\u0026CK sub-technique name.\n"},"reference":{"type":"string","description":"MITRE ATT\u0026CK sub-technique reference URL.\n"}},"type":"object","required":["id","name","reference"]},"elasticstack:index/KibanaSecurityDetectionRuleThreshold:KibanaSecurityDetectionRuleThreshold":{"properties":{"cardinalities":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThresholdCardinality:KibanaSecurityDetectionRuleThresholdCardinality"},"description":"Cardinality settings for threshold rule.\n"},"fields":{"type":"array","items":{"type":"string"},"description":"Field(s) to use for threshold aggregation.\n"},"value":{"type":"number","description":"The threshold value from which an alert is generated.\n"}},"type":"object","required":["value"]},"elasticstack:index/KibanaSecurityDetectionRuleThresholdCardinality:KibanaSecurityDetectionRuleThresholdCardinality":{"properties":{"field":{"type":"string","description":"The field on which to calculate and compare the cardinality.\n"},"value":{"type":"number","description":"The threshold cardinality value.\n"}},"type":"object","required":["field","value"]},"elasticstack:index/KibanaSecurityExceptionItemComment:KibanaSecurityExceptionItemComment":{"properties":{"comment":{"type":"string","description":"The comment text.\n"},"id":{"type":"string","description":"The unique identifier of the comment (auto-generated by Kibana).\n"}},"type":"object","required":["comment"],"language":{"nodejs":{"requiredOutputs":["comment","id"]}}},"elasticstack:index/KibanaSecurityExceptionItemEntry:KibanaSecurityExceptionItemEntry":{"properties":{"entries":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntryEntry:KibanaSecurityExceptionItemEntryEntry"},"description":"Nested entries (for \u003cspan pulumi-lang-nodejs=\"`nested`\" pulumi-lang-dotnet=\"`Nested`\" pulumi-lang-go=\"`nested`\" pulumi-lang-python=\"`nested`\" pulumi-lang-yaml=\"`nested`\" pulumi-lang-java=\"`nested`\"\u003e`nested`\u003c/span\u003e type). Only \u003cspan pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\"\u003e`match`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchAny`\" pulumi-lang-dotnet=\"`MatchAny`\" pulumi-lang-go=\"`matchAny`\" pulumi-lang-python=\"`match_any`\" pulumi-lang-yaml=\"`matchAny`\" pulumi-lang-java=\"`matchAny`\"\u003e`match_any`\u003c/span\u003e, and \u003cspan pulumi-lang-nodejs=\"`exists`\" pulumi-lang-dotnet=\"`Exists`\" pulumi-lang-go=\"`exists`\" pulumi-lang-python=\"`exists`\" pulumi-lang-yaml=\"`exists`\" pulumi-lang-java=\"`exists`\"\u003e`exists`\u003c/span\u003e entry types are allowed as nested entries.\n"},"field":{"type":"string","description":"The field name. Required for all entry types.\n"},"list":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntryList:KibanaSecurityExceptionItemEntryList","description":"Value list reference (for \u003cspan pulumi-lang-nodejs=\"`list`\" pulumi-lang-dotnet=\"`List`\" pulumi-lang-go=\"`list`\" pulumi-lang-python=\"`list`\" pulumi-lang-yaml=\"`list`\" pulumi-lang-java=\"`list`\"\u003e`list`\u003c/span\u003e type).\n"},"operator":{"type":"string","description":"The operator to use. Valid values: \u003cspan pulumi-lang-nodejs=\"`included`\" pulumi-lang-dotnet=\"`Included`\" pulumi-lang-go=\"`included`\" pulumi-lang-python=\"`included`\" pulumi-lang-yaml=\"`included`\" pulumi-lang-java=\"`included`\"\u003e`included`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`excluded`\" pulumi-lang-dotnet=\"`Excluded`\" pulumi-lang-go=\"`excluded`\" pulumi-lang-python=\"`excluded`\" pulumi-lang-yaml=\"`excluded`\" pulumi-lang-java=\"`excluded`\"\u003e`excluded`\u003c/span\u003e. Note: The operator field is not supported for nested entry types and will be ignored if specified.\n"},"type":{"type":"string","description":"The type of entry. Valid values: \u003cspan pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\"\u003e`match`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchAny`\" pulumi-lang-dotnet=\"`MatchAny`\" pulumi-lang-go=\"`matchAny`\" pulumi-lang-python=\"`match_any`\" pulumi-lang-yaml=\"`matchAny`\" pulumi-lang-java=\"`matchAny`\"\u003e`match_any`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`list`\" pulumi-lang-dotnet=\"`List`\" pulumi-lang-go=\"`list`\" pulumi-lang-python=\"`list`\" pulumi-lang-yaml=\"`list`\" pulumi-lang-java=\"`list`\"\u003e`list`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`exists`\" pulumi-lang-dotnet=\"`Exists`\" pulumi-lang-go=\"`exists`\" pulumi-lang-python=\"`exists`\" pulumi-lang-yaml=\"`exists`\" pulumi-lang-java=\"`exists`\"\u003e`exists`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`nested`\" pulumi-lang-dotnet=\"`Nested`\" pulumi-lang-go=\"`nested`\" pulumi-lang-python=\"`nested`\" pulumi-lang-yaml=\"`nested`\" pulumi-lang-java=\"`nested`\"\u003e`nested`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`wildcard`\" pulumi-lang-dotnet=\"`Wildcard`\" pulumi-lang-go=\"`wildcard`\" pulumi-lang-python=\"`wildcard`\" pulumi-lang-yaml=\"`wildcard`\" pulumi-lang-java=\"`wildcard`\"\u003e`wildcard`\u003c/span\u003e.\n"},"value":{"type":"string","description":"The value to match (for \u003cspan pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\"\u003e`match`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`wildcard`\" pulumi-lang-dotnet=\"`Wildcard`\" pulumi-lang-go=\"`wildcard`\" pulumi-lang-python=\"`wildcard`\" pulumi-lang-yaml=\"`wildcard`\" pulumi-lang-java=\"`wildcard`\"\u003e`wildcard`\u003c/span\u003e types).\n"},"values":{"type":"array","items":{"type":"string"},"description":"Array of values to match (for \u003cspan pulumi-lang-nodejs=\"`matchAny`\" pulumi-lang-dotnet=\"`MatchAny`\" pulumi-lang-go=\"`matchAny`\" pulumi-lang-python=\"`match_any`\" pulumi-lang-yaml=\"`matchAny`\" pulumi-lang-java=\"`matchAny`\"\u003e`match_any`\u003c/span\u003e type).\n"}},"type":"object","required":["field","type"]},"elasticstack:index/KibanaSecurityExceptionItemEntryEntry:KibanaSecurityExceptionItemEntryEntry":{"properties":{"field":{"type":"string","description":"The field name.\n"},"operator":{"type":"string","description":"The operator to use. Valid values: \u003cspan pulumi-lang-nodejs=\"`included`\" pulumi-lang-dotnet=\"`Included`\" pulumi-lang-go=\"`included`\" pulumi-lang-python=\"`included`\" pulumi-lang-yaml=\"`included`\" pulumi-lang-java=\"`included`\"\u003e`included`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`excluded`\" pulumi-lang-dotnet=\"`Excluded`\" pulumi-lang-go=\"`excluded`\" pulumi-lang-python=\"`excluded`\" pulumi-lang-yaml=\"`excluded`\" pulumi-lang-java=\"`excluded`\"\u003e`excluded`\u003c/span\u003e.\n"},"type":{"type":"string","description":"The type of nested entry. Valid values: \u003cspan pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\"\u003e`match`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`matchAny`\" pulumi-lang-dotnet=\"`MatchAny`\" pulumi-lang-go=\"`matchAny`\" pulumi-lang-python=\"`match_any`\" pulumi-lang-yaml=\"`matchAny`\" pulumi-lang-java=\"`matchAny`\"\u003e`match_any`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`exists`\" pulumi-lang-dotnet=\"`Exists`\" pulumi-lang-go=\"`exists`\" pulumi-lang-python=\"`exists`\" pulumi-lang-yaml=\"`exists`\" pulumi-lang-java=\"`exists`\"\u003e`exists`\u003c/span\u003e.\n"},"value":{"type":"string","description":"The value to match (for \u003cspan pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\"\u003e`match`\u003c/span\u003e type).\n"},"values":{"type":"array","items":{"type":"string"},"description":"Array of values to match (for \u003cspan pulumi-lang-nodejs=\"`matchAny`\" pulumi-lang-dotnet=\"`MatchAny`\" pulumi-lang-go=\"`matchAny`\" pulumi-lang-python=\"`match_any`\" pulumi-lang-yaml=\"`matchAny`\" pulumi-lang-java=\"`matchAny`\"\u003e`match_any`\u003c/span\u003e type).\n"}},"type":"object","required":["field","operator","type"]},"elasticstack:index/KibanaSecurityExceptionItemEntryList:KibanaSecurityExceptionItemEntryList":{"properties":{"id":{"type":"string","description":"The value list ID.\n"},"type":{"type":"string","description":"The value list type (e.g., \u003cspan pulumi-lang-nodejs=\"`keyword`\" pulumi-lang-dotnet=\"`Keyword`\" pulumi-lang-go=\"`keyword`\" pulumi-lang-python=\"`keyword`\" pulumi-lang-yaml=\"`keyword`\" pulumi-lang-java=\"`keyword`\"\u003e`keyword`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e).\n"}},"type":"object","required":["id","type"]},"elasticstack:index/KibanaSecurityRoleElasticsearch:KibanaSecurityRoleElasticsearch":{"properties":{"clusters":{"type":"array","items":{"type":"string"},"description":"List of the cluster privileges.\n"},"indices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearchIndex:KibanaSecurityRoleElasticsearchIndex"},"description":"A list of indices permissions entries.\n"},"remoteIndices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearchRemoteIndex:KibanaSecurityRoleElasticsearchRemoteIndex"},"description":"A list of remote indices permissions entries. Remote indices are effective for remote clusters configured with the API key based model. They have no effect for remote clusters configured with the certificate based model.\n"},"runAs":{"type":"array","items":{"type":"string"},"description":"A list of usernames the owners of this role can impersonate.\n"}},"type":"object"},"elasticstack:index/KibanaSecurityRoleElasticsearchIndex:KibanaSecurityRoleElasticsearchIndex":{"properties":{"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearchIndexFieldSecurity:KibanaSecurityRoleElasticsearchIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"type":"array","items":{"type":"string"},"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n"},"privileges":{"type":"array","items":{"type":"string"},"description":"The index level privileges that the owners of the role have on the specified indices.\n"},"query":{"type":"string","description":"A search query that defines the documents the owners of the role have read access to.\n"}},"type":"object","required":["names","privileges"]},"elasticstack:index/KibanaSecurityRoleElasticsearchIndexFieldSecurity:KibanaSecurityRoleElasticsearchIndexFieldSecurity":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of the fields to which the grants will not be applied.\n"},"grants":{"type":"array","items":{"type":"string"},"description":"List of the fields to grant the access to.\n"}},"type":"object"},"elasticstack:index/KibanaSecurityRoleElasticsearchRemoteIndex:KibanaSecurityRoleElasticsearchRemoteIndex":{"properties":{"clusters":{"type":"array","items":{"type":"string"},"description":"A list of cluster aliases to which the permissions in this entry apply.\n"},"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity:KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"type":"array","items":{"type":"string"},"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n"},"privileges":{"type":"array","items":{"type":"string"},"description":"The index level privileges that the owners of the role have on the specified indices.\n"},"query":{"type":"string","description":"A search query that defines the documents the owners of the role have read access to.\n"}},"type":"object","required":["clusters","names","privileges"]},"elasticstack:index/KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity:KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity":{"properties":{"excepts":{"type":"array","items":{"type":"string"},"description":"List of the fields to which the grants will not be applied.\n"},"grants":{"type":"array","items":{"type":"string"},"description":"List of the fields to grant the access to.\n"}},"type":"object"},"elasticstack:index/KibanaSecurityRoleKibana:KibanaSecurityRoleKibana":{"properties":{"bases":{"type":"array","items":{"type":"string"},"description":"A base privilege. When specified, the base must be [\"all\"] or [\"read\"]. When the base privileges are specified, you are unable to use the \"feature\" section.\n"},"features":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibanaFeature:KibanaSecurityRoleKibanaFeature"},"description":"List of privileges for specific features. When the feature privileges are specified, you are unable to use the \"base\" section.\n"},"spaces":{"type":"array","items":{"type":"string"},"description":"The spaces to apply the privileges to. To grant access to all spaces, set to [\"*\"], or omit the value.\n"}},"type":"object","required":["spaces"]},"elasticstack:index/KibanaSecurityRoleKibanaFeature:KibanaSecurityRoleKibanaFeature":{"properties":{"name":{"type":"string","description":"Feature name.\n"},"privileges":{"type":"array","items":{"type":"string"},"description":"Feature privileges.\n"}},"type":"object","required":["name","privileges"]},"elasticstack:index/KibanaSloApmAvailabilityIndicator:KibanaSloApmAvailabilityIndicator":{"properties":{"environment":{"type":"string"},"filter":{"type":"string"},"index":{"type":"string"},"service":{"type":"string"},"transactionName":{"type":"string"},"transactionType":{"type":"string"}},"type":"object","required":["environment","index","service","transactionName","transactionType"]},"elasticstack:index/KibanaSloApmLatencyIndicator:KibanaSloApmLatencyIndicator":{"properties":{"environment":{"type":"string"},"filter":{"type":"string"},"index":{"type":"string"},"service":{"type":"string"},"threshold":{"type":"number"},"transactionName":{"type":"string"},"transactionType":{"type":"string"}},"type":"object","required":["environment","index","service","threshold","transactionName","transactionType"]},"elasticstack:index/KibanaSloHistogramCustomIndicator:KibanaSloHistogramCustomIndicator":{"properties":{"dataViewId":{"type":"string","description":"Optional data view id to use for this indicator.\n"},"filter":{"type":"string"},"goods":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicatorGood:KibanaSloHistogramCustomIndicatorGood"}},"index":{"type":"string"},"timestampField":{"type":"string"},"totals":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicatorTotal:KibanaSloHistogramCustomIndicatorTotal"}}},"type":"object","required":["index"],"language":{"nodejs":{"requiredOutputs":["index","timestampField"]}}},"elasticstack:index/KibanaSloHistogramCustomIndicatorGood:KibanaSloHistogramCustomIndicatorGood":{"properties":{"aggregation":{"type":"string"},"field":{"type":"string"},"filter":{"type":"string"},"from":{"type":"number"},"to":{"type":"number"}},"type":"object","required":["aggregation","field"]},"elasticstack:index/KibanaSloHistogramCustomIndicatorTotal:KibanaSloHistogramCustomIndicatorTotal":{"properties":{"aggregation":{"type":"string"},"field":{"type":"string"},"filter":{"type":"string"},"from":{"type":"number"},"to":{"type":"number"}},"type":"object","required":["aggregation","field"]},"elasticstack:index/KibanaSloKqlCustomIndicator:KibanaSloKqlCustomIndicator":{"properties":{"dataViewId":{"type":"string","description":"Optional data view id to use for this indicator.\n"},"filter":{"type":"string"},"good":{"type":"string"},"index":{"type":"string"},"timestampField":{"type":"string"},"total":{"type":"string"}},"type":"object","required":["index"],"language":{"nodejs":{"requiredOutputs":["good","index","timestampField","total"]}}},"elasticstack:index/KibanaSloMetricCustomIndicator:KibanaSloMetricCustomIndicator":{"properties":{"dataViewId":{"type":"string","description":"Optional data view id to use for this indicator.\n"},"filter":{"type":"string"},"goods":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicatorGood:KibanaSloMetricCustomIndicatorGood"}},"index":{"type":"string"},"timestampField":{"type":"string"},"totals":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicatorTotal:KibanaSloMetricCustomIndicatorTotal"}}},"type":"object","required":["index"],"language":{"nodejs":{"requiredOutputs":["index","timestampField"]}}},"elasticstack:index/KibanaSloMetricCustomIndicatorGood:KibanaSloMetricCustomIndicatorGood":{"properties":{"equation":{"type":"string"},"metrics":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicatorGoodMetric:KibanaSloMetricCustomIndicatorGoodMetric"}}},"type":"object","required":["equation"]},"elasticstack:index/KibanaSloMetricCustomIndicatorGoodMetric:KibanaSloMetricCustomIndicatorGoodMetric":{"properties":{"aggregation":{"type":"string"},"field":{"type":"string"},"filter":{"type":"string"},"name":{"type":"string"}},"type":"object","required":["aggregation","field","name"]},"elasticstack:index/KibanaSloMetricCustomIndicatorTotal:KibanaSloMetricCustomIndicatorTotal":{"properties":{"equation":{"type":"string"},"metrics":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicatorTotalMetric:KibanaSloMetricCustomIndicatorTotalMetric"}}},"type":"object","required":["equation"]},"elasticstack:index/KibanaSloMetricCustomIndicatorTotalMetric:KibanaSloMetricCustomIndicatorTotalMetric":{"properties":{"aggregation":{"type":"string"},"field":{"type":"string"},"filter":{"type":"string"},"name":{"type":"string"}},"type":"object","required":["aggregation","field","name"]},"elasticstack:index/KibanaSloObjective:KibanaSloObjective":{"properties":{"target":{"type":"number"},"timesliceTarget":{"type":"number"},"timesliceWindow":{"type":"string"}},"type":"object","required":["target"]},"elasticstack:index/KibanaSloSettings:KibanaSloSettings":{"properties":{"frequency":{"type":"string"},"preventInitialBackfill":{"type":"boolean","description":"Prevents the underlying ES transform from attempting to backfill data on start, which can sometimes be resource-intensive or time-consuming and unnecessary\n"},"syncDelay":{"type":"string"}},"type":"object","language":{"nodejs":{"requiredOutputs":["frequency","preventInitialBackfill","syncDelay"]}}},"elasticstack:index/KibanaSloTimeWindow:KibanaSloTimeWindow":{"properties":{"duration":{"type":"string"},"type":{"type":"string"}},"type":"object","required":["duration","type"]},"elasticstack:index/KibanaSloTimesliceMetricIndicator:KibanaSloTimesliceMetricIndicator":{"properties":{"dataViewId":{"type":"string","description":"Optional data view id to use for this indicator.\n"},"filter":{"type":"string"},"index":{"type":"string"},"metrics":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicatorMetric:KibanaSloTimesliceMetricIndicatorMetric"}},"timestampField":{"type":"string"}},"type":"object","required":["index","timestampField"]},"elasticstack:index/KibanaSloTimesliceMetricIndicatorMetric:KibanaSloTimesliceMetricIndicatorMetric":{"properties":{"comparator":{"type":"string"},"equation":{"type":"string"},"metrics":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicatorMetricMetric:KibanaSloTimesliceMetricIndicatorMetricMetric"}},"threshold":{"type":"number"}},"type":"object","required":["comparator","equation","threshold"]},"elasticstack:index/KibanaSloTimesliceMetricIndicatorMetricMetric:KibanaSloTimesliceMetricIndicatorMetricMetric":{"properties":{"aggregation":{"type":"string","description":"The aggregation type for this metric. One of: sum, avg, min, max, value*count, percentile, doc*count. Determines which other fields are required:\n"},"field":{"type":"string","description":"Field to aggregate. Required for aggregations: sum, avg, min, max, value*count, percentile. Must NOT be set for doc*count.\n"},"filter":{"type":"string","description":"Optional KQL filter for this metric. Supported for all aggregations except doc_count.\n"},"name":{"type":"string","description":"The unique name for this metric. Used as a variable in the equation field.\n"},"percentile":{"type":"number","description":"Percentile value (e.g., 99). Required if aggregation is 'percentile'. Must NOT be set for other aggregations.\n"}},"type":"object","required":["aggregation","name"]},"elasticstack:index/KibanaSyntheticsMonitorAlert:KibanaSyntheticsMonitorAlert":{"properties":{"status":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorAlertStatus:KibanaSyntheticsMonitorAlertStatus"},"tls":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorAlertTls:KibanaSyntheticsMonitorAlertTls"}},"type":"object"},"elasticstack:index/KibanaSyntheticsMonitorAlertStatus:KibanaSyntheticsMonitorAlertStatus":{"properties":{"enabled":{"type":"boolean"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enabled"]}}},"elasticstack:index/KibanaSyntheticsMonitorAlertTls:KibanaSyntheticsMonitorAlertTls":{"properties":{"enabled":{"type":"boolean"}},"type":"object","language":{"nodejs":{"requiredOutputs":["enabled"]}}},"elasticstack:index/KibanaSyntheticsMonitorBrowser:KibanaSyntheticsMonitorBrowser":{"properties":{"ignoreHttpsErrors":{"type":"boolean","description":"Whether to ignore HTTPS errors.\n"},"inlineScript":{"type":"string","description":"The inline script.\n"},"playwrightOptions":{"type":"string","description":"Playwright options.. Raw JSON object, use \u003cspan pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\"\u003e`jsonencode`\u003c/span\u003e function to represent JSON\n"},"screenshots":{"type":"string","description":"Controls the behavior of the screenshots feature.\n"},"syntheticsArgs":{"type":"array","items":{"type":"string"},"description":"Synthetics agent CLI arguments.\n"}},"type":"object","required":["inlineScript"],"language":{"nodejs":{"requiredOutputs":["ignoreHttpsErrors","inlineScript","screenshots"]}}},"elasticstack:index/KibanaSyntheticsMonitorHttp:KibanaSyntheticsMonitorHttp":{"properties":{"check":{"type":"string","description":"The check request settings.. Raw JSON object, use \u003cspan pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\"\u003e`jsonencode`\u003c/span\u003e function to represent JSON\n"},"ipv4":{"type":"boolean","description":"Whether to ping using the ipv4 protocol.\n"},"ipv6":{"type":"boolean","description":"Whether to ping using the ipv6 protocol.\n"},"maxRedirects":{"type":"number","description":"The maximum number of redirects to follow. Default: \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e\n"},"mode":{"type":"string","description":"The mode of the monitor. Can be \"all\" or \"any\". If you're using a DNS-load balancer and want to ping every IP address for the specified hostname, you should use all.\n"},"password":{"type":"string","description":"The password for authenticating with the server. The credentials are passed with the request.\n"},"proxyHeader":{"type":"string","description":"Additional headers to send to proxies during CONNECT requests.. Raw JSON object, use \u003cspan pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\"\u003e`jsonencode`\u003c/span\u003e function to represent JSON\n"},"proxyUrl":{"type":"string","description":"The URL of the proxy to use for this monitor.\n"},"response":{"type":"string","description":"Controls the indexing of the HTTP response body contents to the `http.response.body.contents` field.. Raw JSON object, use \u003cspan pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\"\u003e`jsonencode`\u003c/span\u003e function to represent JSON\n"},"sslCertificate":{"type":"string","description":"Certificate.\n"},"sslCertificateAuthorities":{"type":"array","items":{"type":"string"},"description":"The list of root certificates for verifications is required.\n"},"sslKey":{"type":"string","description":"Certificate key.\n","secret":true},"sslKeyPassphrase":{"type":"string","description":"Key passphrase.\n","secret":true},"sslSupportedProtocols":{"type":"array","items":{"type":"string"},"description":"List of allowed SSL/TLS versions.\n"},"sslVerificationMode":{"type":"string","description":"Controls the verification of server certificates.\n"},"url":{"type":"string","description":"URL to monitor.\n"},"username":{"type":"string","description":"The username for authenticating with the server. The credentials are passed with the request.\n"}},"type":"object","required":["url"],"language":{"nodejs":{"requiredOutputs":["ipv4","ipv6","maxRedirects","mode","proxyUrl","sslCertificate","sslKey","sslKeyPassphrase","sslSupportedProtocols","sslVerificationMode","url"]}}},"elasticstack:index/KibanaSyntheticsMonitorIcmp:KibanaSyntheticsMonitorIcmp":{"properties":{"host":{"type":"string","description":"Host to ping; it can be an IP address or a hostname.\n"},"wait":{"type":"number","description":"Wait time in seconds. Default: \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e\n"}},"type":"object","required":["host"],"language":{"nodejs":{"requiredOutputs":["host","wait"]}}},"elasticstack:index/KibanaSyntheticsMonitorTcp:KibanaSyntheticsMonitorTcp":{"properties":{"checkReceive":{"type":"string","description":"The expected answer.\n"},"checkSend":{"type":"string","description":"An optional payload string to send to the remote host.\n"},"host":{"type":"string","description":"The host to monitor; it can be an IP address or a hostname. The host can include the port using a colon (e.g., \"example.com:9200\").\n"},"proxyUrl":{"type":"string","description":"The URL of the SOCKS5 proxy to use when connecting to the server. The value must be a URL with a scheme of `socks5://`. If the SOCKS5 proxy server requires client authentication, then a username and password can be embedded in the URL. When using a proxy, hostnames are resolved on the proxy server instead of on the client. You can change this behavior by setting the \u003cspan pulumi-lang-nodejs=\"`proxyUseLocalResolver`\" pulumi-lang-dotnet=\"`ProxyUseLocalResolver`\" pulumi-lang-go=\"`proxyUseLocalResolver`\" pulumi-lang-python=\"`proxy_use_local_resolver`\" pulumi-lang-yaml=\"`proxyUseLocalResolver`\" pulumi-lang-java=\"`proxyUseLocalResolver`\"\u003e`proxy_use_local_resolver`\u003c/span\u003e option.\n"},"proxyUseLocalResolver":{"type":"boolean","description":"A Boolean value that determines whether hostnames are resolved locally instead of being resolved on the proxy server. The default value is false, which means that name resolution occurs on the proxy server.\n"},"sslCertificate":{"type":"string","description":"Certificate.\n"},"sslCertificateAuthorities":{"type":"array","items":{"type":"string"},"description":"The list of root certificates for verifications is required.\n"},"sslKey":{"type":"string","description":"Certificate key.\n","secret":true},"sslKeyPassphrase":{"type":"string","description":"Key passphrase.\n","secret":true},"sslSupportedProtocols":{"type":"array","items":{"type":"string"},"description":"List of allowed SSL/TLS versions.\n"},"sslVerificationMode":{"type":"string","description":"Controls the verification of server certificates.\n"}},"type":"object","required":["host"],"language":{"nodejs":{"requiredOutputs":["host","proxyUrl","proxyUseLocalResolver","sslCertificate","sslKey","sslKeyPassphrase","sslSupportedProtocols","sslVerificationMode"]}}},"elasticstack:index/KibanaSyntheticsPrivateLocationGeo:KibanaSyntheticsPrivateLocationGeo":{"properties":{"lat":{"type":"number","description":"The latitude of the location.\n"},"lon":{"type":"number","description":"The longitude of the location.\n"}},"type":"object","required":["lat","lon"]},"elasticstack:index/ProviderElasticsearch:ProviderElasticsearch":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/ProviderFleet:ProviderFleet":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Fleet.\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Fleet.\n","secret":true},"caCerts":{"type":"array","items":{"type":"string"},"description":"A list of paths to CA certificates to validate the certificate presented by the Fleet server.\n"},"endpoint":{"type":"string","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"password":{"type":"string","description":"Password to use for API authentication to Fleet.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Fleet.\n"}},"type":"object"},"elasticstack:index/ProviderKibana:ProviderKibana":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Kibana\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Kibana\n","secret":true},"caCerts":{"type":"array","items":{"type":"string"},"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"password":{"type":"string","description":"Password to use for API authentication to Kibana.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Kibana.\n"}},"type":"object"},"elasticstack:index/getElasticsearchEnrichPolicyElasticsearchConnection:getElasticsearchEnrichPolicyElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateDataStream:getElasticsearchIndexTemplateDataStream":{"properties":{"allowCustomRouting":{"type":"boolean"},"hidden":{"type":"boolean"}},"type":"object","required":["allowCustomRouting","hidden"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchIndexTemplateElasticsearchConnection:getElasticsearchIndexTemplateElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateTemplate:getElasticsearchIndexTemplateTemplate":{"properties":{"aliases":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplateAlias:getElasticsearchIndexTemplateTemplateAlias"}},"lifecycles":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplateLifecycle:getElasticsearchIndexTemplateTemplateLifecycle"}},"mappings":{"type":"string"},"settings":{"type":"string"}},"type":"object","required":["aliases","lifecycles","mappings","settings"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchIndexTemplateTemplateAlias:getElasticsearchIndexTemplateTemplateAlias":{"properties":{"filter":{"type":"string"},"indexRouting":{"type":"string"},"isHidden":{"type":"boolean"},"isWriteIndex":{"type":"boolean"},"name":{"type":"string"},"routing":{"type":"string"},"searchRouting":{"type":"string"}},"type":"object","required":["filter","indexRouting","isHidden","isWriteIndex","name","routing","searchRouting"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchIndexTemplateTemplateLifecycle:getElasticsearchIndexTemplateTemplateLifecycle":{"properties":{"dataRetention":{"type":"string"}},"type":"object","required":["dataRetention"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchIndicesIndex:getElasticsearchIndicesIndex":{"properties":{"aliases":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndicesIndexAlias:getElasticsearchIndicesIndexAlias"},"description":"Aliases for the index.\n"},"analysisAnalyzer":{"type":"string","description":"A JSON string describing the analyzers applied to the index.\n"},"analysisCharFilter":{"type":"string","description":"A JSON string describing the\u003cspan pulumi-lang-nodejs=\" charFilters \" pulumi-lang-dotnet=\" CharFilters \" pulumi-lang-go=\" charFilters \" pulumi-lang-python=\" char_filters \" pulumi-lang-yaml=\" charFilters \" pulumi-lang-java=\" charFilters \"\u003e char_filters \u003c/span\u003eapplied to the index.\n"},"analysisFilter":{"type":"string","description":"A JSON string describing the filters applied to the index.\n"},"analysisNormalizer":{"type":"string","description":"A JSON string describing the normalizers applied to the index.\n"},"analysisTokenizer":{"type":"string","description":"A JSON string describing the tokenizers applied to the index.\n"},"analyzeMaxTokenCount":{"type":"number","description":"The maximum number of tokens that can be produced using _analyze API.\n"},"autoExpandReplicas":{"type":"string","description":"Set the number of replicas to the node count in the cluster. Set to a dash delimited lower and upper bound (e.g. 0-5) or use all for the upper bound (e.g. 0-all)\n"},"blocksMetadata":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable index metadata reads and writes.\n"},"blocksRead":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable read operations against the index.\n"},"blocksReadOnly":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to make the index and index metadata read only, \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to allow writes and metadata changes.\n"},"blocksReadOnlyAllowDelete":{"type":"boolean","description":"Identical to `index.blocks.read_only` but allows deleting the index to free up resources.\n"},"blocksWrite":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable data write operations against the index. This setting does not affect metadata.\n"},"codec":{"type":"string","description":"The \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e value compresses stored data with LZ4 compression, but this can be set to \u003cspan pulumi-lang-nodejs=\"`bestCompression`\" pulumi-lang-dotnet=\"`BestCompression`\" pulumi-lang-go=\"`bestCompression`\" pulumi-lang-python=\"`best_compression`\" pulumi-lang-yaml=\"`bestCompression`\" pulumi-lang-java=\"`bestCompression`\"\u003e`best_compression`\u003c/span\u003e which uses DEFLATE for a higher compression ratio. This can be set only on creation.\n"},"defaultPipeline":{"type":"string","description":"The default ingest node pipeline for this index. Index requests will fail if the default pipeline is set and the pipeline does not exist.\n"},"deletionProtection":{"type":"boolean"},"finalPipeline":{"type":"string","description":"Final ingest pipeline for the index. Indexing requests will fail if the final pipeline is set and the pipeline does not exist. The final pipeline always runs after the request pipeline (if specified) and the default pipeline (if it exists). The special pipeline name _none indicates no ingest pipeline will run.\n"},"gcDeletes":{"type":"string","description":"The length of time that a deleted document's version number remains available for further versioned operations.\n"},"highlightMaxAnalyzedOffset":{"type":"number","description":"The maximum number of characters that will be analyzed for a highlight request.\n"},"id":{"type":"string","description":"Internal identifier of the resource.\n"},"indexingSlowlogLevel":{"type":"string","description":"Set which logging level to use for the search slow log, can be: \u003cspan pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\"\u003e`warn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\"\u003e`trace`\u003c/span\u003e\n"},"indexingSlowlogSource":{"type":"string","description":"Set the number of characters of the `_source` to include in the slowlog lines, \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e will skip logging the source entirely and setting it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will log the entire source regardless of size. The original `_source` is reformatted by default to make sure that it fits on a single log line.\n"},"indexingSlowlogThresholdIndexDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"loadFixedBitsetFiltersEagerly":{"type":"boolean","description":"Indicates whether cached filters are pre-loaded for nested queries. This can be set only on creation.\n"},"mappingCoerce":{"type":"boolean","description":"Set index level coercion setting that is applied to all mapping types.\n"},"mappings":{"type":"string","description":"Mapping for fields in the index.\n\t\t\t\t\t\tIf specified, this mapping can include: field names, [field data types](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html), [mapping parameters](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html).\n\t\t\t\t\t\t**NOTE:**\n\t\t\t\t\t\t- Changing datatypes in the existing *mappings* will force index to be re-created.\n\t\t\t\t\t\t- Removing field will be ignored by default same as elasticsearch. You need to recreate the index to remove field completely.\n"},"masterTimeout":{"type":"string","description":"Period to wait for a connection to the master node. If no response is received before the timeout expires, the request fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e. This value is ignored when running against Serverless projects.\n"},"maxDocvalueFieldsSearch":{"type":"number","description":"The maximum number of \u003cspan pulumi-lang-nodejs=\"`docvalueFields`\" pulumi-lang-dotnet=\"`DocvalueFields`\" pulumi-lang-go=\"`docvalueFields`\" pulumi-lang-python=\"`docvalue_fields`\" pulumi-lang-yaml=\"`docvalueFields`\" pulumi-lang-java=\"`docvalueFields`\"\u003e`docvalue_fields`\u003c/span\u003e that are allowed in a query.\n"},"maxInnerResultWindow":{"type":"number","description":"The maximum value of `from + size` for inner hits definition and top hits aggregations to this index.\n"},"maxNgramDiff":{"type":"number","description":"The maximum allowed difference between min*gram and max*gram for NGramTokenizer and NGramTokenFilter.\n"},"maxRefreshListeners":{"type":"number","description":"Maximum number of refresh listeners available on each shard of the index.\n"},"maxRegexLength":{"type":"number","description":"The maximum length of regex that can be used in Regexp Query.\n"},"maxRescoreWindow":{"type":"number","description":"The maximum value of \u003cspan pulumi-lang-nodejs=\"`windowSize`\" pulumi-lang-dotnet=\"`WindowSize`\" pulumi-lang-go=\"`windowSize`\" pulumi-lang-python=\"`window_size`\" pulumi-lang-yaml=\"`windowSize`\" pulumi-lang-java=\"`windowSize`\"\u003e`window_size`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`rescore`\" pulumi-lang-dotnet=\"`Rescore`\" pulumi-lang-go=\"`rescore`\" pulumi-lang-python=\"`rescore`\" pulumi-lang-yaml=\"`rescore`\" pulumi-lang-java=\"`rescore`\"\u003e`rescore`\u003c/span\u003e requests in searches of this index.\n"},"maxResultWindow":{"type":"number","description":"The maximum value of `from + size` for searches to this index.\n"},"maxScriptFields":{"type":"number","description":"The maximum number of \u003cspan pulumi-lang-nodejs=\"`scriptFields`\" pulumi-lang-dotnet=\"`ScriptFields`\" pulumi-lang-go=\"`scriptFields`\" pulumi-lang-python=\"`script_fields`\" pulumi-lang-yaml=\"`scriptFields`\" pulumi-lang-java=\"`scriptFields`\"\u003e`script_fields`\u003c/span\u003e that are allowed in a query.\n"},"maxShingleDiff":{"type":"number","description":"The maximum allowed difference between max*shingle*size and min*shingle*size for ShingleTokenFilter.\n"},"maxTermsCount":{"type":"number","description":"The maximum number of terms that can be used in Terms Query.\n"},"name":{"type":"string","description":"Name of the index.\n"},"numberOfReplicas":{"type":"number","description":"Number of shard replicas.\n"},"numberOfRoutingShards":{"type":"number","description":"Value used with number*of*shards to route documents to a primary shard. This can be set only on creation.\n"},"numberOfShards":{"type":"number","description":"Number of shards for the index. This can be set only on creation.\n"},"queryDefaultFields":{"type":"array","items":{"type":"string"},"description":"Wildcard (*) patterns matching one or more fields. Defaults to '*', which matches all fields eligible for term-level queries, excluding metadata fields.\n"},"refreshInterval":{"type":"string","description":"How often to perform a refresh operation, which makes recent changes to the index visible to search. Can be set to `-1` to disable refresh.\n"},"routingAllocationEnable":{"type":"string","description":"Controls shard allocation for this index. It can be set to: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\"\u003e`primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`newPrimaries`\" pulumi-lang-dotnet=\"`NewPrimaries`\" pulumi-lang-go=\"`newPrimaries`\" pulumi-lang-python=\"`new_primaries`\" pulumi-lang-yaml=\"`newPrimaries`\" pulumi-lang-java=\"`newPrimaries`\"\u003e`new_primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"routingPartitionSize":{"type":"number","description":"The number of shards a custom routing value can go to. This can be set only on creation.\n"},"routingRebalanceEnable":{"type":"string","description":"Enables shard rebalancing for this index. It can be set to: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\"\u003e`primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`replicas`\" pulumi-lang-dotnet=\"`Replicas`\" pulumi-lang-go=\"`replicas`\" pulumi-lang-python=\"`replicas`\" pulumi-lang-yaml=\"`replicas`\" pulumi-lang-java=\"`replicas`\"\u003e`replicas`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"searchIdleAfter":{"type":"string","description":"How long a shard can not receive a search or get request until it’s considered search idle.\n"},"searchSlowlogLevel":{"type":"string","description":"Set which logging level to use for the search slow log, can be: \u003cspan pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\"\u003e`warn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\"\u003e`trace`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"settingsRaw":{"type":"string","description":"All raw settings fetched from the cluster.\n"},"shardCheckOnStartup":{"type":"string","description":"Whether or not shards should be checked for corruption before opening. When corruption is detected, it will prevent the shard from being opened. Accepts \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`checksum`\" pulumi-lang-dotnet=\"`Checksum`\" pulumi-lang-go=\"`checksum`\" pulumi-lang-python=\"`checksum`\" pulumi-lang-yaml=\"`checksum`\" pulumi-lang-java=\"`checksum`\"\u003e`checksum`\u003c/span\u003e.\n"},"sortFields":{"type":"array","items":{"type":"string"},"description":"The field to sort shards in this index by.\n"},"sortOrders":{"type":"array","items":{"type":"string"},"description":"The direction to sort shards in. Accepts \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"},"timeout":{"type":"string","description":"Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"unassignedNodeLeftDelayedTimeout":{"type":"string","description":"Time to delay the allocation of replica shards which become unassigned because a node has left, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"waitForActiveShards":{"type":"string","description":"The number of shard copies that must be active before proceeding with the operation. Set to \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e or any positive integer up to the total number of shards in the index (number*of*replicas+1). Default: \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, the primary shard. This value is ignored when running against Serverless projects.\n"}},"type":"object","required":["deletionProtection","id","mappings","masterTimeout","name","numberOfReplicas","settingsRaw","timeout","waitForActiveShards"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchIndicesIndexAlias:getElasticsearchIndicesIndexAlias":{"properties":{"filter":{"type":"string","description":"Query used to limit documents the alias can access.\n"},"indexRouting":{"type":"string","description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the \u003cspan pulumi-lang-nodejs=\"`routing`\" pulumi-lang-dotnet=\"`Routing`\" pulumi-lang-go=\"`routing`\" pulumi-lang-python=\"`routing`\" pulumi-lang-yaml=\"`routing`\" pulumi-lang-java=\"`routing`\"\u003e`routing`\u003c/span\u003e value for indexing operations.\n"},"isHidden":{"type":"boolean","description":"If true, the alias is hidden.\n"},"isWriteIndex":{"type":"boolean","description":"If true, the index is the write index for the alias.\n"},"name":{"type":"string","description":"Index alias name.\n"},"routing":{"type":"string","description":"Value used to route indexing and search operations to a specific shard.\n"},"searchRouting":{"type":"string","description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n"}},"type":"object","required":["indexRouting","isHidden","isWriteIndex","name","routing","searchRouting"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchInfoVersion:getElasticsearchInfoVersion":{"properties":{"buildDate":{"type":"string"},"buildFlavor":{"type":"string"},"buildHash":{"type":"string"},"buildSnapshot":{"type":"boolean"},"buildType":{"type":"string"},"luceneVersion":{"type":"string"},"minimumIndexCompatibilityVersion":{"type":"string"},"minimumWireCompatibilityVersion":{"type":"string"},"number":{"type":"string"}},"type":"object","required":["buildDate","buildFlavor","buildHash","buildSnapshot","buildType","luceneVersion","minimumIndexCompatibilityVersion","minimumWireCompatibilityVersion","number"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSecurityRoleApplication:getElasticsearchSecurityRoleApplication":{"properties":{"application":{"type":"string"},"privileges":{"type":"array","items":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"}}},"type":"object","required":["application","privileges","resources"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSecurityRoleElasticsearchConnection:getElasticsearchSecurityRoleElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleIndex:getElasticsearchSecurityRoleIndex":{"properties":{"allowRestrictedIndices":{"type":"boolean"},"fieldSecurities":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleIndexFieldSecurity:getElasticsearchSecurityRoleIndexFieldSecurity"}},"names":{"type":"array","items":{"type":"string"}},"privileges":{"type":"array","items":{"type":"string"}},"query":{"type":"string"}},"type":"object","required":["allowRestrictedIndices","fieldSecurities","names","privileges","query"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSecurityRoleIndexFieldSecurity:getElasticsearchSecurityRoleIndexFieldSecurity":{"properties":{"excepts":{"type":"array","items":{"type":"string"}},"grants":{"type":"array","items":{"type":"string"}}},"type":"object","required":["excepts","grants"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSecurityRoleMappingElasticsearchConnection:getElasticsearchSecurityRoleMappingElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleRemoteIndex:getElasticsearchSecurityRoleRemoteIndex":{"properties":{"clusters":{"type":"array","items":{"type":"string"}},"fieldSecurities":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleRemoteIndexFieldSecurity:getElasticsearchSecurityRoleRemoteIndexFieldSecurity"}},"names":{"type":"array","items":{"type":"string"}},"privileges":{"type":"array","items":{"type":"string"}},"query":{"type":"string"}},"type":"object","required":["clusters","fieldSecurities","names","privileges","query"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSecurityRoleRemoteIndexFieldSecurity:getElasticsearchSecurityRoleRemoteIndexFieldSecurity":{"properties":{"excepts":{"type":"array","items":{"type":"string"}},"grants":{"type":"array","items":{"type":"string"}}},"type":"object","required":["excepts","grants"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSecurityUserElasticsearchConnection:getElasticsearchSecurityUserElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryAzure:getElasticsearchSnapshotRepositoryAzure":{"properties":{"basePath":{"type":"string"},"chunkSize":{"type":"string"},"client":{"type":"string"},"compress":{"type":"boolean"},"container":{"type":"string"},"locationMode":{"type":"string"},"maxRestoreBytesPerSec":{"type":"string"},"maxSnapshotBytesPerSec":{"type":"string"},"readonly":{"type":"boolean"}},"type":"object","required":["basePath","chunkSize","client","compress","container","locationMode","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSnapshotRepositoryElasticsearchConnection:getElasticsearchSnapshotRepositoryElasticsearchConnection":{"properties":{"apiKey":{"type":"string","description":"API Key to use for authentication to Elasticsearch\n","secret":true},"bearerToken":{"type":"string","description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true},"caData":{"type":"string","description":"PEM-encoded custom Certificate Authority certificate\n"},"caFile":{"type":"string","description":"Path to a custom Certificate Authority certificate\n"},"certData":{"type":"string","description":"PEM encoded certificate for client auth\n"},"certFile":{"type":"string","description":"Path to a file containing the PEM encoded certificate for client auth\n"},"endpoints":{"type":"array","items":{"type":"string"},"secret":true},"esClientAuthentication":{"type":"string","description":"ES Client Authentication field to be used with the JWT token\n","secret":true},"headers":{"type":"object","additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true},"insecure":{"type":"boolean","description":"Disable TLS certificate validation\n"},"keyData":{"type":"string","description":"PEM encoded private key for client auth\n","secret":true},"keyFile":{"type":"string","description":"Path to a file containing the PEM encoded private key for client auth\n"},"password":{"type":"string","description":"Password to use for API authentication to Elasticsearch.\n","secret":true},"username":{"type":"string","description":"Username to use for API authentication to Elasticsearch.\n"}},"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryF:getElasticsearchSnapshotRepositoryF":{"properties":{"chunkSize":{"type":"string"},"compress":{"type":"boolean"},"location":{"type":"string"},"maxNumberOfSnapshots":{"type":"number"},"maxRestoreBytesPerSec":{"type":"string"},"maxSnapshotBytesPerSec":{"type":"string"},"readonly":{"type":"boolean"}},"type":"object","required":["chunkSize","compress","location","maxNumberOfSnapshots","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSnapshotRepositoryGc:getElasticsearchSnapshotRepositoryGc":{"properties":{"basePath":{"type":"string"},"bucket":{"type":"string"},"chunkSize":{"type":"string"},"client":{"type":"string"},"compress":{"type":"boolean"},"maxRestoreBytesPerSec":{"type":"string"},"maxSnapshotBytesPerSec":{"type":"string"},"readonly":{"type":"boolean"}},"type":"object","required":["basePath","bucket","chunkSize","client","compress","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSnapshotRepositoryHdf:getElasticsearchSnapshotRepositoryHdf":{"properties":{"chunkSize":{"type":"string"},"compress":{"type":"boolean"},"loadDefaults":{"type":"boolean"},"maxRestoreBytesPerSec":{"type":"string"},"maxSnapshotBytesPerSec":{"type":"string"},"path":{"type":"string"},"readonly":{"type":"boolean"},"uri":{"type":"string"}},"type":"object","required":["chunkSize","compress","loadDefaults","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","path","readonly","uri"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSnapshotRepositoryS3:getElasticsearchSnapshotRepositoryS3":{"properties":{"basePath":{"type":"string"},"bucket":{"type":"string"},"bufferSize":{"type":"string"},"cannedAcl":{"type":"string"},"chunkSize":{"type":"string"},"client":{"type":"string"},"compress":{"type":"boolean"},"maxRestoreBytesPerSec":{"type":"string"},"maxSnapshotBytesPerSec":{"type":"string"},"pathStyleAccess":{"type":"boolean"},"readonly":{"type":"boolean"},"serverSideEncryption":{"type":"boolean"},"storageClass":{"type":"string"}},"type":"object","required":["basePath","bucket","bufferSize","cannedAcl","chunkSize","client","compress","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","pathStyleAccess","readonly","serverSideEncryption","storageClass"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getElasticsearchSnapshotRepositoryUrl:getElasticsearchSnapshotRepositoryUrl":{"properties":{"chunkSize":{"type":"string"},"compress":{"type":"boolean"},"httpMaxRetries":{"type":"number"},"httpSocketTimeout":{"type":"string"},"maxNumberOfSnapshots":{"type":"number"},"maxRestoreBytesPerSec":{"type":"string"},"maxSnapshotBytesPerSec":{"type":"string"},"readonly":{"type":"boolean"},"url":{"type":"string"}},"type":"object","required":["chunkSize","compress","httpMaxRetries","httpSocketTimeout","maxNumberOfSnapshots","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly","url"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getFleetEnrollmentTokensToken:getFleetEnrollmentTokensToken":{"properties":{"active":{"type":"boolean","description":"Indicates if the enrollment token is active.\n"},"apiKey":{"type":"string","description":"The API key.\n","secret":true},"apiKeyId":{"type":"string","description":"The API key identifier.\n"},"createdAt":{"type":"string","description":"The time at which the enrollment token was created.\n"},"keyId":{"type":"string","description":"The unique identifier of the enrollment token.\n"},"name":{"type":"string","description":"The name of the enrollment token.\n"},"policyId":{"type":"string","description":"The identifier of the associated agent policy.\n"}},"type":"object","required":["active","apiKey","apiKeyId","createdAt","keyId","name","policyId"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getKibanaExportSavedObjectsObject:getKibanaExportSavedObjectsObject":{"properties":{"id":{"type":"string","description":"The ID of the saved object.\n"},"type":{"type":"string","description":"The type of the saved object.\n"}},"type":"object","required":["id","type"]},"elasticstack:index/getKibanaSecurityRoleElasticsearch:getKibanaSecurityRoleElasticsearch":{"properties":{"clusters":{"type":"array","items":{"type":"string"}},"indices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearchIndex:getKibanaSecurityRoleElasticsearchIndex"}},"remoteIndices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearchRemoteIndex:getKibanaSecurityRoleElasticsearchRemoteIndex"}},"runAs":{"type":"array","items":{"type":"string"}}},"type":"object","required":["clusters","indices","remoteIndices","runAs"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getKibanaSecurityRoleElasticsearchIndex:getKibanaSecurityRoleElasticsearchIndex":{"properties":{"fieldSecurities":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearchIndexFieldSecurity:getKibanaSecurityRoleElasticsearchIndexFieldSecurity"}},"names":{"type":"array","items":{"type":"string"}},"privileges":{"type":"array","items":{"type":"string"}},"query":{"type":"string"}},"type":"object","required":["fieldSecurities","names","privileges","query"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getKibanaSecurityRoleElasticsearchIndexFieldSecurity:getKibanaSecurityRoleElasticsearchIndexFieldSecurity":{"properties":{"excepts":{"type":"array","items":{"type":"string"}},"grants":{"type":"array","items":{"type":"string"}}},"type":"object","required":["excepts","grants"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getKibanaSecurityRoleElasticsearchRemoteIndex:getKibanaSecurityRoleElasticsearchRemoteIndex":{"properties":{"clusters":{"type":"array","items":{"type":"string"}},"fieldSecurities":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity:getKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity"}},"names":{"type":"array","items":{"type":"string"}},"privileges":{"type":"array","items":{"type":"string"}},"query":{"type":"string"}},"type":"object","required":["clusters","fieldSecurities","names","privileges","query"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity:getKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity":{"properties":{"excepts":{"type":"array","items":{"type":"string"}},"grants":{"type":"array","items":{"type":"string"}}},"type":"object","required":["excepts","grants"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getKibanaSecurityRoleKibana:getKibanaSecurityRoleKibana":{"properties":{"bases":{"type":"array","items":{"type":"string"}},"features":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleKibanaFeature:getKibanaSecurityRoleKibanaFeature"}},"spaces":{"type":"array","items":{"type":"string"}}},"type":"object","required":["bases","features","spaces"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getKibanaSecurityRoleKibanaFeature:getKibanaSecurityRoleKibanaFeature":{"properties":{"name":{"type":"string"},"privileges":{"type":"array","items":{"type":"string"}}},"type":"object","required":["name","privileges"],"language":{"nodejs":{"requiredInputs":[]}}},"elasticstack:index/getKibanaSpacesSpace:getKibanaSpacesSpace":{"properties":{"color":{"type":"string","description":"The hexadecimal color code used in the space avatar. By default, the color is automatically generated from the space name.\n"},"description":{"type":"string","description":"The description for the space.\n"},"disabledFeatures":{"type":"array","items":{"type":"string"},"description":"The list of disabled features for the space. To get a list of available feature IDs, use the Features API (https://www.elastic.co/guide/en/kibana/master/features-api-get.html).\n"},"id":{"type":"string","description":"Internal identifier of the resource.\n"},"imageUrl":{"type":"string","description":"The data-URL encoded image to display in the space avatar.\n"},"initials":{"type":"string","description":"The initials shown in the space avatar. By default, the initials are automatically generated from the space name. Initials must be 1 or 2 characters.\n"},"name":{"type":"string","description":"The display name for the space.\n"},"solution":{"type":"string","description":"The solution view for the space. Valid options are \u003cspan pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\"\u003e`security`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`oblt`\" pulumi-lang-dotnet=\"`Oblt`\" pulumi-lang-go=\"`oblt`\" pulumi-lang-python=\"`oblt`\" pulumi-lang-yaml=\"`oblt`\" pulumi-lang-java=\"`oblt`\"\u003e`oblt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`classic`\" pulumi-lang-dotnet=\"`Classic`\" pulumi-lang-go=\"`classic`\" pulumi-lang-python=\"`classic`\" pulumi-lang-yaml=\"`classic`\" pulumi-lang-java=\"`classic`\"\u003e`classic`\u003c/span\u003e.\n"}},"type":"object","required":["color","disabledFeatures","id","initials","name","solution"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the elasticstack package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","type":"object","inputProperties":{"elasticsearch":{"$ref":"#/types/elasticstack:index%2FProviderElasticsearch:ProviderElasticsearch","description":"Elasticsearch connection configuration block."},"fleet":{"$ref":"#/types/elasticstack:index%2FProviderFleet:ProviderFleet","description":"Fleet connection configuration block."},"kibana":{"$ref":"#/types/elasticstack:index%2FProviderKibana:ProviderKibana","description":"Kibana connection configuration block."}},"methods":{"terraformConfig":"pulumi:providers:elasticstack/terraformConfig"}},"resources":{"elasticstack:index/apmAgentConfiguration:ApmAgentConfiguration":{"description":"Creates or updates an APM agent configuration. See https://www.elastic.co/docs/solutions/observability/apm/apm-agent-central-configuration.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst testConfig = new elasticstack.ApmAgentConfiguration(\"test_config\", {\n    serviceName: \"my-service\",\n    serviceEnvironment: \"production\",\n    agentName: \"go\",\n    settings: {\n        transaction_sample_rate: \"0.5\",\n        capture_body: \"all\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntest_config = elasticstack.ApmAgentConfiguration(\"test_config\",\n    service_name=\"my-service\",\n    service_environment=\"production\",\n    agent_name=\"go\",\n    settings={\n        \"transaction_sample_rate\": \"0.5\",\n        \"capture_body\": \"all\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testConfig = new Elasticstack.ApmAgentConfiguration(\"test_config\", new()\n    {\n        ServiceName = \"my-service\",\n        ServiceEnvironment = \"production\",\n        AgentName = \"go\",\n        Settings = \n        {\n            { \"transaction_sample_rate\", \"0.5\" },\n            { \"capture_body\", \"all\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewApmAgentConfiguration(ctx, \"test_config\", \u0026elasticstack.ApmAgentConfigurationArgs{\n\t\t\tServiceName:        pulumi.String(\"my-service\"),\n\t\t\tServiceEnvironment: pulumi.String(\"production\"),\n\t\t\tAgentName:          pulumi.String(\"go\"),\n\t\t\tSettings: pulumi.StringMap{\n\t\t\t\t\"transaction_sample_rate\": pulumi.String(\"0.5\"),\n\t\t\t\t\"capture_body\":            pulumi.String(\"all\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ApmAgentConfiguration;\nimport com.pulumi.elasticstack.ApmAgentConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testConfig = new ApmAgentConfiguration(\"testConfig\", ApmAgentConfigurationArgs.builder()\n            .serviceName(\"my-service\")\n            .serviceEnvironment(\"production\")\n            .agentName(\"go\")\n            .settings(Map.ofEntries(\n                Map.entry(\"transaction_sample_rate\", \"0.5\"),\n                Map.entry(\"capture_body\", \"all\")\n            ))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testConfig:\n    type: elasticstack:ApmAgentConfiguration\n    name: test_config\n    properties:\n      serviceName: my-service\n      serviceEnvironment: production\n      agentName: go\n      settings:\n        transaction_sample_rate: '0.5'\n        capture_body: all\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/apmAgentConfiguration:ApmAgentConfiguration test_configuration my-service:production\n```\n\n","properties":{"agentName":{"type":"string","description":"The agent name is used by the UI to determine which settings to display.\n"},"serviceEnvironment":{"type":"string","description":"The environment of the service.\n"},"serviceName":{"type":"string","description":"The name of the service.\n"},"settings":{"type":"object","additionalProperties":{"type":"string"},"description":"Agent configuration settings.\n"}},"type":"object","required":["serviceName","settings"],"inputProperties":{"agentName":{"type":"string","description":"The agent name is used by the UI to determine which settings to display.\n"},"serviceEnvironment":{"type":"string","description":"The environment of the service.\n"},"serviceName":{"type":"string","description":"The name of the service.\n"},"settings":{"type":"object","additionalProperties":{"type":"string"},"description":"Agent configuration settings.\n"}},"requiredInputs":["serviceName","settings"],"stateInputs":{"description":"Input properties used for looking up and filtering ApmAgentConfiguration resources.\n","properties":{"agentName":{"type":"string","description":"The agent name is used by the UI to determine which settings to display.\n"},"serviceEnvironment":{"type":"string","description":"The environment of the service.\n"},"serviceName":{"type":"string","description":"The name of the service.\n"},"settings":{"type":"object","additionalProperties":{"type":"string"},"description":"Agent configuration settings.\n"}},"type":"object"}},"elasticstack:index/elasticsearchClusterSettings:ElasticsearchClusterSettings":{"description":"Updates cluster-wide settings. If the Elasticsearch security features are enabled, you must have the manage cluster privilege to use this API. See the [cluster settings documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myClusterSettings = new elasticstack.ElasticsearchClusterSettings(\"my_cluster_settings\", {\n    persistent: {\n        settings: [\n            {\n                name: \"indices.lifecycle.poll_interval\",\n                value: \"10m\",\n            },\n            {\n                name: \"indices.recovery.max_bytes_per_sec\",\n                value: \"50mb\",\n            },\n            {\n                name: \"indices.breaker.total.limit\",\n                value: \"65%\",\n            },\n            {\n                name: \"xpack.security.audit.logfile.events.include\",\n                valueLists: [\n                    \"ACCESS_DENIED\",\n                    \"ACCESS_GRANTED\",\n                ],\n            },\n        ],\n    },\n    transient: {\n        settings: [{\n            name: \"indices.breaker.total.limit\",\n            value: \"60%\",\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmy_cluster_settings = elasticstack.ElasticsearchClusterSettings(\"my_cluster_settings\",\n    persistent={\n        \"settings\": [\n            {\n                \"name\": \"indices.lifecycle.poll_interval\",\n                \"value\": \"10m\",\n            },\n            {\n                \"name\": \"indices.recovery.max_bytes_per_sec\",\n                \"value\": \"50mb\",\n            },\n            {\n                \"name\": \"indices.breaker.total.limit\",\n                \"value\": \"65%\",\n            },\n            {\n                \"name\": \"xpack.security.audit.logfile.events.include\",\n                \"value_lists\": [\n                    \"ACCESS_DENIED\",\n                    \"ACCESS_GRANTED\",\n                ],\n            },\n        ],\n    },\n    transient={\n        \"settings\": [{\n            \"name\": \"indices.breaker.total.limit\",\n            \"value\": \"60%\",\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myClusterSettings = new Elasticstack.ElasticsearchClusterSettings(\"my_cluster_settings\", new()\n    {\n        Persistent = new Elasticstack.Inputs.ElasticsearchClusterSettingsPersistentArgs\n        {\n            Settings = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchClusterSettingsPersistentSettingArgs\n                {\n                    Name = \"indices.lifecycle.poll_interval\",\n                    Value = \"10m\",\n                },\n                new Elasticstack.Inputs.ElasticsearchClusterSettingsPersistentSettingArgs\n                {\n                    Name = \"indices.recovery.max_bytes_per_sec\",\n                    Value = \"50mb\",\n                },\n                new Elasticstack.Inputs.ElasticsearchClusterSettingsPersistentSettingArgs\n                {\n                    Name = \"indices.breaker.total.limit\",\n                    Value = \"65%\",\n                },\n                new Elasticstack.Inputs.ElasticsearchClusterSettingsPersistentSettingArgs\n                {\n                    Name = \"xpack.security.audit.logfile.events.include\",\n                    ValueLists = new[]\n                    {\n                        \"ACCESS_DENIED\",\n                        \"ACCESS_GRANTED\",\n                    },\n                },\n            },\n        },\n        Transient = new Elasticstack.Inputs.ElasticsearchClusterSettingsTransientArgs\n        {\n            Settings = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchClusterSettingsTransientSettingArgs\n                {\n                    Name = \"indices.breaker.total.limit\",\n                    Value = \"60%\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewElasticsearchClusterSettings(ctx, \"my_cluster_settings\", \u0026elasticstack.ElasticsearchClusterSettingsArgs{\n\t\t\tPersistent: \u0026elasticstack.ElasticsearchClusterSettingsPersistentArgs{\n\t\t\t\tSettings: elasticstack.ElasticsearchClusterSettingsPersistentSettingArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchClusterSettingsPersistentSettingArgs{\n\t\t\t\t\t\tName:  pulumi.String(\"indices.lifecycle.poll_interval\"),\n\t\t\t\t\t\tValue: pulumi.String(\"10m\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026elasticstack.ElasticsearchClusterSettingsPersistentSettingArgs{\n\t\t\t\t\t\tName:  pulumi.String(\"indices.recovery.max_bytes_per_sec\"),\n\t\t\t\t\t\tValue: pulumi.String(\"50mb\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026elasticstack.ElasticsearchClusterSettingsPersistentSettingArgs{\n\t\t\t\t\t\tName:  pulumi.String(\"indices.breaker.total.limit\"),\n\t\t\t\t\t\tValue: pulumi.String(\"65%\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026elasticstack.ElasticsearchClusterSettingsPersistentSettingArgs{\n\t\t\t\t\t\tName: pulumi.String(\"xpack.security.audit.logfile.events.include\"),\n\t\t\t\t\t\tValueLists: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"ACCESS_DENIED\"),\n\t\t\t\t\t\t\tpulumi.String(\"ACCESS_GRANTED\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTransient: \u0026elasticstack.ElasticsearchClusterSettingsTransientArgs{\n\t\t\t\tSettings: elasticstack.ElasticsearchClusterSettingsTransientSettingArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchClusterSettingsTransientSettingArgs{\n\t\t\t\t\t\tName:  pulumi.String(\"indices.breaker.total.limit\"),\n\t\t\t\t\t\tValue: pulumi.String(\"60%\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchClusterSettings;\nimport com.pulumi.elasticstack.ElasticsearchClusterSettingsArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchClusterSettingsPersistentArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchClusterSettingsTransientArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myClusterSettings = new ElasticsearchClusterSettings(\"myClusterSettings\", ElasticsearchClusterSettingsArgs.builder()\n            .persistent(ElasticsearchClusterSettingsPersistentArgs.builder()\n                .settings(                \n                    ElasticsearchClusterSettingsPersistentSettingArgs.builder()\n                        .name(\"indices.lifecycle.poll_interval\")\n                        .value(\"10m\")\n                        .build(),\n                    ElasticsearchClusterSettingsPersistentSettingArgs.builder()\n                        .name(\"indices.recovery.max_bytes_per_sec\")\n                        .value(\"50mb\")\n                        .build(),\n                    ElasticsearchClusterSettingsPersistentSettingArgs.builder()\n                        .name(\"indices.breaker.total.limit\")\n                        .value(\"65%\")\n                        .build(),\n                    ElasticsearchClusterSettingsPersistentSettingArgs.builder()\n                        .name(\"xpack.security.audit.logfile.events.include\")\n                        .valueLists(                        \n                            \"ACCESS_DENIED\",\n                            \"ACCESS_GRANTED\")\n                        .build())\n                .build())\n            .transient_(ElasticsearchClusterSettingsTransientArgs.builder()\n                .settings(ElasticsearchClusterSettingsTransientSettingArgs.builder()\n                    .name(\"indices.breaker.total.limit\")\n                    .value(\"60%\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myClusterSettings:\n    type: elasticstack:ElasticsearchClusterSettings\n    name: my_cluster_settings\n    properties:\n      persistent:\n        settings:\n          - name: indices.lifecycle.poll_interval\n            value: 10m\n          - name: indices.recovery.max_bytes_per_sec\n            value: 50mb\n          - name: indices.breaker.total.limit\n            value: 65%\n          - name: xpack.security.audit.logfile.events.include\n            valueLists:\n              - ACCESS_DENIED\n              - ACCESS_GRANTED\n      transient:\n        settings:\n          - name: indices.breaker.total.limit\n            value: 60%\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsElasticsearchConnection:ElasticsearchClusterSettingsElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"persistent":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsPersistent:ElasticsearchClusterSettingsPersistent","description":"Settings will apply across restarts.\n"},"transient":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsTransient:ElasticsearchClusterSettingsTransient","description":"Settings do not survive a full cluster restart.\n"}},"type":"object","inputProperties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsElasticsearchConnection:ElasticsearchClusterSettingsElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"persistent":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsPersistent:ElasticsearchClusterSettingsPersistent","description":"Settings will apply across restarts.\n"},"transient":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsTransient:ElasticsearchClusterSettingsTransient","description":"Settings do not survive a full cluster restart.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchClusterSettings resources.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsElasticsearchConnection:ElasticsearchClusterSettingsElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"persistent":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsPersistent:ElasticsearchClusterSettingsPersistent","description":"Settings will apply across restarts.\n"},"transient":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsTransient:ElasticsearchClusterSettingsTransient","description":"Settings do not survive a full cluster restart.\n"}},"type":"object"}},"elasticstack:index/elasticsearchComponentTemplate:ElasticsearchComponentTemplate":{"description":"Creates or updates a component template. Component templates are building blocks for constructing index templates that specify index mappings, settings, and aliases. See the [component template documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-component-template.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myTemplate = new elasticstack.ElasticsearchComponentTemplate(\"my_template\", {\n    name: \"my_template\",\n    template: {\n        aliases: [{\n            name: \"my_template_test\",\n        }],\n        settings: JSON.stringify({\n            number_of_shards: \"3\",\n        }),\n    },\n});\nconst myTemplateElasticsearchIndexTemplate = new elasticstack.ElasticsearchIndexTemplate(\"my_template\", {\n    name: \"my_data_stream\",\n    indexPatterns: [\"stream*\"],\n    composedOfs: [myTemplate.name],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_template = elasticstack.ElasticsearchComponentTemplate(\"my_template\",\n    name=\"my_template\",\n    template={\n        \"aliases\": [{\n            \"name\": \"my_template_test\",\n        }],\n        \"settings\": json.dumps({\n            \"number_of_shards\": \"3\",\n        }),\n    })\nmy_template_elasticsearch_index_template = elasticstack.ElasticsearchIndexTemplate(\"my_template\",\n    name=\"my_data_stream\",\n    index_patterns=[\"stream*\"],\n    composed_ofs=[my_template.name])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myTemplate = new Elasticstack.ElasticsearchComponentTemplate(\"my_template\", new()\n    {\n        Name = \"my_template\",\n        Template = new Elasticstack.Inputs.ElasticsearchComponentTemplateTemplateArgs\n        {\n            Aliases = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchComponentTemplateTemplateAliasArgs\n                {\n                    Name = \"my_template_test\",\n                },\n            },\n            Settings = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n            {\n                [\"number_of_shards\"] = \"3\",\n            }),\n        },\n    });\n\n    var myTemplateElasticsearchIndexTemplate = new Elasticstack.ElasticsearchIndexTemplate(\"my_template\", new()\n    {\n        Name = \"my_data_stream\",\n        IndexPatterns = new[]\n        {\n            \"stream*\",\n        },\n        ComposedOfs = new[]\n        {\n            myTemplate.Name,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"number_of_shards\": \"3\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tmyTemplate, err := elasticstack.NewElasticsearchComponentTemplate(ctx, \"my_template\", \u0026elasticstack.ElasticsearchComponentTemplateArgs{\n\t\t\tName: pulumi.String(\"my_template\"),\n\t\t\tTemplate: \u0026elasticstack.ElasticsearchComponentTemplateTemplateArgs{\n\t\t\t\tAliases: elasticstack.ElasticsearchComponentTemplateTemplateAliasArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchComponentTemplateTemplateAliasArgs{\n\t\t\t\t\t\tName: pulumi.String(\"my_template_test\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSettings: pulumi.String(json0),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIndexTemplate(ctx, \"my_template\", \u0026elasticstack.ElasticsearchIndexTemplateArgs{\n\t\t\tName: pulumi.String(\"my_data_stream\"),\n\t\t\tIndexPatterns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"stream*\"),\n\t\t\t},\n\t\t\tComposedOfs: pulumi.StringArray{\n\t\t\t\tmyTemplate.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchComponentTemplate;\nimport com.pulumi.elasticstack.ElasticsearchComponentTemplateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchComponentTemplateTemplateArgs;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplate;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplateArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myTemplate = new ElasticsearchComponentTemplate(\"myTemplate\", ElasticsearchComponentTemplateArgs.builder()\n            .name(\"my_template\")\n            .template(ElasticsearchComponentTemplateTemplateArgs.builder()\n                .aliases(ElasticsearchComponentTemplateTemplateAliasArgs.builder()\n                    .name(\"my_template_test\")\n                    .build())\n                .settings(serializeJson(\n                    jsonObject(\n                        jsonProperty(\"number_of_shards\", \"3\")\n                    )))\n                .build())\n            .build());\n\n        var myTemplateElasticsearchIndexTemplate = new ElasticsearchIndexTemplate(\"myTemplateElasticsearchIndexTemplate\", ElasticsearchIndexTemplateArgs.builder()\n            .name(\"my_data_stream\")\n            .indexPatterns(\"stream*\")\n            .composedOfs(myTemplate.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myTemplate:\n    type: elasticstack:ElasticsearchComponentTemplate\n    name: my_template\n    properties:\n      name: my_template\n      template:\n        aliases:\n          - name: my_template_test\n        settings:\n          fn::toJSON:\n            number_of_shards: '3'\n  myTemplateElasticsearchIndexTemplate:\n    type: elasticstack:ElasticsearchIndexTemplate\n    name: my_template\n    properties:\n      name: my_data_stream\n      indexPatterns:\n        - stream*\n      composedOfs:\n        - ${myTemplate.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchComponentTemplate:ElasticsearchComponentTemplate my_template \u003ccluster_uuid\u003e/\u003ccomponent_name\u003e\n```\n\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateElasticsearchConnection:ElasticsearchComponentTemplateElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"metadata":{"type":"string","description":"Optional user metadata about the component template.\n"},"name":{"type":"string","description":"Name of the component template to create.\n"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplate:ElasticsearchComponentTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, or settings configuration.\n"},"version":{"type":"number","description":"Version number used to manage component templates externally.\n"}},"type":"object","required":["name","template"],"inputProperties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateElasticsearchConnection:ElasticsearchComponentTemplateElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"metadata":{"type":"string","description":"Optional user metadata about the component template.\n"},"name":{"type":"string","description":"Name of the component template to create.\n"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplate:ElasticsearchComponentTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, or settings configuration.\n"},"version":{"type":"number","description":"Version number used to manage component templates externally.\n"}},"requiredInputs":["template"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchComponentTemplate resources.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateElasticsearchConnection:ElasticsearchComponentTemplateElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"metadata":{"type":"string","description":"Optional user metadata about the component template.\n"},"name":{"type":"string","description":"Name of the component template to create.\n"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplate:ElasticsearchComponentTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, or settings configuration.\n"},"version":{"type":"number","description":"Version number used to manage component templates externally.\n"}},"type":"object"}},"elasticstack:index/elasticsearchDataStream:ElasticsearchDataStream":{"description":"Managing Elasticsearch data streams, see: https://www.elastic.co/guide/en/elasticsearch/reference/current/data-stream-apis.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Create an ILM policy for our data stream\nconst myIlm = new elasticstack.ElasticsearchIndexLifecycle(\"my_ilm\", {\n    name: \"my_ilm_policy\",\n    hot: {\n        minAge: \"1h\",\n        setPriority: {\n            priority: 10,\n        },\n        rollover: {\n            maxAge: \"1d\",\n        },\n        readonly: {},\n    },\n    \"delete\": {\n        minAge: \"2d\",\n        \"delete\": {},\n    },\n});\n// First we must have a index template created\nconst myDataStreamTemplate = new elasticstack.ElasticsearchIndexTemplate(\"my_data_stream_template\", {\n    name: \"my_data_stream\",\n    indexPatterns: [\"my-stream*\"],\n    template: {\n        settings: pulumi.jsonStringify({\n            \"lifecycle.name\": myIlm.name,\n        }),\n    },\n    dataStream: {},\n});\n// and now we can create data stream based on the index template\nconst myDataStream = new elasticstack.ElasticsearchDataStream(\"my_data_stream\", {name: \"my-stream\"}, {\n    dependsOn: [myDataStreamTemplate],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# Create an ILM policy for our data stream\nmy_ilm = elasticstack.ElasticsearchIndexLifecycle(\"my_ilm\",\n    name=\"my_ilm_policy\",\n    hot={\n        \"min_age\": \"1h\",\n        \"set_priority\": {\n            \"priority\": 10,\n        },\n        \"rollover\": {\n            \"max_age\": \"1d\",\n        },\n        \"readonly\": {},\n    },\n    delete={\n        \"min_age\": \"2d\",\n        \"delete\": {},\n    })\n# First we must have a index template created\nmy_data_stream_template = elasticstack.ElasticsearchIndexTemplate(\"my_data_stream_template\",\n    name=\"my_data_stream\",\n    index_patterns=[\"my-stream*\"],\n    template={\n        \"settings\": pulumi.Output.json_dumps({\n            \"lifecycle.name\": my_ilm.name,\n        }),\n    },\n    data_stream={})\n# and now we can create data stream based on the index template\nmy_data_stream = elasticstack.ElasticsearchDataStream(\"my_data_stream\", name=\"my-stream\",\nopts = pulumi.ResourceOptions(depends_on=[my_data_stream_template]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create an ILM policy for our data stream\n    var myIlm = new Elasticstack.ElasticsearchIndexLifecycle(\"my_ilm\", new()\n    {\n        Name = \"my_ilm_policy\",\n        Hot = new Elasticstack.Inputs.ElasticsearchIndexLifecycleHotArgs\n        {\n            MinAge = \"1h\",\n            SetPriority = new Elasticstack.Inputs.ElasticsearchIndexLifecycleHotSetPriorityArgs\n            {\n                Priority = 10,\n            },\n            Rollover = new Elasticstack.Inputs.ElasticsearchIndexLifecycleHotRolloverArgs\n            {\n                MaxAge = \"1d\",\n            },\n            Readonly = null,\n        },\n        Delete = new Elasticstack.Inputs.ElasticsearchIndexLifecycleDeleteArgs\n        {\n            MinAge = \"2d\",\n            Delete = null,\n        },\n    });\n\n    // First we must have a index template created\n    var myDataStreamTemplate = new Elasticstack.ElasticsearchIndexTemplate(\"my_data_stream_template\", new()\n    {\n        Name = \"my_data_stream\",\n        IndexPatterns = new[]\n        {\n            \"my-stream*\",\n        },\n        Template = new Elasticstack.Inputs.ElasticsearchIndexTemplateTemplateArgs\n        {\n            Settings = Output.JsonSerialize(Output.Create(new Dictionary\u003cstring, object?\u003e\n            {\n                [\"lifecycle.name\"] = myIlm.Name,\n            })),\n        },\n        DataStream = null,\n    });\n\n    // and now we can create data stream based on the index template\n    var myDataStream = new Elasticstack.ElasticsearchDataStream(\"my_data_stream\", new()\n    {\n        Name = \"my-stream\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            myDataStreamTemplate,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create an ILM policy for our data stream\n\t\tmyIlm, err := elasticstack.NewElasticsearchIndexLifecycle(ctx, \"my_ilm\", \u0026elasticstack.ElasticsearchIndexLifecycleArgs{\n\t\t\tName: pulumi.String(\"my_ilm_policy\"),\n\t\t\tHot: \u0026elasticstack.ElasticsearchIndexLifecycleHotArgs{\n\t\t\t\tMinAge: pulumi.String(\"1h\"),\n\t\t\t\tSetPriority: \u0026elasticstack.ElasticsearchIndexLifecycleHotSetPriorityArgs{\n\t\t\t\t\tPriority: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t\tRollover: \u0026elasticstack.ElasticsearchIndexLifecycleHotRolloverArgs{\n\t\t\t\t\tMaxAge: pulumi.String(\"1d\"),\n\t\t\t\t},\n\t\t\t\tReadonly: \u0026elasticstack.ElasticsearchIndexLifecycleHotReadonlyArgs{},\n\t\t\t},\n\t\t\tDelete: \u0026elasticstack.ElasticsearchIndexLifecycleDeleteArgs{\n\t\t\t\tMinAge: pulumi.String(\"2d\"),\n\t\t\t\tDelete: \u0026elasticstack.ElasticsearchIndexLifecycleDeleteDeleteArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// First we must have a index template created\n\t\tmyDataStreamTemplate, err := elasticstack.NewElasticsearchIndexTemplate(ctx, \"my_data_stream_template\", \u0026elasticstack.ElasticsearchIndexTemplateArgs{\n\t\t\tName: pulumi.String(\"my_data_stream\"),\n\t\t\tIndexPatterns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my-stream*\"),\n\t\t\t},\n\t\t\tTemplate: \u0026elasticstack.ElasticsearchIndexTemplateTemplateArgs{\n\t\t\t\tSettings: myIlm.Name.ApplyT(func(name string) (pulumi.String, error) {\n\t\t\t\t\tvar _zero pulumi.String\n\t\t\t\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\t\"lifecycle.name\": name,\n\t\t\t\t\t})\n\t\t\t\t\tif err != nil {\n\t\t\t\t\t\treturn _zero, err\n\t\t\t\t\t}\n\t\t\t\t\tjson0 := string(tmpJSON0)\n\t\t\t\t\treturn pulumi.String(json0), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tDataStream: \u0026elasticstack.ElasticsearchIndexTemplateDataStreamArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// and now we can create data stream based on the index template\n\t\t_, err = elasticstack.NewElasticsearchDataStream(ctx, \"my_data_stream\", \u0026elasticstack.ElasticsearchDataStreamArgs{\n\t\t\tName: pulumi.String(\"my-stream\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmyDataStreamTemplate,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIndexLifecycle;\nimport com.pulumi.elasticstack.ElasticsearchIndexLifecycleArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleHotArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleHotSetPriorityArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleHotRolloverArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleHotReadonlyArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleDeleteArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleDeleteDeleteArgs;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplate;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexTemplateTemplateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexTemplateDataStreamArgs;\nimport com.pulumi.elasticstack.ElasticsearchDataStream;\nimport com.pulumi.elasticstack.ElasticsearchDataStreamArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create an ILM policy for our data stream\n        var myIlm = new ElasticsearchIndexLifecycle(\"myIlm\", ElasticsearchIndexLifecycleArgs.builder()\n            .name(\"my_ilm_policy\")\n            .hot(ElasticsearchIndexLifecycleHotArgs.builder()\n                .minAge(\"1h\")\n                .setPriority(ElasticsearchIndexLifecycleHotSetPriorityArgs.builder()\n                    .priority(10.0)\n                    .build())\n                .rollover(ElasticsearchIndexLifecycleHotRolloverArgs.builder()\n                    .maxAge(\"1d\")\n                    .build())\n                .readonly(ElasticsearchIndexLifecycleHotReadonlyArgs.builder()\n                    .build())\n                .build())\n            .delete(ElasticsearchIndexLifecycleDeleteArgs.builder()\n                .minAge(\"2d\")\n                .delete(ElasticsearchIndexLifecycleDeleteDeleteArgs.builder()\n                    .build())\n                .build())\n            .build());\n\n        // First we must have a index template created\n        var myDataStreamTemplate = new ElasticsearchIndexTemplate(\"myDataStreamTemplate\", ElasticsearchIndexTemplateArgs.builder()\n            .name(\"my_data_stream\")\n            .indexPatterns(\"my-stream*\")\n            .template(ElasticsearchIndexTemplateTemplateArgs.builder()\n                .settings(myIlm.name().applyValue(_name -\u003e serializeJson(\n                    jsonObject(\n                        jsonProperty(\"lifecycle.name\", _name)\n                    ))))\n                .build())\n            .dataStream(ElasticsearchIndexTemplateDataStreamArgs.builder()\n                .build())\n            .build());\n\n        // and now we can create data stream based on the index template\n        var myDataStream = new ElasticsearchDataStream(\"myDataStream\", ElasticsearchDataStreamArgs.builder()\n            .name(\"my-stream\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(myDataStreamTemplate)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create an ILM policy for our data stream\n  myIlm:\n    type: elasticstack:ElasticsearchIndexLifecycle\n    name: my_ilm\n    properties:\n      name: my_ilm_policy\n      hot:\n        minAge: 1h\n        setPriority:\n          priority: 10\n        rollover:\n          maxAge: 1d\n        readonly: {}\n      delete:\n        minAge: 2d\n        delete: {}\n  # First we must have a index template created\n  myDataStreamTemplate:\n    type: elasticstack:ElasticsearchIndexTemplate\n    name: my_data_stream_template\n    properties:\n      name: my_data_stream\n      indexPatterns:\n        - my-stream*\n      template:\n        settings:\n          fn::toJSON:\n            lifecycle.name: ${myIlm.name}\n      dataStream: {}\n  # and now we can create data stream based on the index template\n  myDataStream:\n    type: elasticstack:ElasticsearchDataStream\n    name: my_data_stream\n    properties:\n      name: my-stream\n    options:\n      dependsOn:\n        - ${myDataStreamTemplate}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchDataStream:ElasticsearchDataStream my_data_stream \u003ccluster_uuid\u003e/\u003cdata_stream_name\u003e\n```\n\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamElasticsearchConnection:ElasticsearchDataStreamElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"generation":{"type":"number","description":"Current generation for the data stream.\n"},"hidden":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the data stream is hidden.\n"},"ilmPolicy":{"type":"string","description":"Name of the current ILM lifecycle policy in the stream’s matching index template.\n"},"indices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamIndex:ElasticsearchDataStreamIndex"},"description":"Array of objects containing information about the data stream’s backing indices. The last item in this array contains information about the stream’s current write index.\n"},"metadata":{"type":"string","description":"Custom metadata for the stream, copied from the _meta object of the stream’s matching index template.\n"},"name":{"type":"string","description":"Name of the data stream to create.\n"},"replicated":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the data stream is created and managed by cross-cluster replication and the local cluster can not write into this data stream or change its mappings.\n"},"status":{"type":"string","description":"Health status of the data stream.\n"},"system":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the data stream is created and managed by an Elastic stack component and cannot be modified through normal user interaction.\n"},"template":{"type":"string","description":"Name of the index template used to create the data stream’s backing indices.\n"},"timestampField":{"type":"string","description":"Contains information about the data stream’s @timestamp field.\n"}},"type":"object","required":["generation","hidden","ilmPolicy","indices","metadata","name","replicated","status","system","template","timestampField"],"inputProperties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamElasticsearchConnection:ElasticsearchDataStreamElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"name":{"type":"string","description":"Name of the data stream to create.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchDataStream resources.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamElasticsearchConnection:ElasticsearchDataStreamElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"generation":{"type":"number","description":"Current generation for the data stream.\n"},"hidden":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the data stream is hidden.\n"},"ilmPolicy":{"type":"string","description":"Name of the current ILM lifecycle policy in the stream’s matching index template.\n"},"indices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamIndex:ElasticsearchDataStreamIndex"},"description":"Array of objects containing information about the data stream’s backing indices. The last item in this array contains information about the stream’s current write index.\n"},"metadata":{"type":"string","description":"Custom metadata for the stream, copied from the _meta object of the stream’s matching index template.\n"},"name":{"type":"string","description":"Name of the data stream to create.\n"},"replicated":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the data stream is created and managed by cross-cluster replication and the local cluster can not write into this data stream or change its mappings.\n"},"status":{"type":"string","description":"Health status of the data stream.\n"},"system":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the data stream is created and managed by an Elastic stack component and cannot be modified through normal user interaction.\n"},"template":{"type":"string","description":"Name of the index template used to create the data stream’s backing indices.\n"},"timestampField":{"type":"string","description":"Contains information about the data stream’s @timestamp field.\n"}},"type":"object"}},"elasticstack:index/elasticsearchDataStreamLifecycle:ElasticsearchDataStreamLifecycle":{"description":"Configures the data stream lifecycle for the targeted data streams, see: https://www.elastic.co/guide/en/elasticsearch/reference/current/data-stream-apis.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// First we must have a index template created\nconst myDataStreamTemplate = new elasticstack.ElasticsearchIndexTemplate(\"my_data_stream_template\", {\n    name: \"my_data_stream\",\n    indexPatterns: [\"my-stream*\"],\n    dataStream: {},\n});\n// and now we can create data stream based on the index template\nconst myDataStream = new elasticstack.ElasticsearchDataStream(\"my_data_stream\", {name: \"my-stream\"}, {\n    dependsOn: [myDataStreamTemplate],\n});\n// finally we can manage lifecycle of data stream\nconst myDataStreamLifecycle = new elasticstack.ElasticsearchDataStreamLifecycle(\"my_data_stream_lifecycle\", {\n    name: \"my-stream\",\n    dataRetention: \"3d\",\n}, {\n    dependsOn: [myDataStream],\n});\n// or you can use wildcards to manage multiple lifecycles at once\nconst myDataStreamLifecycleMultiple = new elasticstack.ElasticsearchDataStreamLifecycle(\"my_data_stream_lifecycle_multiple\", {\n    name: \"stream-*\",\n    dataRetention: \"3d\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# First we must have a index template created\nmy_data_stream_template = elasticstack.ElasticsearchIndexTemplate(\"my_data_stream_template\",\n    name=\"my_data_stream\",\n    index_patterns=[\"my-stream*\"],\n    data_stream={})\n# and now we can create data stream based on the index template\nmy_data_stream = elasticstack.ElasticsearchDataStream(\"my_data_stream\", name=\"my-stream\",\nopts = pulumi.ResourceOptions(depends_on=[my_data_stream_template]))\n# finally we can manage lifecycle of data stream\nmy_data_stream_lifecycle = elasticstack.ElasticsearchDataStreamLifecycle(\"my_data_stream_lifecycle\",\n    name=\"my-stream\",\n    data_retention=\"3d\",\n    opts = pulumi.ResourceOptions(depends_on=[my_data_stream]))\n# or you can use wildcards to manage multiple lifecycles at once\nmy_data_stream_lifecycle_multiple = elasticstack.ElasticsearchDataStreamLifecycle(\"my_data_stream_lifecycle_multiple\",\n    name=\"stream-*\",\n    data_retention=\"3d\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // First we must have a index template created\n    var myDataStreamTemplate = new Elasticstack.ElasticsearchIndexTemplate(\"my_data_stream_template\", new()\n    {\n        Name = \"my_data_stream\",\n        IndexPatterns = new[]\n        {\n            \"my-stream*\",\n        },\n        DataStream = null,\n    });\n\n    // and now we can create data stream based on the index template\n    var myDataStream = new Elasticstack.ElasticsearchDataStream(\"my_data_stream\", new()\n    {\n        Name = \"my-stream\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            myDataStreamTemplate,\n        },\n    });\n\n    // finally we can manage lifecycle of data stream\n    var myDataStreamLifecycle = new Elasticstack.ElasticsearchDataStreamLifecycle(\"my_data_stream_lifecycle\", new()\n    {\n        Name = \"my-stream\",\n        DataRetention = \"3d\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            myDataStream,\n        },\n    });\n\n    // or you can use wildcards to manage multiple lifecycles at once\n    var myDataStreamLifecycleMultiple = new Elasticstack.ElasticsearchDataStreamLifecycle(\"my_data_stream_lifecycle_multiple\", new()\n    {\n        Name = \"stream-*\",\n        DataRetention = \"3d\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// First we must have a index template created\n\t\tmyDataStreamTemplate, err := elasticstack.NewElasticsearchIndexTemplate(ctx, \"my_data_stream_template\", \u0026elasticstack.ElasticsearchIndexTemplateArgs{\n\t\t\tName: pulumi.String(\"my_data_stream\"),\n\t\t\tIndexPatterns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my-stream*\"),\n\t\t\t},\n\t\t\tDataStream: \u0026elasticstack.ElasticsearchIndexTemplateDataStreamArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// and now we can create data stream based on the index template\n\t\tmyDataStream, err := elasticstack.NewElasticsearchDataStream(ctx, \"my_data_stream\", \u0026elasticstack.ElasticsearchDataStreamArgs{\n\t\t\tName: pulumi.String(\"my-stream\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmyDataStreamTemplate,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// finally we can manage lifecycle of data stream\n\t\t_, err = elasticstack.NewElasticsearchDataStreamLifecycle(ctx, \"my_data_stream_lifecycle\", \u0026elasticstack.ElasticsearchDataStreamLifecycleArgs{\n\t\t\tName:          pulumi.String(\"my-stream\"),\n\t\t\tDataRetention: pulumi.String(\"3d\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmyDataStream,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// or you can use wildcards to manage multiple lifecycles at once\n\t\t_, err = elasticstack.NewElasticsearchDataStreamLifecycle(ctx, \"my_data_stream_lifecycle_multiple\", \u0026elasticstack.ElasticsearchDataStreamLifecycleArgs{\n\t\t\tName:          pulumi.String(\"stream-*\"),\n\t\t\tDataRetention: pulumi.String(\"3d\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplate;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexTemplateDataStreamArgs;\nimport com.pulumi.elasticstack.ElasticsearchDataStream;\nimport com.pulumi.elasticstack.ElasticsearchDataStreamArgs;\nimport com.pulumi.elasticstack.ElasticsearchDataStreamLifecycle;\nimport com.pulumi.elasticstack.ElasticsearchDataStreamLifecycleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // First we must have a index template created\n        var myDataStreamTemplate = new ElasticsearchIndexTemplate(\"myDataStreamTemplate\", ElasticsearchIndexTemplateArgs.builder()\n            .name(\"my_data_stream\")\n            .indexPatterns(\"my-stream*\")\n            .dataStream(ElasticsearchIndexTemplateDataStreamArgs.builder()\n                .build())\n            .build());\n\n        // and now we can create data stream based on the index template\n        var myDataStream = new ElasticsearchDataStream(\"myDataStream\", ElasticsearchDataStreamArgs.builder()\n            .name(\"my-stream\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(myDataStreamTemplate)\n                .build());\n\n        // finally we can manage lifecycle of data stream\n        var myDataStreamLifecycle = new ElasticsearchDataStreamLifecycle(\"myDataStreamLifecycle\", ElasticsearchDataStreamLifecycleArgs.builder()\n            .name(\"my-stream\")\n            .dataRetention(\"3d\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(myDataStream)\n                .build());\n\n        // or you can use wildcards to manage multiple lifecycles at once\n        var myDataStreamLifecycleMultiple = new ElasticsearchDataStreamLifecycle(\"myDataStreamLifecycleMultiple\", ElasticsearchDataStreamLifecycleArgs.builder()\n            .name(\"stream-*\")\n            .dataRetention(\"3d\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # First we must have a index template created\n  myDataStreamTemplate:\n    type: elasticstack:ElasticsearchIndexTemplate\n    name: my_data_stream_template\n    properties:\n      name: my_data_stream\n      indexPatterns:\n        - my-stream*\n      dataStream: {}\n  # and now we can create data stream based on the index template\n  myDataStream:\n    type: elasticstack:ElasticsearchDataStream\n    name: my_data_stream\n    properties:\n      name: my-stream\n    options:\n      dependsOn:\n        - ${myDataStreamTemplate}\n  # finally we can manage lifecycle of data stream\n  myDataStreamLifecycle:\n    type: elasticstack:ElasticsearchDataStreamLifecycle\n    name: my_data_stream_lifecycle\n    properties:\n      name: my-stream\n      dataRetention: 3d\n    options:\n      dependsOn:\n        - ${myDataStream}\n  # or you can use wildcards to manage multiple lifecycles at once\n  myDataStreamLifecycleMultiple:\n    type: elasticstack:ElasticsearchDataStreamLifecycle\n    name: my_data_stream_lifecycle_multiple\n    properties:\n      name: stream-*\n      dataRetention: 3d\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchDataStreamLifecycle:ElasticsearchDataStreamLifecycle my_data_stream_lifecycle \u003ccluster_uuid\u003e/\u003cdata_stream_name\u003e\n```\n\n","properties":{"dataRetention":{"type":"string","description":"Every document added to this data stream will be stored at least for this time frame. When empty, every document in this data stream will be stored indefinitely\n"},"downsamplings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleDownsampling:ElasticsearchDataStreamLifecycleDownsampling"},"description":"Downsampling configuration objects, each defining an after interval representing when the backing index is meant to be downsampled and a\u003cspan pulumi-lang-nodejs=\" fixedInterval \" pulumi-lang-dotnet=\" FixedInterval \" pulumi-lang-go=\" fixedInterval \" pulumi-lang-python=\" fixed_interval \" pulumi-lang-yaml=\" fixedInterval \" pulumi-lang-java=\" fixedInterval \"\u003e fixed_interval \u003c/span\u003erepresenting the downsampling interval.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleElasticsearchConnection:ElasticsearchDataStreamLifecycleElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Data stream lifecycle on/off.\n"},"expandWildcards":{"type":"string","description":"Determines how wildcard patterns in the \u003cspan pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\"\u003e`indices`\u003c/span\u003e parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n"},"name":{"type":"string","description":"Name of the data stream. Supports wildcards.\n"}},"type":"object","required":["enabled","expandWildcards","name"],"inputProperties":{"dataRetention":{"type":"string","description":"Every document added to this data stream will be stored at least for this time frame. When empty, every document in this data stream will be stored indefinitely\n"},"downsamplings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleDownsampling:ElasticsearchDataStreamLifecycleDownsampling"},"description":"Downsampling configuration objects, each defining an after interval representing when the backing index is meant to be downsampled and a\u003cspan pulumi-lang-nodejs=\" fixedInterval \" pulumi-lang-dotnet=\" FixedInterval \" pulumi-lang-go=\" fixedInterval \" pulumi-lang-python=\" fixed_interval \" pulumi-lang-yaml=\" fixedInterval \" pulumi-lang-java=\" fixedInterval \"\u003e fixed_interval \u003c/span\u003erepresenting the downsampling interval.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleElasticsearchConnection:ElasticsearchDataStreamLifecycleElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Data stream lifecycle on/off.\n"},"expandWildcards":{"type":"string","description":"Determines how wildcard patterns in the \u003cspan pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\"\u003e`indices`\u003c/span\u003e parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n"},"name":{"type":"string","description":"Name of the data stream. Supports wildcards.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchDataStreamLifecycle resources.\n","properties":{"dataRetention":{"type":"string","description":"Every document added to this data stream will be stored at least for this time frame. When empty, every document in this data stream will be stored indefinitely\n"},"downsamplings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleDownsampling:ElasticsearchDataStreamLifecycleDownsampling"},"description":"Downsampling configuration objects, each defining an after interval representing when the backing index is meant to be downsampled and a\u003cspan pulumi-lang-nodejs=\" fixedInterval \" pulumi-lang-dotnet=\" FixedInterval \" pulumi-lang-go=\" fixedInterval \" pulumi-lang-python=\" fixed_interval \" pulumi-lang-yaml=\" fixedInterval \" pulumi-lang-java=\" fixedInterval \"\u003e fixed_interval \u003c/span\u003erepresenting the downsampling interval.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleElasticsearchConnection:ElasticsearchDataStreamLifecycleElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Data stream lifecycle on/off.\n"},"expandWildcards":{"type":"string","description":"Determines how wildcard patterns in the \u003cspan pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\"\u003e`indices`\u003c/span\u003e parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n"},"name":{"type":"string","description":"Name of the data stream. Supports wildcards.\n"}},"type":"object"}},"elasticstack:index/elasticsearchEnrichPolicy:ElasticsearchEnrichPolicy":{"description":"Managing Elasticsearch enrich policies. See the [enrich API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/enrich-apis.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myIndex = new elasticstack.ElasticsearchIndex(\"my_index\", {\n    name: \"my-index\",\n    mappings: JSON.stringify({\n        properties: {\n            email: {\n                type: \"text\",\n            },\n            first_name: {\n                type: \"text\",\n            },\n            last_name: {\n                type: \"text\",\n            },\n        },\n    }),\n    deletionProtection: false,\n});\nconst policy1 = new elasticstack.ElasticsearchEnrichPolicy(\"policy1\", {\n    name: \"policy1\",\n    policyType: \"match\",\n    indices: [myIndex.name],\n    matchField: \"email\",\n    enrichFields: [\n        \"first_name\",\n        \"last_name\",\n    ],\n    query: JSON.stringify({\n        bool: {\n            must: [{\n                term: {\n                    b: \"A\",\n                },\n            }],\n            must_not: [{\n                term: {\n                    a: \"B\",\n                },\n            }],\n        },\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_index = elasticstack.ElasticsearchIndex(\"my_index\",\n    name=\"my-index\",\n    mappings=json.dumps({\n        \"properties\": {\n            \"email\": {\n                \"type\": \"text\",\n            },\n            \"first_name\": {\n                \"type\": \"text\",\n            },\n            \"last_name\": {\n                \"type\": \"text\",\n            },\n        },\n    }),\n    deletion_protection=False)\npolicy1 = elasticstack.ElasticsearchEnrichPolicy(\"policy1\",\n    name=\"policy1\",\n    policy_type=\"match\",\n    indices=[my_index.name],\n    match_field=\"email\",\n    enrich_fields=[\n        \"first_name\",\n        \"last_name\",\n    ],\n    query=json.dumps({\n        \"bool\": {\n            \"must\": [{\n                \"term\": {\n                    \"b\": \"A\",\n                },\n            }],\n            \"must_not\": [{\n                \"term\": {\n                    \"a\": \"B\",\n                },\n            }],\n        },\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myIndex = new Elasticstack.ElasticsearchIndex(\"my_index\", new()\n    {\n        Name = \"my-index\",\n        Mappings = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"properties\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"email\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"type\"] = \"text\",\n                },\n                [\"first_name\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"type\"] = \"text\",\n                },\n                [\"last_name\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"type\"] = \"text\",\n                },\n            },\n        }),\n        DeletionProtection = false,\n    });\n\n    var policy1 = new Elasticstack.ElasticsearchEnrichPolicy(\"policy1\", new()\n    {\n        Name = \"policy1\",\n        PolicyType = \"match\",\n        Indices = new[]\n        {\n            myIndex.Name,\n        },\n        MatchField = \"email\",\n        EnrichFields = new[]\n        {\n            \"first_name\",\n            \"last_name\",\n        },\n        Query = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"bool\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"must\"] = new[]\n                {\n                    new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"term\"] = new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"b\"] = \"A\",\n                        },\n                    },\n                },\n                [\"must_not\"] = new[]\n                {\n                    new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"term\"] = new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"a\"] = \"B\",\n                        },\n                    },\n                },\n            },\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"properties\": map[string]interface{}{\n\t\t\t\t\"email\": map[string]interface{}{\n\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t},\n\t\t\t\t\"first_name\": map[string]interface{}{\n\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t},\n\t\t\t\t\"last_name\": map[string]interface{}{\n\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tmyIndex, err := elasticstack.NewElasticsearchIndex(ctx, \"my_index\", \u0026elasticstack.ElasticsearchIndexArgs{\n\t\t\tName:               pulumi.String(\"my-index\"),\n\t\t\tMappings:           pulumi.String(json0),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"bool\": map[string]interface{}{\n\t\t\t\t\"must\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"term\": map[string]interface{}{\n\t\t\t\t\t\t\t\"b\": \"A\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"must_not\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"term\": map[string]interface{}{\n\t\t\t\t\t\t\t\"a\": \"B\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = elasticstack.NewElasticsearchEnrichPolicy(ctx, \"policy1\", \u0026elasticstack.ElasticsearchEnrichPolicyArgs{\n\t\t\tName:       pulumi.String(\"policy1\"),\n\t\t\tPolicyType: pulumi.String(\"match\"),\n\t\t\tIndices: pulumi.StringArray{\n\t\t\t\tmyIndex.Name,\n\t\t\t},\n\t\t\tMatchField: pulumi.String(\"email\"),\n\t\t\tEnrichFields: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"first_name\"),\n\t\t\t\tpulumi.String(\"last_name\"),\n\t\t\t},\n\t\t\tQuery: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIndex;\nimport com.pulumi.elasticstack.ElasticsearchIndexArgs;\nimport com.pulumi.elasticstack.ElasticsearchEnrichPolicy;\nimport com.pulumi.elasticstack.ElasticsearchEnrichPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myIndex = new ElasticsearchIndex(\"myIndex\", ElasticsearchIndexArgs.builder()\n            .name(\"my-index\")\n            .mappings(serializeJson(\n                jsonObject(\n                    jsonProperty(\"properties\", jsonObject(\n                        jsonProperty(\"email\", jsonObject(\n                            jsonProperty(\"type\", \"text\")\n                        )),\n                        jsonProperty(\"first_name\", jsonObject(\n                            jsonProperty(\"type\", \"text\")\n                        )),\n                        jsonProperty(\"last_name\", jsonObject(\n                            jsonProperty(\"type\", \"text\")\n                        ))\n                    ))\n                )))\n            .deletionProtection(false)\n            .build());\n\n        var policy1 = new ElasticsearchEnrichPolicy(\"policy1\", ElasticsearchEnrichPolicyArgs.builder()\n            .name(\"policy1\")\n            .policyType(\"match\")\n            .indices(myIndex.name())\n            .matchField(\"email\")\n            .enrichFields(            \n                \"first_name\",\n                \"last_name\")\n            .query(serializeJson(\n                jsonObject(\n                    jsonProperty(\"bool\", jsonObject(\n                        jsonProperty(\"must\", jsonArray(jsonObject(\n                            jsonProperty(\"term\", jsonObject(\n                                jsonProperty(\"b\", \"A\")\n                            ))\n                        ))),\n                        jsonProperty(\"must_not\", jsonArray(jsonObject(\n                            jsonProperty(\"term\", jsonObject(\n                                jsonProperty(\"a\", \"B\")\n                            ))\n                        )))\n                    ))\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIndex:\n    type: elasticstack:ElasticsearchIndex\n    name: my_index\n    properties:\n      name: my-index\n      mappings:\n        fn::toJSON:\n          properties:\n            email:\n              type: text\n            first_name:\n              type: text\n            last_name:\n              type: text\n      deletionProtection: false\n  policy1:\n    type: elasticstack:ElasticsearchEnrichPolicy\n    properties:\n      name: policy1\n      policyType: match\n      indices:\n        - ${myIndex.name}\n      matchField: email\n      enrichFields:\n        - first_name\n        - last_name\n      query:\n        fn::toJSON:\n          bool:\n            must:\n              - term:\n                  b: A\n            must_not:\n              - term:\n                  a: B\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nNOTE: while importing index resource, keep in mind, that some of the default index settings will be imported into the TF state too\n\nYou can later adjust the index configuration to account for those imported settings\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchEnrichPolicy:ElasticsearchEnrichPolicy policy1 \u003ccluster_uuid\u003e/\u003cpolicy_name\u003e\n```\n\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchEnrichPolicyElasticsearchConnection:ElasticsearchEnrichPolicyElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enrichFields":{"type":"array","items":{"type":"string"},"description":"Fields to add to matching incoming documents. These fields must be present in the source indices.\n"},"execute":{"type":"boolean","description":"Whether to call the execute API function in order to create the enrich index.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Array of one or more source indices used to create the enrich index.\n"},"matchField":{"type":"string","description":"Field in source indices used to match incoming documents.\n"},"name":{"type":"string","description":"Name of the enrich policy to manage.\n"},"policyType":{"type":"string","description":"The type of enrich policy, can be one of geo_match, match, range.\n"},"query":{"type":"string","description":"Query used to filter documents in the enrich index. The policy only uses documents matching this query to enrich incoming documents. Defaults to a\u003cspan pulumi-lang-nodejs=\" matchAll \" pulumi-lang-dotnet=\" MatchAll \" pulumi-lang-go=\" matchAll \" pulumi-lang-python=\" match_all \" pulumi-lang-yaml=\" matchAll \" pulumi-lang-java=\" matchAll \"\u003e match_all \u003c/span\u003equery.\n"}},"type":"object","required":["enrichFields","execute","indices","matchField","name","policyType"],"inputProperties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchEnrichPolicyElasticsearchConnection:ElasticsearchEnrichPolicyElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enrichFields":{"type":"array","items":{"type":"string"},"description":"Fields to add to matching incoming documents. These fields must be present in the source indices.\n"},"execute":{"type":"boolean","description":"Whether to call the execute API function in order to create the enrich index.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Array of one or more source indices used to create the enrich index.\n"},"matchField":{"type":"string","description":"Field in source indices used to match incoming documents.\n"},"name":{"type":"string","description":"Name of the enrich policy to manage.\n"},"policyType":{"type":"string","description":"The type of enrich policy, can be one of geo_match, match, range.\n"},"query":{"type":"string","description":"Query used to filter documents in the enrich index. The policy only uses documents matching this query to enrich incoming documents. Defaults to a\u003cspan pulumi-lang-nodejs=\" matchAll \" pulumi-lang-dotnet=\" MatchAll \" pulumi-lang-go=\" matchAll \" pulumi-lang-python=\" match_all \" pulumi-lang-yaml=\" matchAll \" pulumi-lang-java=\" matchAll \"\u003e match_all \u003c/span\u003equery.\n"}},"requiredInputs":["enrichFields","indices","matchField","policyType"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchEnrichPolicy resources.\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchEnrichPolicyElasticsearchConnection:ElasticsearchEnrichPolicyElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enrichFields":{"type":"array","items":{"type":"string"},"description":"Fields to add to matching incoming documents. These fields must be present in the source indices.\n"},"execute":{"type":"boolean","description":"Whether to call the execute API function in order to create the enrich index.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Array of one or more source indices used to create the enrich index.\n"},"matchField":{"type":"string","description":"Field in source indices used to match incoming documents.\n"},"name":{"type":"string","description":"Name of the enrich policy to manage.\n"},"policyType":{"type":"string","description":"The type of enrich policy, can be one of geo_match, match, range.\n"},"query":{"type":"string","description":"Query used to filter documents in the enrich index. The policy only uses documents matching this query to enrich incoming documents. Defaults to a\u003cspan pulumi-lang-nodejs=\" matchAll \" pulumi-lang-dotnet=\" MatchAll \" pulumi-lang-go=\" matchAll \" pulumi-lang-python=\" match_all \" pulumi-lang-yaml=\" matchAll \" pulumi-lang-java=\" matchAll \"\u003e match_all \u003c/span\u003equery.\n"}},"type":"object"}},"elasticstack:index/elasticsearchIndex:ElasticsearchIndex":{"description":"Creates Elasticsearch indices. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myIndex = new elasticstack.ElasticsearchIndex(\"my_index\", {\n    name: \"my-index\",\n    aliases: [\n        {\n            name: \"my_alias_1\",\n        },\n        {\n            name: \"my_alias_2\",\n            filter: JSON.stringify({\n                term: {\n                    \"user.id\": \"developer\",\n                },\n            }),\n        },\n    ],\n    mappings: JSON.stringify({\n        properties: {\n            field1: {\n                type: \"keyword\",\n            },\n            field2: {\n                type: \"text\",\n            },\n            field3: {\n                properties: {\n                    inner_field1: {\n                        type: \"text\",\n                        index: false,\n                    },\n                    inner_field2: {\n                        type: \"integer\",\n                        index: false,\n                    },\n                },\n            },\n        },\n    }),\n    numberOfShards: 1,\n    numberOfReplicas: 2,\n    searchIdleAfter: \"20s\",\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_index = elasticstack.ElasticsearchIndex(\"my_index\",\n    name=\"my-index\",\n    aliases=[\n        {\n            \"name\": \"my_alias_1\",\n        },\n        {\n            \"name\": \"my_alias_2\",\n            \"filter\": json.dumps({\n                \"term\": {\n                    \"user.id\": \"developer\",\n                },\n            }),\n        },\n    ],\n    mappings=json.dumps({\n        \"properties\": {\n            \"field1\": {\n                \"type\": \"keyword\",\n            },\n            \"field2\": {\n                \"type\": \"text\",\n            },\n            \"field3\": {\n                \"properties\": {\n                    \"inner_field1\": {\n                        \"type\": \"text\",\n                        \"index\": False,\n                    },\n                    \"inner_field2\": {\n                        \"type\": \"integer\",\n                        \"index\": False,\n                    },\n                },\n            },\n        },\n    }),\n    number_of_shards=1,\n    number_of_replicas=2,\n    search_idle_after=\"20s\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myIndex = new Elasticstack.ElasticsearchIndex(\"my_index\", new()\n    {\n        Name = \"my-index\",\n        Aliases = new[]\n        {\n            new Elasticstack.Inputs.ElasticsearchIndexAliasArgs\n            {\n                Name = \"my_alias_1\",\n            },\n            new Elasticstack.Inputs.ElasticsearchIndexAliasArgs\n            {\n                Name = \"my_alias_2\",\n                Filter = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"term\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"user.id\"] = \"developer\",\n                    },\n                }),\n            },\n        },\n        Mappings = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"properties\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"field1\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"type\"] = \"keyword\",\n                },\n                [\"field2\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"type\"] = \"text\",\n                },\n                [\"field3\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"properties\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"inner_field1\"] = new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"type\"] = \"text\",\n                            [\"index\"] = false,\n                        },\n                        [\"inner_field2\"] = new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"type\"] = \"integer\",\n                            [\"index\"] = false,\n                        },\n                    },\n                },\n            },\n        }),\n        NumberOfShards = 1,\n        NumberOfReplicas = 2,\n        SearchIdleAfter = \"20s\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"term\": map[string]interface{}{\n\t\t\t\t\"user.id\": \"developer\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"properties\": map[string]interface{}{\n\t\t\t\t\"field1\": map[string]interface{}{\n\t\t\t\t\t\"type\": \"keyword\",\n\t\t\t\t},\n\t\t\t\t\"field2\": map[string]interface{}{\n\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t},\n\t\t\t\t\"field3\": map[string]interface{}{\n\t\t\t\t\t\"properties\": map[string]interface{}{\n\t\t\t\t\t\t\"inner_field1\": map[string]interface{}{\n\t\t\t\t\t\t\t\"type\":  \"text\",\n\t\t\t\t\t\t\t\"index\": false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"inner_field2\": map[string]interface{}{\n\t\t\t\t\t\t\t\"type\":  \"integer\",\n\t\t\t\t\t\t\t\"index\": false,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = elasticstack.NewElasticsearchIndex(ctx, \"my_index\", \u0026elasticstack.ElasticsearchIndexArgs{\n\t\t\tName: pulumi.String(\"my-index\"),\n\t\t\tAliases: elasticstack.ElasticsearchIndexAliasTypeArray{\n\t\t\t\t\u0026elasticstack.ElasticsearchIndexAliasTypeArgs{\n\t\t\t\t\tName: pulumi.String(\"my_alias_1\"),\n\t\t\t\t},\n\t\t\t\t\u0026elasticstack.ElasticsearchIndexAliasTypeArgs{\n\t\t\t\t\tName:   pulumi.String(\"my_alias_2\"),\n\t\t\t\t\tFilter: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMappings:         pulumi.String(json1),\n\t\t\tNumberOfShards:   pulumi.Float64(1),\n\t\t\tNumberOfReplicas: pulumi.Float64(2),\n\t\t\tSearchIdleAfter:  pulumi.String(\"20s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIndex;\nimport com.pulumi.elasticstack.ElasticsearchIndexArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexAliasArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myIndex = new ElasticsearchIndex(\"myIndex\", ElasticsearchIndexArgs.builder()\n            .name(\"my-index\")\n            .aliases(            \n                ElasticsearchIndexAliasArgs.builder()\n                    .name(\"my_alias_1\")\n                    .build(),\n                ElasticsearchIndexAliasArgs.builder()\n                    .name(\"my_alias_2\")\n                    .filter(serializeJson(\n                        jsonObject(\n                            jsonProperty(\"term\", jsonObject(\n                                jsonProperty(\"user.id\", \"developer\")\n                            ))\n                        )))\n                    .build())\n            .mappings(serializeJson(\n                jsonObject(\n                    jsonProperty(\"properties\", jsonObject(\n                        jsonProperty(\"field1\", jsonObject(\n                            jsonProperty(\"type\", \"keyword\")\n                        )),\n                        jsonProperty(\"field2\", jsonObject(\n                            jsonProperty(\"type\", \"text\")\n                        )),\n                        jsonProperty(\"field3\", jsonObject(\n                            jsonProperty(\"properties\", jsonObject(\n                                jsonProperty(\"inner_field1\", jsonObject(\n                                    jsonProperty(\"type\", \"text\"),\n                                    jsonProperty(\"index\", false)\n                                )),\n                                jsonProperty(\"inner_field2\", jsonObject(\n                                    jsonProperty(\"type\", \"integer\"),\n                                    jsonProperty(\"index\", false)\n                                ))\n                            ))\n                        ))\n                    ))\n                )))\n            .numberOfShards(1.0)\n            .numberOfReplicas(2.0)\n            .searchIdleAfter(\"20s\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIndex:\n    type: elasticstack:ElasticsearchIndex\n    name: my_index\n    properties:\n      name: my-index\n      aliases:\n        - name: my_alias_1\n        - name: my_alias_2\n          filter:\n            fn::toJSON:\n              term:\n                user.id: developer\n      mappings:\n        fn::toJSON:\n          properties:\n            field1:\n              type: keyword\n            field2:\n              type: text\n            field3:\n              properties:\n                inner_field1:\n                  type: text\n                  index: false\n                inner_field2:\n                  type: integer\n                  index: false\n      numberOfShards: 1\n      numberOfReplicas: 2\n      searchIdleAfter: 20s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nImporting a index resource is minimal and may result in seemingly unnecessary plan changes. \n\nIndex settings are *not* included in the import, and so any settings defined in the elasticstack_elasticsearch_index\n\nresource definition will show up as an addition in the next `pulumi preview` operation. \n\nApplying these settings 'changes' should be safe, resulting in no actual change to the backing index. \n\n```sh\n$ pulumi import elasticstack:index/elasticsearchIndex:ElasticsearchIndex my_index \u003ccluster_uuid\u003e/\u003cindex_name\u003e\n```\n\n","properties":{"aliases":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAlias:ElasticsearchIndexAlias"},"description":"Aliases for the index.\n"},"analysisAnalyzer":{"type":"string","description":"A JSON string describing the analyzers applied to the index.\n"},"analysisCharFilter":{"type":"string","description":"A JSON string describing the\u003cspan pulumi-lang-nodejs=\" charFilters \" pulumi-lang-dotnet=\" CharFilters \" pulumi-lang-go=\" charFilters \" pulumi-lang-python=\" char_filters \" pulumi-lang-yaml=\" charFilters \" pulumi-lang-java=\" charFilters \"\u003e char_filters \u003c/span\u003eapplied to the index.\n"},"analysisFilter":{"type":"string","description":"A JSON string describing the filters applied to the index.\n"},"analysisNormalizer":{"type":"string","description":"A JSON string describing the normalizers applied to the index.\n"},"analysisTokenizer":{"type":"string","description":"A JSON string describing the tokenizers applied to the index.\n"},"analyzeMaxTokenCount":{"type":"number","description":"The maximum number of tokens that can be produced using _analyze API.\n"},"autoExpandReplicas":{"type":"string","description":"Set the number of replicas to the node count in the cluster. Set to a dash delimited lower and upper bound (e.g. 0-5) or use all for the upper bound (e.g. 0-all)\n"},"blocksMetadata":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable index metadata reads and writes.\n"},"blocksRead":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable read operations against the index.\n"},"blocksReadOnly":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to make the index and index metadata read only, \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to allow writes and metadata changes.\n"},"blocksReadOnlyAllowDelete":{"type":"boolean","description":"Identical to `index.blocks.read_only` but allows deleting the index to free up resources.\n"},"blocksWrite":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable data write operations against the index. This setting does not affect metadata.\n"},"codec":{"type":"string","description":"The \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e value compresses stored data with LZ4 compression, but this can be set to \u003cspan pulumi-lang-nodejs=\"`bestCompression`\" pulumi-lang-dotnet=\"`BestCompression`\" pulumi-lang-go=\"`bestCompression`\" pulumi-lang-python=\"`best_compression`\" pulumi-lang-yaml=\"`bestCompression`\" pulumi-lang-java=\"`bestCompression`\"\u003e`best_compression`\u003c/span\u003e which uses DEFLATE for a higher compression ratio. This can be set only on creation.\n"},"defaultPipeline":{"type":"string","description":"The default ingest node pipeline for this index. Index requests will fail if the default pipeline is set and the pipeline does not exist.\n"},"deletionProtection":{"type":"boolean"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexElasticsearchConnection:ElasticsearchIndexElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"finalPipeline":{"type":"string","description":"Final ingest pipeline for the index. Indexing requests will fail if the final pipeline is set and the pipeline does not exist. The final pipeline always runs after the request pipeline (if specified) and the default pipeline (if it exists). The special pipeline name _none indicates no ingest pipeline will run.\n"},"gcDeletes":{"type":"string","description":"The length of time that a deleted document's version number remains available for further versioned operations.\n"},"highlightMaxAnalyzedOffset":{"type":"number","description":"The maximum number of characters that will be analyzed for a highlight request.\n"},"indexingSlowlogLevel":{"type":"string","description":"Set which logging level to use for the search slow log, can be: \u003cspan pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\"\u003e`warn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\"\u003e`trace`\u003c/span\u003e\n"},"indexingSlowlogSource":{"type":"string","description":"Set the number of characters of the `_source` to include in the slowlog lines, \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e will skip logging the source entirely and setting it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will log the entire source regardless of size. The original `_source` is reformatted by default to make sure that it fits on a single log line.\n"},"indexingSlowlogThresholdIndexDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"loadFixedBitsetFiltersEagerly":{"type":"boolean","description":"Indicates whether cached filters are pre-loaded for nested queries. This can be set only on creation.\n"},"mappingCoerce":{"type":"boolean","description":"Set index level coercion setting that is applied to all mapping types.\n"},"mappingTotalFieldsLimit":{"type":"number","description":"The maximum number of fields in an index. Field type parameters count towards this limit. The default value is 1000.\n"},"mappings":{"type":"string","description":"Mapping for fields in the index.\n\t\tIf specified, this mapping can include: field names, [field data types](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html), [mapping parameters](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html).\n\t\t**NOTE:**\n\t\t- Changing datatypes in the existing *mappings* will force index to be re-created.\n\t\t- Removing field will be ignored by default same as elasticsearch. You need to recreate the index to remove field completely.\n"},"masterTimeout":{"type":"string","description":"Period to wait for a connection to the master node. If no response is received before the timeout expires, the request fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e. This value is ignored when running against Serverless projects.\n"},"maxDocvalueFieldsSearch":{"type":"number","description":"The maximum number of \u003cspan pulumi-lang-nodejs=\"`docvalueFields`\" pulumi-lang-dotnet=\"`DocvalueFields`\" pulumi-lang-go=\"`docvalueFields`\" pulumi-lang-python=\"`docvalue_fields`\" pulumi-lang-yaml=\"`docvalueFields`\" pulumi-lang-java=\"`docvalueFields`\"\u003e`docvalue_fields`\u003c/span\u003e that are allowed in a query.\n"},"maxInnerResultWindow":{"type":"number","description":"The maximum value of `from + size` for inner hits definition and top hits aggregations to this index.\n"},"maxNgramDiff":{"type":"number","description":"The maximum allowed difference between min*gram and max*gram for NGramTokenizer and NGramTokenFilter.\n"},"maxRefreshListeners":{"type":"number","description":"Maximum number of refresh listeners available on each shard of the index.\n"},"maxRegexLength":{"type":"number","description":"The maximum length of regex that can be used in Regexp Query.\n"},"maxRescoreWindow":{"type":"number","description":"The maximum value of \u003cspan pulumi-lang-nodejs=\"`windowSize`\" pulumi-lang-dotnet=\"`WindowSize`\" pulumi-lang-go=\"`windowSize`\" pulumi-lang-python=\"`window_size`\" pulumi-lang-yaml=\"`windowSize`\" pulumi-lang-java=\"`windowSize`\"\u003e`window_size`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`rescore`\" pulumi-lang-dotnet=\"`Rescore`\" pulumi-lang-go=\"`rescore`\" pulumi-lang-python=\"`rescore`\" pulumi-lang-yaml=\"`rescore`\" pulumi-lang-java=\"`rescore`\"\u003e`rescore`\u003c/span\u003e requests in searches of this index.\n"},"maxResultWindow":{"type":"number","description":"The maximum value of `from + size` for searches to this index.\n"},"maxScriptFields":{"type":"number","description":"The maximum number of \u003cspan pulumi-lang-nodejs=\"`scriptFields`\" pulumi-lang-dotnet=\"`ScriptFields`\" pulumi-lang-go=\"`scriptFields`\" pulumi-lang-python=\"`script_fields`\" pulumi-lang-yaml=\"`scriptFields`\" pulumi-lang-java=\"`scriptFields`\"\u003e`script_fields`\u003c/span\u003e that are allowed in a query.\n"},"maxShingleDiff":{"type":"number","description":"The maximum allowed difference between max*shingle*size and min*shingle*size for ShingleTokenFilter.\n"},"maxTermsCount":{"type":"number","description":"The maximum number of terms that can be used in Terms Query.\n"},"name":{"type":"string","description":"Name of the index you wish to create.\n"},"numberOfReplicas":{"type":"number","description":"Number of shard replicas.\n"},"numberOfRoutingShards":{"type":"number","description":"Value used with number*of*shards to route documents to a primary shard. This can be set only on creation.\n"},"numberOfShards":{"type":"number","description":"Number of shards for the index. This can be set only on creation.\n"},"queryDefaultFields":{"type":"array","items":{"type":"string"},"description":"Wildcard (*) patterns matching one or more fields. Defaults to '*', which matches all fields eligible for term-level queries, excluding metadata fields.\n"},"refreshInterval":{"type":"string","description":"How often to perform a refresh operation, which makes recent changes to the index visible to search. Can be set to `-1` to disable refresh.\n"},"routingAllocationEnable":{"type":"string","description":"Controls shard allocation for this index. It can be set to: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\"\u003e`primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`newPrimaries`\" pulumi-lang-dotnet=\"`NewPrimaries`\" pulumi-lang-go=\"`newPrimaries`\" pulumi-lang-python=\"`new_primaries`\" pulumi-lang-yaml=\"`newPrimaries`\" pulumi-lang-java=\"`newPrimaries`\"\u003e`new_primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"routingPartitionSize":{"type":"number","description":"The number of shards a custom routing value can go to. This can be set only on creation.\n"},"routingRebalanceEnable":{"type":"string","description":"Enables shard rebalancing for this index. It can be set to: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\"\u003e`primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`replicas`\" pulumi-lang-dotnet=\"`Replicas`\" pulumi-lang-go=\"`replicas`\" pulumi-lang-python=\"`replicas`\" pulumi-lang-yaml=\"`replicas`\" pulumi-lang-java=\"`replicas`\"\u003e`replicas`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"searchIdleAfter":{"type":"string","description":"How long a shard can not receive a search or get request until it’s considered search idle.\n"},"searchSlowlogLevel":{"type":"string","description":"Set which logging level to use for the search slow log, can be: \u003cspan pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\"\u003e`warn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\"\u003e`trace`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"settings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSetting:ElasticsearchIndexSetting"},"description":"DEPRECATED: Please use dedicated setting field. Configuration options for the index. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings.\n**NOTE:** Static index settings (see: https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#*static*index_settings) can be only set on the index creation and later cannot be removed or updated - *apply* will return error\n","deprecationMessage":"Deprecated"},"settingsRaw":{"type":"string","description":"All raw settings fetched from the cluster.\n"},"shardCheckOnStartup":{"type":"string","description":"Whether or not shards should be checked for corruption before opening. When corruption is detected, it will prevent the shard from being opened. Accepts \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`checksum`\" pulumi-lang-dotnet=\"`Checksum`\" pulumi-lang-go=\"`checksum`\" pulumi-lang-python=\"`checksum`\" pulumi-lang-yaml=\"`checksum`\" pulumi-lang-java=\"`checksum`\"\u003e`checksum`\u003c/span\u003e.\n"},"sortFields":{"type":"array","items":{"type":"string"},"description":"The field to sort shards in this index by.\n"},"sortOrders":{"type":"array","items":{"type":"string"},"description":"The direction to sort shards in. Accepts \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"},"timeout":{"type":"string","description":"Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"unassignedNodeLeftDelayedTimeout":{"type":"string","description":"Time to delay the allocation of replica shards which become unassigned because a node has left, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"waitForActiveShards":{"type":"string","description":"The number of shard copies that must be active before proceeding with the operation. Set to \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e or any positive integer up to the total number of shards in the index (number*of*replicas+1). Default: \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, the primary shard. This value is ignored when running against Serverless projects.\n"}},"type":"object","required":["aliases","deletionProtection","mappings","masterTimeout","name","settingsRaw","timeout","waitForActiveShards"],"inputProperties":{"aliases":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAlias:ElasticsearchIndexAlias"},"description":"Aliases for the index.\n"},"analysisAnalyzer":{"type":"string","description":"A JSON string describing the analyzers applied to the index.\n"},"analysisCharFilter":{"type":"string","description":"A JSON string describing the\u003cspan pulumi-lang-nodejs=\" charFilters \" pulumi-lang-dotnet=\" CharFilters \" pulumi-lang-go=\" charFilters \" pulumi-lang-python=\" char_filters \" pulumi-lang-yaml=\" charFilters \" pulumi-lang-java=\" charFilters \"\u003e char_filters \u003c/span\u003eapplied to the index.\n"},"analysisFilter":{"type":"string","description":"A JSON string describing the filters applied to the index.\n"},"analysisNormalizer":{"type":"string","description":"A JSON string describing the normalizers applied to the index.\n"},"analysisTokenizer":{"type":"string","description":"A JSON string describing the tokenizers applied to the index.\n"},"analyzeMaxTokenCount":{"type":"number","description":"The maximum number of tokens that can be produced using _analyze API.\n"},"autoExpandReplicas":{"type":"string","description":"Set the number of replicas to the node count in the cluster. Set to a dash delimited lower and upper bound (e.g. 0-5) or use all for the upper bound (e.g. 0-all)\n"},"blocksMetadata":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable index metadata reads and writes.\n"},"blocksRead":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable read operations against the index.\n"},"blocksReadOnly":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to make the index and index metadata read only, \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to allow writes and metadata changes.\n"},"blocksReadOnlyAllowDelete":{"type":"boolean","description":"Identical to `index.blocks.read_only` but allows deleting the index to free up resources.\n"},"blocksWrite":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable data write operations against the index. This setting does not affect metadata.\n"},"codec":{"type":"string","description":"The \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e value compresses stored data with LZ4 compression, but this can be set to \u003cspan pulumi-lang-nodejs=\"`bestCompression`\" pulumi-lang-dotnet=\"`BestCompression`\" pulumi-lang-go=\"`bestCompression`\" pulumi-lang-python=\"`best_compression`\" pulumi-lang-yaml=\"`bestCompression`\" pulumi-lang-java=\"`bestCompression`\"\u003e`best_compression`\u003c/span\u003e which uses DEFLATE for a higher compression ratio. This can be set only on creation.\n"},"defaultPipeline":{"type":"string","description":"The default ingest node pipeline for this index. Index requests will fail if the default pipeline is set and the pipeline does not exist.\n"},"deletionProtection":{"type":"boolean"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexElasticsearchConnection:ElasticsearchIndexElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"finalPipeline":{"type":"string","description":"Final ingest pipeline for the index. Indexing requests will fail if the final pipeline is set and the pipeline does not exist. The final pipeline always runs after the request pipeline (if specified) and the default pipeline (if it exists). The special pipeline name _none indicates no ingest pipeline will run.\n"},"gcDeletes":{"type":"string","description":"The length of time that a deleted document's version number remains available for further versioned operations.\n"},"highlightMaxAnalyzedOffset":{"type":"number","description":"The maximum number of characters that will be analyzed for a highlight request.\n"},"indexingSlowlogLevel":{"type":"string","description":"Set which logging level to use for the search slow log, can be: \u003cspan pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\"\u003e`warn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\"\u003e`trace`\u003c/span\u003e\n"},"indexingSlowlogSource":{"type":"string","description":"Set the number of characters of the `_source` to include in the slowlog lines, \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e will skip logging the source entirely and setting it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will log the entire source regardless of size. The original `_source` is reformatted by default to make sure that it fits on a single log line.\n"},"indexingSlowlogThresholdIndexDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"loadFixedBitsetFiltersEagerly":{"type":"boolean","description":"Indicates whether cached filters are pre-loaded for nested queries. This can be set only on creation.\n"},"mappingCoerce":{"type":"boolean","description":"Set index level coercion setting that is applied to all mapping types.\n"},"mappingTotalFieldsLimit":{"type":"number","description":"The maximum number of fields in an index. Field type parameters count towards this limit. The default value is 1000.\n"},"mappings":{"type":"string","description":"Mapping for fields in the index.\n\t\tIf specified, this mapping can include: field names, [field data types](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html), [mapping parameters](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html).\n\t\t**NOTE:**\n\t\t- Changing datatypes in the existing *mappings* will force index to be re-created.\n\t\t- Removing field will be ignored by default same as elasticsearch. You need to recreate the index to remove field completely.\n"},"masterTimeout":{"type":"string","description":"Period to wait for a connection to the master node. If no response is received before the timeout expires, the request fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e. This value is ignored when running against Serverless projects.\n"},"maxDocvalueFieldsSearch":{"type":"number","description":"The maximum number of \u003cspan pulumi-lang-nodejs=\"`docvalueFields`\" pulumi-lang-dotnet=\"`DocvalueFields`\" pulumi-lang-go=\"`docvalueFields`\" pulumi-lang-python=\"`docvalue_fields`\" pulumi-lang-yaml=\"`docvalueFields`\" pulumi-lang-java=\"`docvalueFields`\"\u003e`docvalue_fields`\u003c/span\u003e that are allowed in a query.\n"},"maxInnerResultWindow":{"type":"number","description":"The maximum value of `from + size` for inner hits definition and top hits aggregations to this index.\n"},"maxNgramDiff":{"type":"number","description":"The maximum allowed difference between min*gram and max*gram for NGramTokenizer and NGramTokenFilter.\n"},"maxRefreshListeners":{"type":"number","description":"Maximum number of refresh listeners available on each shard of the index.\n"},"maxRegexLength":{"type":"number","description":"The maximum length of regex that can be used in Regexp Query.\n"},"maxRescoreWindow":{"type":"number","description":"The maximum value of \u003cspan pulumi-lang-nodejs=\"`windowSize`\" pulumi-lang-dotnet=\"`WindowSize`\" pulumi-lang-go=\"`windowSize`\" pulumi-lang-python=\"`window_size`\" pulumi-lang-yaml=\"`windowSize`\" pulumi-lang-java=\"`windowSize`\"\u003e`window_size`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`rescore`\" pulumi-lang-dotnet=\"`Rescore`\" pulumi-lang-go=\"`rescore`\" pulumi-lang-python=\"`rescore`\" pulumi-lang-yaml=\"`rescore`\" pulumi-lang-java=\"`rescore`\"\u003e`rescore`\u003c/span\u003e requests in searches of this index.\n"},"maxResultWindow":{"type":"number","description":"The maximum value of `from + size` for searches to this index.\n"},"maxScriptFields":{"type":"number","description":"The maximum number of \u003cspan pulumi-lang-nodejs=\"`scriptFields`\" pulumi-lang-dotnet=\"`ScriptFields`\" pulumi-lang-go=\"`scriptFields`\" pulumi-lang-python=\"`script_fields`\" pulumi-lang-yaml=\"`scriptFields`\" pulumi-lang-java=\"`scriptFields`\"\u003e`script_fields`\u003c/span\u003e that are allowed in a query.\n"},"maxShingleDiff":{"type":"number","description":"The maximum allowed difference between max*shingle*size and min*shingle*size for ShingleTokenFilter.\n"},"maxTermsCount":{"type":"number","description":"The maximum number of terms that can be used in Terms Query.\n"},"name":{"type":"string","description":"Name of the index you wish to create.\n"},"numberOfReplicas":{"type":"number","description":"Number of shard replicas.\n"},"numberOfRoutingShards":{"type":"number","description":"Value used with number*of*shards to route documents to a primary shard. This can be set only on creation.\n"},"numberOfShards":{"type":"number","description":"Number of shards for the index. This can be set only on creation.\n"},"queryDefaultFields":{"type":"array","items":{"type":"string"},"description":"Wildcard (*) patterns matching one or more fields. Defaults to '*', which matches all fields eligible for term-level queries, excluding metadata fields.\n"},"refreshInterval":{"type":"string","description":"How often to perform a refresh operation, which makes recent changes to the index visible to search. Can be set to `-1` to disable refresh.\n"},"routingAllocationEnable":{"type":"string","description":"Controls shard allocation for this index. It can be set to: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\"\u003e`primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`newPrimaries`\" pulumi-lang-dotnet=\"`NewPrimaries`\" pulumi-lang-go=\"`newPrimaries`\" pulumi-lang-python=\"`new_primaries`\" pulumi-lang-yaml=\"`newPrimaries`\" pulumi-lang-java=\"`newPrimaries`\"\u003e`new_primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"routingPartitionSize":{"type":"number","description":"The number of shards a custom routing value can go to. This can be set only on creation.\n"},"routingRebalanceEnable":{"type":"string","description":"Enables shard rebalancing for this index. It can be set to: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\"\u003e`primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`replicas`\" pulumi-lang-dotnet=\"`Replicas`\" pulumi-lang-go=\"`replicas`\" pulumi-lang-python=\"`replicas`\" pulumi-lang-yaml=\"`replicas`\" pulumi-lang-java=\"`replicas`\"\u003e`replicas`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"searchIdleAfter":{"type":"string","description":"How long a shard can not receive a search or get request until it’s considered search idle.\n"},"searchSlowlogLevel":{"type":"string","description":"Set which logging level to use for the search slow log, can be: \u003cspan pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\"\u003e`warn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\"\u003e`trace`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"settings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSetting:ElasticsearchIndexSetting"},"description":"DEPRECATED: Please use dedicated setting field. Configuration options for the index. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings.\n**NOTE:** Static index settings (see: https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#*static*index_settings) can be only set on the index creation and later cannot be removed or updated - *apply* will return error\n","deprecationMessage":"Deprecated"},"shardCheckOnStartup":{"type":"string","description":"Whether or not shards should be checked for corruption before opening. When corruption is detected, it will prevent the shard from being opened. Accepts \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`checksum`\" pulumi-lang-dotnet=\"`Checksum`\" pulumi-lang-go=\"`checksum`\" pulumi-lang-python=\"`checksum`\" pulumi-lang-yaml=\"`checksum`\" pulumi-lang-java=\"`checksum`\"\u003e`checksum`\u003c/span\u003e.\n"},"sortFields":{"type":"array","items":{"type":"string"},"description":"The field to sort shards in this index by.\n"},"sortOrders":{"type":"array","items":{"type":"string"},"description":"The direction to sort shards in. Accepts \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"},"timeout":{"type":"string","description":"Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"unassignedNodeLeftDelayedTimeout":{"type":"string","description":"Time to delay the allocation of replica shards which become unassigned because a node has left, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"waitForActiveShards":{"type":"string","description":"The number of shard copies that must be active before proceeding with the operation. Set to \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e or any positive integer up to the total number of shards in the index (number*of*replicas+1). Default: \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, the primary shard. This value is ignored when running against Serverless projects.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndex resources.\n","properties":{"aliases":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAlias:ElasticsearchIndexAlias"},"description":"Aliases for the index.\n"},"analysisAnalyzer":{"type":"string","description":"A JSON string describing the analyzers applied to the index.\n"},"analysisCharFilter":{"type":"string","description":"A JSON string describing the\u003cspan pulumi-lang-nodejs=\" charFilters \" pulumi-lang-dotnet=\" CharFilters \" pulumi-lang-go=\" charFilters \" pulumi-lang-python=\" char_filters \" pulumi-lang-yaml=\" charFilters \" pulumi-lang-java=\" charFilters \"\u003e char_filters \u003c/span\u003eapplied to the index.\n"},"analysisFilter":{"type":"string","description":"A JSON string describing the filters applied to the index.\n"},"analysisNormalizer":{"type":"string","description":"A JSON string describing the normalizers applied to the index.\n"},"analysisTokenizer":{"type":"string","description":"A JSON string describing the tokenizers applied to the index.\n"},"analyzeMaxTokenCount":{"type":"number","description":"The maximum number of tokens that can be produced using _analyze API.\n"},"autoExpandReplicas":{"type":"string","description":"Set the number of replicas to the node count in the cluster. Set to a dash delimited lower and upper bound (e.g. 0-5) or use all for the upper bound (e.g. 0-all)\n"},"blocksMetadata":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable index metadata reads and writes.\n"},"blocksRead":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable read operations against the index.\n"},"blocksReadOnly":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to make the index and index metadata read only, \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e to allow writes and metadata changes.\n"},"blocksReadOnlyAllowDelete":{"type":"boolean","description":"Identical to `index.blocks.read_only` but allows deleting the index to free up resources.\n"},"blocksWrite":{"type":"boolean","description":"Set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e to disable data write operations against the index. This setting does not affect metadata.\n"},"codec":{"type":"string","description":"The \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e value compresses stored data with LZ4 compression, but this can be set to \u003cspan pulumi-lang-nodejs=\"`bestCompression`\" pulumi-lang-dotnet=\"`BestCompression`\" pulumi-lang-go=\"`bestCompression`\" pulumi-lang-python=\"`best_compression`\" pulumi-lang-yaml=\"`bestCompression`\" pulumi-lang-java=\"`bestCompression`\"\u003e`best_compression`\u003c/span\u003e which uses DEFLATE for a higher compression ratio. This can be set only on creation.\n"},"defaultPipeline":{"type":"string","description":"The default ingest node pipeline for this index. Index requests will fail if the default pipeline is set and the pipeline does not exist.\n"},"deletionProtection":{"type":"boolean"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexElasticsearchConnection:ElasticsearchIndexElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"finalPipeline":{"type":"string","description":"Final ingest pipeline for the index. Indexing requests will fail if the final pipeline is set and the pipeline does not exist. The final pipeline always runs after the request pipeline (if specified) and the default pipeline (if it exists). The special pipeline name _none indicates no ingest pipeline will run.\n"},"gcDeletes":{"type":"string","description":"The length of time that a deleted document's version number remains available for further versioned operations.\n"},"highlightMaxAnalyzedOffset":{"type":"number","description":"The maximum number of characters that will be analyzed for a highlight request.\n"},"indexingSlowlogLevel":{"type":"string","description":"Set which logging level to use for the search slow log, can be: \u003cspan pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\"\u003e`warn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\"\u003e`trace`\u003c/span\u003e\n"},"indexingSlowlogSource":{"type":"string","description":"Set the number of characters of the `_source` to include in the slowlog lines, \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e will skip logging the source entirely and setting it to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e will log the entire source regardless of size. The original `_source` is reformatted by default to make sure that it fits on a single log line.\n"},"indexingSlowlogThresholdIndexDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"indexingSlowlogThresholdIndexWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"loadFixedBitsetFiltersEagerly":{"type":"boolean","description":"Indicates whether cached filters are pre-loaded for nested queries. This can be set only on creation.\n"},"mappingCoerce":{"type":"boolean","description":"Set index level coercion setting that is applied to all mapping types.\n"},"mappingTotalFieldsLimit":{"type":"number","description":"The maximum number of fields in an index. Field type parameters count towards this limit. The default value is 1000.\n"},"mappings":{"type":"string","description":"Mapping for fields in the index.\n\t\tIf specified, this mapping can include: field names, [field data types](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html), [mapping parameters](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html).\n\t\t**NOTE:**\n\t\t- Changing datatypes in the existing *mappings* will force index to be re-created.\n\t\t- Removing field will be ignored by default same as elasticsearch. You need to recreate the index to remove field completely.\n"},"masterTimeout":{"type":"string","description":"Period to wait for a connection to the master node. If no response is received before the timeout expires, the request fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e. This value is ignored when running against Serverless projects.\n"},"maxDocvalueFieldsSearch":{"type":"number","description":"The maximum number of \u003cspan pulumi-lang-nodejs=\"`docvalueFields`\" pulumi-lang-dotnet=\"`DocvalueFields`\" pulumi-lang-go=\"`docvalueFields`\" pulumi-lang-python=\"`docvalue_fields`\" pulumi-lang-yaml=\"`docvalueFields`\" pulumi-lang-java=\"`docvalueFields`\"\u003e`docvalue_fields`\u003c/span\u003e that are allowed in a query.\n"},"maxInnerResultWindow":{"type":"number","description":"The maximum value of `from + size` for inner hits definition and top hits aggregations to this index.\n"},"maxNgramDiff":{"type":"number","description":"The maximum allowed difference between min*gram and max*gram for NGramTokenizer and NGramTokenFilter.\n"},"maxRefreshListeners":{"type":"number","description":"Maximum number of refresh listeners available on each shard of the index.\n"},"maxRegexLength":{"type":"number","description":"The maximum length of regex that can be used in Regexp Query.\n"},"maxRescoreWindow":{"type":"number","description":"The maximum value of \u003cspan pulumi-lang-nodejs=\"`windowSize`\" pulumi-lang-dotnet=\"`WindowSize`\" pulumi-lang-go=\"`windowSize`\" pulumi-lang-python=\"`window_size`\" pulumi-lang-yaml=\"`windowSize`\" pulumi-lang-java=\"`windowSize`\"\u003e`window_size`\u003c/span\u003e for \u003cspan pulumi-lang-nodejs=\"`rescore`\" pulumi-lang-dotnet=\"`Rescore`\" pulumi-lang-go=\"`rescore`\" pulumi-lang-python=\"`rescore`\" pulumi-lang-yaml=\"`rescore`\" pulumi-lang-java=\"`rescore`\"\u003e`rescore`\u003c/span\u003e requests in searches of this index.\n"},"maxResultWindow":{"type":"number","description":"The maximum value of `from + size` for searches to this index.\n"},"maxScriptFields":{"type":"number","description":"The maximum number of \u003cspan pulumi-lang-nodejs=\"`scriptFields`\" pulumi-lang-dotnet=\"`ScriptFields`\" pulumi-lang-go=\"`scriptFields`\" pulumi-lang-python=\"`script_fields`\" pulumi-lang-yaml=\"`scriptFields`\" pulumi-lang-java=\"`scriptFields`\"\u003e`script_fields`\u003c/span\u003e that are allowed in a query.\n"},"maxShingleDiff":{"type":"number","description":"The maximum allowed difference between max*shingle*size and min*shingle*size for ShingleTokenFilter.\n"},"maxTermsCount":{"type":"number","description":"The maximum number of terms that can be used in Terms Query.\n"},"name":{"type":"string","description":"Name of the index you wish to create.\n"},"numberOfReplicas":{"type":"number","description":"Number of shard replicas.\n"},"numberOfRoutingShards":{"type":"number","description":"Value used with number*of*shards to route documents to a primary shard. This can be set only on creation.\n"},"numberOfShards":{"type":"number","description":"Number of shards for the index. This can be set only on creation.\n"},"queryDefaultFields":{"type":"array","items":{"type":"string"},"description":"Wildcard (*) patterns matching one or more fields. Defaults to '*', which matches all fields eligible for term-level queries, excluding metadata fields.\n"},"refreshInterval":{"type":"string","description":"How often to perform a refresh operation, which makes recent changes to the index visible to search. Can be set to `-1` to disable refresh.\n"},"routingAllocationEnable":{"type":"string","description":"Controls shard allocation for this index. It can be set to: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\"\u003e`primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`newPrimaries`\" pulumi-lang-dotnet=\"`NewPrimaries`\" pulumi-lang-go=\"`newPrimaries`\" pulumi-lang-python=\"`new_primaries`\" pulumi-lang-yaml=\"`newPrimaries`\" pulumi-lang-java=\"`newPrimaries`\"\u003e`new_primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"routingPartitionSize":{"type":"number","description":"The number of shards a custom routing value can go to. This can be set only on creation.\n"},"routingRebalanceEnable":{"type":"string","description":"Enables shard rebalancing for this index. It can be set to: \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\"\u003e`primaries`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`replicas`\" pulumi-lang-dotnet=\"`Replicas`\" pulumi-lang-go=\"`replicas`\" pulumi-lang-python=\"`replicas`\" pulumi-lang-yaml=\"`replicas`\" pulumi-lang-java=\"`replicas`\"\u003e`replicas`\u003c/span\u003e , \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"searchIdleAfter":{"type":"string","description":"How long a shard can not receive a search or get request until it’s considered search idle.\n"},"searchSlowlogLevel":{"type":"string","description":"Set which logging level to use for the search slow log, can be: \u003cspan pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\"\u003e`warn`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\"\u003e`info`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\"\u003e`debug`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\"\u003e`trace`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"searchSlowlogThresholdFetchWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryDebug":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\"\u003e`2s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryInfo":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\"\u003e`5s`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryTrace":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\"\u003e`500ms`\u003c/span\u003e\n"},"searchSlowlogThresholdQueryWarn":{"type":"string","description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"settings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSetting:ElasticsearchIndexSetting"},"description":"DEPRECATED: Please use dedicated setting field. Configuration options for the index. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings.\n**NOTE:** Static index settings (see: https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#*static*index_settings) can be only set on the index creation and later cannot be removed or updated - *apply* will return error\n","deprecationMessage":"Deprecated"},"settingsRaw":{"type":"string","description":"All raw settings fetched from the cluster.\n"},"shardCheckOnStartup":{"type":"string","description":"Whether or not shards should be checked for corruption before opening. When corruption is detected, it will prevent the shard from being opened. Accepts \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`checksum`\" pulumi-lang-dotnet=\"`Checksum`\" pulumi-lang-go=\"`checksum`\" pulumi-lang-python=\"`checksum`\" pulumi-lang-yaml=\"`checksum`\" pulumi-lang-java=\"`checksum`\"\u003e`checksum`\u003c/span\u003e.\n"},"sortFields":{"type":"array","items":{"type":"string"},"description":"The field to sort shards in this index by.\n"},"sortOrders":{"type":"array","items":{"type":"string"},"description":"The direction to sort shards in. Accepts \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"},"timeout":{"type":"string","description":"Period to wait for a response. If no response is received before the timeout expires, the request fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"unassignedNodeLeftDelayedTimeout":{"type":"string","description":"Time to delay the allocation of replica shards which become unassigned because a node has left, in time units, e.g. \u003cspan pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\"\u003e`10s`\u003c/span\u003e\n"},"waitForActiveShards":{"type":"string","description":"The number of shard copies that must be active before proceeding with the operation. Set to \u003cspan pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\"\u003e`all`\u003c/span\u003e or any positive integer up to the total number of shards in the index (number*of*replicas+1). Default: \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e, the primary shard. This value is ignored when running against Serverless projects.\n"}},"type":"object"}},"elasticstack:index/elasticsearchIndexAlias:ElasticsearchIndexAlias":{"description":"Manages an Elasticsearch alias. See the [alias documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html) for more details.\n","properties":{"name":{"type":"string","description":"The alias name.\n"},"readIndices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasReadIndex:ElasticsearchIndexAliasReadIndex"},"description":"Set of read indices for the alias.\n"},"writeIndex":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasWriteIndex:ElasticsearchIndexAliasWriteIndex","description":"The write index for the alias. Only one write index is allowed per alias.\n"}},"type":"object","required":["name"],"inputProperties":{"name":{"type":"string","description":"The alias name.\n"},"readIndices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasReadIndex:ElasticsearchIndexAliasReadIndex"},"description":"Set of read indices for the alias.\n"},"writeIndex":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasWriteIndex:ElasticsearchIndexAliasWriteIndex","description":"The write index for the alias. Only one write index is allowed per alias.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndexAlias resources.\n","properties":{"name":{"type":"string","description":"The alias name.\n"},"readIndices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasReadIndex:ElasticsearchIndexAliasReadIndex"},"description":"Set of read indices for the alias.\n"},"writeIndex":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasWriteIndex:ElasticsearchIndexAliasWriteIndex","description":"The write index for the alias. Only one write index is allowed per alias.\n"}},"type":"object"}},"elasticstack:index/elasticsearchIndexLifecycle:ElasticsearchIndexLifecycle":{"description":"Creates or updates lifecycle policy. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-put-lifecycle.html and https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-index-lifecycle.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myIlm = new elasticstack.ElasticsearchIndexLifecycle(\"my_ilm\", {\n    name: \"my_ilm_policy\",\n    hot: {\n        minAge: \"1h\",\n        setPriority: {\n            priority: 0,\n        },\n        rollover: {\n            maxAge: \"1d\",\n        },\n        readonly: {},\n    },\n    warm: {\n        minAge: \"0ms\",\n        setPriority: {\n            priority: 10,\n        },\n        readonly: {},\n        allocate: {\n            exclude: JSON.stringify({\n                box_type: \"hot\",\n            }),\n            numberOfReplicas: 1,\n            totalShardsPerNode: 200,\n        },\n    },\n    \"delete\": {\n        minAge: \"2d\",\n        \"delete\": {},\n    },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_ilm = elasticstack.ElasticsearchIndexLifecycle(\"my_ilm\",\n    name=\"my_ilm_policy\",\n    hot={\n        \"min_age\": \"1h\",\n        \"set_priority\": {\n            \"priority\": 0,\n        },\n        \"rollover\": {\n            \"max_age\": \"1d\",\n        },\n        \"readonly\": {},\n    },\n    warm={\n        \"min_age\": \"0ms\",\n        \"set_priority\": {\n            \"priority\": 10,\n        },\n        \"readonly\": {},\n        \"allocate\": {\n            \"exclude\": json.dumps({\n                \"box_type\": \"hot\",\n            }),\n            \"number_of_replicas\": 1,\n            \"total_shards_per_node\": 200,\n        },\n    },\n    delete={\n        \"min_age\": \"2d\",\n        \"delete\": {},\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myIlm = new Elasticstack.ElasticsearchIndexLifecycle(\"my_ilm\", new()\n    {\n        Name = \"my_ilm_policy\",\n        Hot = new Elasticstack.Inputs.ElasticsearchIndexLifecycleHotArgs\n        {\n            MinAge = \"1h\",\n            SetPriority = new Elasticstack.Inputs.ElasticsearchIndexLifecycleHotSetPriorityArgs\n            {\n                Priority = 0,\n            },\n            Rollover = new Elasticstack.Inputs.ElasticsearchIndexLifecycleHotRolloverArgs\n            {\n                MaxAge = \"1d\",\n            },\n            Readonly = null,\n        },\n        Warm = new Elasticstack.Inputs.ElasticsearchIndexLifecycleWarmArgs\n        {\n            MinAge = \"0ms\",\n            SetPriority = new Elasticstack.Inputs.ElasticsearchIndexLifecycleWarmSetPriorityArgs\n            {\n                Priority = 10,\n            },\n            Readonly = null,\n            Allocate = new Elasticstack.Inputs.ElasticsearchIndexLifecycleWarmAllocateArgs\n            {\n                Exclude = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"box_type\"] = \"hot\",\n                }),\n                NumberOfReplicas = 1,\n                TotalShardsPerNode = 200,\n            },\n        },\n        Delete = new Elasticstack.Inputs.ElasticsearchIndexLifecycleDeleteArgs\n        {\n            MinAge = \"2d\",\n            Delete = null,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"box_type\": \"hot\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = elasticstack.NewElasticsearchIndexLifecycle(ctx, \"my_ilm\", \u0026elasticstack.ElasticsearchIndexLifecycleArgs{\n\t\t\tName: pulumi.String(\"my_ilm_policy\"),\n\t\t\tHot: \u0026elasticstack.ElasticsearchIndexLifecycleHotArgs{\n\t\t\t\tMinAge: pulumi.String(\"1h\"),\n\t\t\t\tSetPriority: \u0026elasticstack.ElasticsearchIndexLifecycleHotSetPriorityArgs{\n\t\t\t\t\tPriority: pulumi.Float64(0),\n\t\t\t\t},\n\t\t\t\tRollover: \u0026elasticstack.ElasticsearchIndexLifecycleHotRolloverArgs{\n\t\t\t\t\tMaxAge: pulumi.String(\"1d\"),\n\t\t\t\t},\n\t\t\t\tReadonly: \u0026elasticstack.ElasticsearchIndexLifecycleHotReadonlyArgs{},\n\t\t\t},\n\t\t\tWarm: \u0026elasticstack.ElasticsearchIndexLifecycleWarmArgs{\n\t\t\t\tMinAge: pulumi.String(\"0ms\"),\n\t\t\t\tSetPriority: \u0026elasticstack.ElasticsearchIndexLifecycleWarmSetPriorityArgs{\n\t\t\t\t\tPriority: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t\tReadonly: \u0026elasticstack.ElasticsearchIndexLifecycleWarmReadonlyArgs{},\n\t\t\t\tAllocate: \u0026elasticstack.ElasticsearchIndexLifecycleWarmAllocateArgs{\n\t\t\t\t\tExclude:            pulumi.String(json0),\n\t\t\t\t\tNumberOfReplicas:   pulumi.Float64(1),\n\t\t\t\t\tTotalShardsPerNode: pulumi.Float64(200),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDelete: \u0026elasticstack.ElasticsearchIndexLifecycleDeleteArgs{\n\t\t\t\tMinAge: pulumi.String(\"2d\"),\n\t\t\t\tDelete: \u0026elasticstack.ElasticsearchIndexLifecycleDeleteDeleteArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIndexLifecycle;\nimport com.pulumi.elasticstack.ElasticsearchIndexLifecycleArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleHotArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleHotSetPriorityArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleHotRolloverArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleHotReadonlyArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleWarmArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleWarmSetPriorityArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleWarmReadonlyArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleWarmAllocateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleDeleteArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleDeleteDeleteArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myIlm = new ElasticsearchIndexLifecycle(\"myIlm\", ElasticsearchIndexLifecycleArgs.builder()\n            .name(\"my_ilm_policy\")\n            .hot(ElasticsearchIndexLifecycleHotArgs.builder()\n                .minAge(\"1h\")\n                .setPriority(ElasticsearchIndexLifecycleHotSetPriorityArgs.builder()\n                    .priority(0.0)\n                    .build())\n                .rollover(ElasticsearchIndexLifecycleHotRolloverArgs.builder()\n                    .maxAge(\"1d\")\n                    .build())\n                .readonly(ElasticsearchIndexLifecycleHotReadonlyArgs.builder()\n                    .build())\n                .build())\n            .warm(ElasticsearchIndexLifecycleWarmArgs.builder()\n                .minAge(\"0ms\")\n                .setPriority(ElasticsearchIndexLifecycleWarmSetPriorityArgs.builder()\n                    .priority(10.0)\n                    .build())\n                .readonly(ElasticsearchIndexLifecycleWarmReadonlyArgs.builder()\n                    .build())\n                .allocate(ElasticsearchIndexLifecycleWarmAllocateArgs.builder()\n                    .exclude(serializeJson(\n                        jsonObject(\n                            jsonProperty(\"box_type\", \"hot\")\n                        )))\n                    .numberOfReplicas(1.0)\n                    .totalShardsPerNode(200.0)\n                    .build())\n                .build())\n            .delete(ElasticsearchIndexLifecycleDeleteArgs.builder()\n                .minAge(\"2d\")\n                .delete(ElasticsearchIndexLifecycleDeleteDeleteArgs.builder()\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIlm:\n    type: elasticstack:ElasticsearchIndexLifecycle\n    name: my_ilm\n    properties:\n      name: my_ilm_policy\n      hot:\n        minAge: 1h\n        setPriority:\n          priority: 0\n        rollover:\n          maxAge: 1d\n        readonly: {}\n      warm:\n        minAge: 0ms\n        setPriority:\n          priority: 10\n        readonly: {}\n        allocate:\n          exclude:\n            fn::toJSON:\n              box_type: hot\n          numberOfReplicas: 1\n          totalShardsPerNode: 200\n      delete:\n        minAge: 2d\n        delete: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchIndexLifecycle:ElasticsearchIndexLifecycle my_ilm \u003ccluster_uuid\u003e/\u003cilm_name\u003e\n```\n\n","properties":{"cold":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleCold:ElasticsearchIndexLifecycleCold","description":"The index is no longer being updated and is queried infrequently. The information still needs to be searchable, but it’s okay if those queries are slower.\n"},"delete":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleDelete:ElasticsearchIndexLifecycleDelete","description":"The index is no longer needed and can safely be removed.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleElasticsearchConnection:ElasticsearchIndexLifecycleElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"frozen":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleFrozen:ElasticsearchIndexLifecycleFrozen","description":"The index is no longer being updated and is queried rarely. The information still needs to be searchable, but it’s okay if those queries are extremely slow.\n"},"hot":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHot:ElasticsearchIndexLifecycleHot","description":"The index is actively being updated and queried.\n"},"metadata":{"type":"string","description":"Optional user metadata about the ilm policy. Must be valid JSON document.\n"},"modifiedDate":{"type":"string","description":"The DateTime of the last modification.\n"},"name":{"type":"string","description":"Identifier for the policy.\n"},"warm":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarm:ElasticsearchIndexLifecycleWarm","description":"The index is no longer being updated but is still being queried.\n"}},"type":"object","required":["modifiedDate","name"],"inputProperties":{"cold":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleCold:ElasticsearchIndexLifecycleCold","description":"The index is no longer being updated and is queried infrequently. The information still needs to be searchable, but it’s okay if those queries are slower.\n"},"delete":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleDelete:ElasticsearchIndexLifecycleDelete","description":"The index is no longer needed and can safely be removed.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleElasticsearchConnection:ElasticsearchIndexLifecycleElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"frozen":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleFrozen:ElasticsearchIndexLifecycleFrozen","description":"The index is no longer being updated and is queried rarely. The information still needs to be searchable, but it’s okay if those queries are extremely slow.\n"},"hot":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHot:ElasticsearchIndexLifecycleHot","description":"The index is actively being updated and queried.\n"},"metadata":{"type":"string","description":"Optional user metadata about the ilm policy. Must be valid JSON document.\n"},"name":{"type":"string","description":"Identifier for the policy.\n"},"warm":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarm:ElasticsearchIndexLifecycleWarm","description":"The index is no longer being updated but is still being queried.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndexLifecycle resources.\n","properties":{"cold":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleCold:ElasticsearchIndexLifecycleCold","description":"The index is no longer being updated and is queried infrequently. The information still needs to be searchable, but it’s okay if those queries are slower.\n"},"delete":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleDelete:ElasticsearchIndexLifecycleDelete","description":"The index is no longer needed and can safely be removed.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleElasticsearchConnection:ElasticsearchIndexLifecycleElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"frozen":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleFrozen:ElasticsearchIndexLifecycleFrozen","description":"The index is no longer being updated and is queried rarely. The information still needs to be searchable, but it’s okay if those queries are extremely slow.\n"},"hot":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleHot:ElasticsearchIndexLifecycleHot","description":"The index is actively being updated and queried.\n"},"metadata":{"type":"string","description":"Optional user metadata about the ilm policy. Must be valid JSON document.\n"},"modifiedDate":{"type":"string","description":"The DateTime of the last modification.\n"},"name":{"type":"string","description":"Identifier for the policy.\n"},"warm":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarm:ElasticsearchIndexLifecycleWarm","description":"The index is no longer being updated but is still being queried.\n"}},"type":"object"}},"elasticstack:index/elasticsearchIndexTemplate:ElasticsearchIndexTemplate":{"description":"Creates or updates an index template. Index templates define settings, mappings, and aliases that can be applied automatically to new indices. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-template.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myTemplate = new elasticstack.ElasticsearchIndexTemplate(\"my_template\", {\n    name: \"my_template\",\n    priority: 42,\n    indexPatterns: [\n        \"logstash*\",\n        \"filebeat*\",\n    ],\n    template: {\n        aliases: [\n            {\n                name: \"my_template_test\",\n            },\n            {\n                name: \"another_test\",\n            },\n        ],\n        settings: JSON.stringify({\n            number_of_shards: \"3\",\n        }),\n    },\n});\nconst myDataStream = new elasticstack.ElasticsearchIndexTemplate(\"my_data_stream\", {\n    name: \"my_data_stream\",\n    indexPatterns: [\"stream*\"],\n    dataStream: {},\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_template = elasticstack.ElasticsearchIndexTemplate(\"my_template\",\n    name=\"my_template\",\n    priority=42,\n    index_patterns=[\n        \"logstash*\",\n        \"filebeat*\",\n    ],\n    template={\n        \"aliases\": [\n            {\n                \"name\": \"my_template_test\",\n            },\n            {\n                \"name\": \"another_test\",\n            },\n        ],\n        \"settings\": json.dumps({\n            \"number_of_shards\": \"3\",\n        }),\n    })\nmy_data_stream = elasticstack.ElasticsearchIndexTemplate(\"my_data_stream\",\n    name=\"my_data_stream\",\n    index_patterns=[\"stream*\"],\n    data_stream={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myTemplate = new Elasticstack.ElasticsearchIndexTemplate(\"my_template\", new()\n    {\n        Name = \"my_template\",\n        Priority = 42,\n        IndexPatterns = new[]\n        {\n            \"logstash*\",\n            \"filebeat*\",\n        },\n        Template = new Elasticstack.Inputs.ElasticsearchIndexTemplateTemplateArgs\n        {\n            Aliases = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchIndexTemplateTemplateAliasArgs\n                {\n                    Name = \"my_template_test\",\n                },\n                new Elasticstack.Inputs.ElasticsearchIndexTemplateTemplateAliasArgs\n                {\n                    Name = \"another_test\",\n                },\n            },\n            Settings = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n            {\n                [\"number_of_shards\"] = \"3\",\n            }),\n        },\n    });\n\n    var myDataStream = new Elasticstack.ElasticsearchIndexTemplate(\"my_data_stream\", new()\n    {\n        Name = \"my_data_stream\",\n        IndexPatterns = new[]\n        {\n            \"stream*\",\n        },\n        DataStream = null,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"number_of_shards\": \"3\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = elasticstack.NewElasticsearchIndexTemplate(ctx, \"my_template\", \u0026elasticstack.ElasticsearchIndexTemplateArgs{\n\t\t\tName:     pulumi.String(\"my_template\"),\n\t\t\tPriority: pulumi.Float64(42),\n\t\t\tIndexPatterns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"logstash*\"),\n\t\t\t\tpulumi.String(\"filebeat*\"),\n\t\t\t},\n\t\t\tTemplate: \u0026elasticstack.ElasticsearchIndexTemplateTemplateArgs{\n\t\t\t\tAliases: elasticstack.ElasticsearchIndexTemplateTemplateAliasArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchIndexTemplateTemplateAliasArgs{\n\t\t\t\t\t\tName: pulumi.String(\"my_template_test\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026elasticstack.ElasticsearchIndexTemplateTemplateAliasArgs{\n\t\t\t\t\t\tName: pulumi.String(\"another_test\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSettings: pulumi.String(json0),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIndexTemplate(ctx, \"my_data_stream\", \u0026elasticstack.ElasticsearchIndexTemplateArgs{\n\t\t\tName: pulumi.String(\"my_data_stream\"),\n\t\t\tIndexPatterns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"stream*\"),\n\t\t\t},\n\t\t\tDataStream: \u0026elasticstack.ElasticsearchIndexTemplateDataStreamArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplate;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexTemplateTemplateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexTemplateDataStreamArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myTemplate = new ElasticsearchIndexTemplate(\"myTemplate\", ElasticsearchIndexTemplateArgs.builder()\n            .name(\"my_template\")\n            .priority(42.0)\n            .indexPatterns(            \n                \"logstash*\",\n                \"filebeat*\")\n            .template(ElasticsearchIndexTemplateTemplateArgs.builder()\n                .aliases(                \n                    ElasticsearchIndexTemplateTemplateAliasArgs.builder()\n                        .name(\"my_template_test\")\n                        .build(),\n                    ElasticsearchIndexTemplateTemplateAliasArgs.builder()\n                        .name(\"another_test\")\n                        .build())\n                .settings(serializeJson(\n                    jsonObject(\n                        jsonProperty(\"number_of_shards\", \"3\")\n                    )))\n                .build())\n            .build());\n\n        var myDataStream = new ElasticsearchIndexTemplate(\"myDataStream\", ElasticsearchIndexTemplateArgs.builder()\n            .name(\"my_data_stream\")\n            .indexPatterns(\"stream*\")\n            .dataStream(ElasticsearchIndexTemplateDataStreamArgs.builder()\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myTemplate:\n    type: elasticstack:ElasticsearchIndexTemplate\n    name: my_template\n    properties:\n      name: my_template\n      priority: 42\n      indexPatterns:\n        - logstash*\n        - filebeat*\n      template:\n        aliases:\n          - name: my_template_test\n          - name: another_test\n        settings:\n          fn::toJSON:\n            number_of_shards: '3'\n  myDataStream:\n    type: elasticstack:ElasticsearchIndexTemplate\n    name: my_data_stream\n    properties:\n      name: my_data_stream\n      indexPatterns:\n        - stream*\n      dataStream: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchIndexTemplate:ElasticsearchIndexTemplate my_template \u003ccluster_uuid\u003e/\u003ctemplate_name\u003e\n```\n\n","properties":{"composedOfs":{"type":"array","items":{"type":"string"},"description":"An ordered list of component template names.\n"},"dataStream":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateDataStream:ElasticsearchIndexTemplateDataStream","description":"If this object is included, the template is used to create data streams and their backing indices. Supports an empty object.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateElasticsearchConnection:ElasticsearchIndexTemplateElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"ignoreMissingComponentTemplates":{"type":"array","items":{"type":"string"},"description":"A list of component template names that are ignored if missing.\n"},"indexPatterns":{"type":"array","items":{"type":"string"},"description":"Array of wildcard (*) expressions used to match the names of data streams and indices during creation.\n"},"metadata":{"type":"string","description":"Optional user metadata about the index template.\n"},"name":{"type":"string","description":"Name of the index template to create.\n"},"priority":{"type":"number","description":"Priority to determine index template precedence when a new data stream or index is created.\n"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplate:ElasticsearchIndexTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, lifecycle, or settings configuration.\n"},"version":{"type":"number","description":"Version number used to manage index templates externally.\n"}},"type":"object","required":["composedOfs","ignoreMissingComponentTemplates","indexPatterns","name"],"inputProperties":{"composedOfs":{"type":"array","items":{"type":"string"},"description":"An ordered list of component template names.\n"},"dataStream":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateDataStream:ElasticsearchIndexTemplateDataStream","description":"If this object is included, the template is used to create data streams and their backing indices. Supports an empty object.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateElasticsearchConnection:ElasticsearchIndexTemplateElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"ignoreMissingComponentTemplates":{"type":"array","items":{"type":"string"},"description":"A list of component template names that are ignored if missing.\n"},"indexPatterns":{"type":"array","items":{"type":"string"},"description":"Array of wildcard (*) expressions used to match the names of data streams and indices during creation.\n"},"metadata":{"type":"string","description":"Optional user metadata about the index template.\n"},"name":{"type":"string","description":"Name of the index template to create.\n"},"priority":{"type":"number","description":"Priority to determine index template precedence when a new data stream or index is created.\n"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplate:ElasticsearchIndexTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, lifecycle, or settings configuration.\n"},"version":{"type":"number","description":"Version number used to manage index templates externally.\n"}},"requiredInputs":["indexPatterns"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndexTemplate resources.\n","properties":{"composedOfs":{"type":"array","items":{"type":"string"},"description":"An ordered list of component template names.\n"},"dataStream":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateDataStream:ElasticsearchIndexTemplateDataStream","description":"If this object is included, the template is used to create data streams and their backing indices. Supports an empty object.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateElasticsearchConnection:ElasticsearchIndexTemplateElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"ignoreMissingComponentTemplates":{"type":"array","items":{"type":"string"},"description":"A list of component template names that are ignored if missing.\n"},"indexPatterns":{"type":"array","items":{"type":"string"},"description":"Array of wildcard (*) expressions used to match the names of data streams and indices during creation.\n"},"metadata":{"type":"string","description":"Optional user metadata about the index template.\n"},"name":{"type":"string","description":"Name of the index template to create.\n"},"priority":{"type":"number","description":"Priority to determine index template precedence when a new data stream or index is created.\n"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplate:ElasticsearchIndexTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, lifecycle, or settings configuration.\n"},"version":{"type":"number","description":"Version number used to manage index templates externally.\n"}},"type":"object"}},"elasticstack:index/elasticsearchIngestPipeline:ElasticsearchIngestPipeline":{"description":"Manages tasks and resources related to ingest pipelines and processors. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-apis.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// You can provide the ingest pipeline processors as plain JSON objects.\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"my_ingest_pipeline\",\n    description: \"My first ingest pipeline managed by Terraform\",\n    processors: [\n        JSON.stringify({\n            set: {\n                description: \"My set processor description\",\n                field: \"_meta\",\n                value: \"indexed\",\n            },\n        }),\n        `    {\\\\\"json\\\\\": {\n      \\\\\"field\\\\\": \\\\\"data\\\\\",\n      \\\\\"target_field\\\\\": \\\\\"parsed_data\\\\\"\n    }}\n`,\n    ],\n});\n// Or you can use the provided data sources to create the processor data sources.\nconst setCount = elasticstack.getElasticsearchIngestProcessorSet({\n    field: \"count\",\n    value: \"1\",\n});\nconst parseStringSource = elasticstack.getElasticsearchIngestProcessorJson({\n    field: \"string_source\",\n    targetField: \"json_target\",\n});\nconst ingest = new elasticstack.ElasticsearchIngestPipeline(\"ingest\", {\n    name: \"set-parse\",\n    processors: [\n        setCount.then(setCount =\u003e setCount.json),\n        parseStringSource.then(parseStringSource =\u003e parseStringSource.json),\n    ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# You can provide the ingest pipeline processors as plain JSON objects.\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"my_ingest_pipeline\",\n    description=\"My first ingest pipeline managed by Terraform\",\n    processors=[\n        json.dumps({\n            \"set\": {\n                \"description\": \"My set processor description\",\n                \"field\": \"_meta\",\n                \"value\": \"indexed\",\n            },\n        }),\n        \"\"\"    {\\\"json\\\": {\n      \\\"field\\\": \\\"data\\\",\n      \\\"target_field\\\": \\\"parsed_data\\\"\n    }}\n\"\"\",\n    ])\n# Or you can use the provided data sources to create the processor data sources.\nset_count = elasticstack.get_elasticsearch_ingest_processor_set(field=\"count\",\n    value=\"1\")\nparse_string_source = elasticstack.get_elasticsearch_ingest_processor_json(field=\"string_source\",\n    target_field=\"json_target\")\ningest = elasticstack.ElasticsearchIngestPipeline(\"ingest\",\n    name=\"set-parse\",\n    processors=[\n        set_count.json,\n        parse_string_source.json,\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // You can provide the ingest pipeline processors as plain JSON objects.\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"my_ingest_pipeline\",\n        Description = \"My first ingest pipeline managed by Terraform\",\n        Processors = new[]\n        {\n            JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n            {\n                [\"set\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"description\"] = \"My set processor description\",\n                    [\"field\"] = \"_meta\",\n                    [\"value\"] = \"indexed\",\n                },\n            }),\n            @\"    {\\\"\"json\\\"\": {\n      \\\"\"field\\\"\": \\\"\"data\\\"\",\n      \\\"\"target_field\\\"\": \\\"\"parsed_data\\\"\"\n    }}\n\",\n        },\n    });\n\n    // Or you can use the provided data sources to create the processor data sources.\n    var setCount = Elasticstack.GetElasticsearchIngestProcessorSet.Invoke(new()\n    {\n        Field = \"count\",\n        Value = \"1\",\n    });\n\n    var parseStringSource = Elasticstack.GetElasticsearchIngestProcessorJson.Invoke(new()\n    {\n        Field = \"string_source\",\n        TargetField = \"json_target\",\n    });\n\n    var ingest = new Elasticstack.ElasticsearchIngestPipeline(\"ingest\", new()\n    {\n        Name = \"set-parse\",\n        Processors = new[]\n        {\n            setCount.Apply(getElasticsearchIngestProcessorSetResult =\u003e getElasticsearchIngestProcessorSetResult.Json),\n            parseStringSource.Apply(getElasticsearchIngestProcessorJsonResult =\u003e getElasticsearchIngestProcessorJsonResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"set\": map[string]interface{}{\n\t\t\t\t\"description\": \"My set processor description\",\n\t\t\t\t\"field\":       \"_meta\",\n\t\t\t\t\"value\":       \"indexed\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// You can provide the ingest pipeline processors as plain JSON objects.\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName:        pulumi.String(\"my_ingest_pipeline\"),\n\t\t\tDescription: pulumi.String(\"My first ingest pipeline managed by Terraform\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(json0),\n\t\t\t\tpulumi.String(\"    {\\\\\\\"json\\\\\\\": {\\n      \\\\\\\"field\\\\\\\": \\\\\\\"data\\\\\\\",\\n      \\\\\\\"target_field\\\\\\\": \\\\\\\"parsed_data\\\\\\\"\\n    }}\\n\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Or you can use the provided data sources to create the processor data sources.\n\t\tsetCount, err := elasticstack.GetElasticsearchIngestProcessorSet(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorSetArgs{\n\t\t\tField: \"count\",\n\t\t\tValue: pulumi.StringRef(\"1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tparseStringSource, err := elasticstack.GetElasticsearchIngestProcessorJson(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorJsonArgs{\n\t\t\tField:       \"string_source\",\n\t\t\tTargetField: pulumi.StringRef(\"json_target\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"ingest\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"set-parse\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(setCount.Json),\n\t\t\t\tpulumi.String(parseStringSource.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorSetArgs;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorJsonArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // You can provide the ingest pipeline processors as plain JSON objects.\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"my_ingest_pipeline\")\n            .description(\"My first ingest pipeline managed by Terraform\")\n            .processors(            \n                serializeJson(\n                    jsonObject(\n                        jsonProperty(\"set\", jsonObject(\n                            jsonProperty(\"description\", \"My set processor description\"),\n                            jsonProperty(\"field\", \"_meta\"),\n                            jsonProperty(\"value\", \"indexed\")\n                        ))\n                    )),\n                \"\"\"\n    {\\\"json\\\": {\n      \\\"field\\\": \\\"data\\\",\n      \\\"target_field\\\": \\\"parsed_data\\\"\n    }}\n                \"\"\")\n            .build());\n\n        // Or you can use the provided data sources to create the processor data sources.\n        final var setCount = ElasticstackFunctions.getElasticsearchIngestProcessorSet(GetElasticsearchIngestProcessorSetArgs.builder()\n            .field(\"count\")\n            .value(\"1\")\n            .build());\n\n        final var parseStringSource = ElasticstackFunctions.getElasticsearchIngestProcessorJson(GetElasticsearchIngestProcessorJsonArgs.builder()\n            .field(\"string_source\")\n            .targetField(\"json_target\")\n            .build());\n\n        var ingest = new ElasticsearchIngestPipeline(\"ingest\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"set-parse\")\n            .processors(            \n                setCount.json(),\n                parseStringSource.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # You can provide the ingest pipeline processors as plain JSON objects.\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: my_ingest_pipeline\n      description: My first ingest pipeline managed by Terraform\n      processors:\n        - fn::toJSON:\n            set:\n              description: My set processor description\n              field: _meta\n              value: indexed\n        - |2\n              {\\\"json\\\": {\n                \\\"field\\\": \\\"data\\\",\n                \\\"target_field\\\": \\\"parsed_data\\\"\n              }}\n  ingest:\n    type: elasticstack:ElasticsearchIngestPipeline\n    properties:\n      name: set-parse\n      processors:\n        - ${setCount.json}\n        - ${parseStringSource.json}\nvariables:\n  # Or you can use the provided data sources to create the processor data sources.\n  setCount:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorSet\n      arguments:\n        field: count\n        value: 1\n  parseStringSource:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorJson\n      arguments:\n        field: string_source\n        targetField: json_target\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchIngestPipeline:ElasticsearchIngestPipeline my_ingest_pipeline \u003ccluster_uuid\u003e/\u003cingest pipeline name\u003e\n```\n\n","properties":{"description":{"type":"string","description":"Description of the ingest pipeline.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIngestPipelineElasticsearchConnection:ElasticsearchIngestPipelineElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"metadata":{"type":"string","description":"Optional user metadata about the index template.\n"},"name":{"type":"string","description":"The name of the ingest pipeline.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Processors to run immediately after a processor failure. Each processor supports a processor-level \u003cspan pulumi-lang-nodejs=\"`onFailure`\" pulumi-lang-dotnet=\"`OnFailure`\" pulumi-lang-go=\"`onFailure`\" pulumi-lang-python=\"`on_failure`\" pulumi-lang-yaml=\"`onFailure`\" pulumi-lang-java=\"`onFailure`\"\u003e`on_failure`\u003c/span\u003e value. If a processor without an \u003cspan pulumi-lang-nodejs=\"`onFailure`\" pulumi-lang-dotnet=\"`OnFailure`\" pulumi-lang-go=\"`onFailure`\" pulumi-lang-python=\"`on_failure`\" pulumi-lang-yaml=\"`onFailure`\" pulumi-lang-java=\"`onFailure`\"\u003e`on_failure`\u003c/span\u003e value fails, Elasticsearch uses this pipeline-level parameter as a fallback. The processors in this parameter run sequentially in the order specified. Elasticsearch will not attempt to run the pipeline’s remaining processors. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/processors.html. Each record must be a valid JSON document\n"},"processors":{"type":"array","items":{"type":"string"},"description":"Processors used to perform transformations on documents before indexing. Processors run sequentially in the order specified. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/processors.html. Each record must be a valid JSON document.\n"}},"type":"object","required":["name","processors"],"inputProperties":{"description":{"type":"string","description":"Description of the ingest pipeline.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIngestPipelineElasticsearchConnection:ElasticsearchIngestPipelineElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"metadata":{"type":"string","description":"Optional user metadata about the index template.\n"},"name":{"type":"string","description":"The name of the ingest pipeline.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Processors to run immediately after a processor failure. Each processor supports a processor-level \u003cspan pulumi-lang-nodejs=\"`onFailure`\" pulumi-lang-dotnet=\"`OnFailure`\" pulumi-lang-go=\"`onFailure`\" pulumi-lang-python=\"`on_failure`\" pulumi-lang-yaml=\"`onFailure`\" pulumi-lang-java=\"`onFailure`\"\u003e`on_failure`\u003c/span\u003e value. If a processor without an \u003cspan pulumi-lang-nodejs=\"`onFailure`\" pulumi-lang-dotnet=\"`OnFailure`\" pulumi-lang-go=\"`onFailure`\" pulumi-lang-python=\"`on_failure`\" pulumi-lang-yaml=\"`onFailure`\" pulumi-lang-java=\"`onFailure`\"\u003e`on_failure`\u003c/span\u003e value fails, Elasticsearch uses this pipeline-level parameter as a fallback. The processors in this parameter run sequentially in the order specified. Elasticsearch will not attempt to run the pipeline’s remaining processors. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/processors.html. Each record must be a valid JSON document\n"},"processors":{"type":"array","items":{"type":"string"},"description":"Processors used to perform transformations on documents before indexing. Processors run sequentially in the order specified. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/processors.html. Each record must be a valid JSON document.\n"}},"requiredInputs":["processors"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIngestPipeline resources.\n","properties":{"description":{"type":"string","description":"Description of the ingest pipeline.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchIngestPipelineElasticsearchConnection:ElasticsearchIngestPipelineElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"metadata":{"type":"string","description":"Optional user metadata about the index template.\n"},"name":{"type":"string","description":"The name of the ingest pipeline.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Processors to run immediately after a processor failure. Each processor supports a processor-level \u003cspan pulumi-lang-nodejs=\"`onFailure`\" pulumi-lang-dotnet=\"`OnFailure`\" pulumi-lang-go=\"`onFailure`\" pulumi-lang-python=\"`on_failure`\" pulumi-lang-yaml=\"`onFailure`\" pulumi-lang-java=\"`onFailure`\"\u003e`on_failure`\u003c/span\u003e value. If a processor without an \u003cspan pulumi-lang-nodejs=\"`onFailure`\" pulumi-lang-dotnet=\"`OnFailure`\" pulumi-lang-go=\"`onFailure`\" pulumi-lang-python=\"`on_failure`\" pulumi-lang-yaml=\"`onFailure`\" pulumi-lang-java=\"`onFailure`\"\u003e`on_failure`\u003c/span\u003e value fails, Elasticsearch uses this pipeline-level parameter as a fallback. The processors in this parameter run sequentially in the order specified. Elasticsearch will not attempt to run the pipeline’s remaining processors. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/processors.html. Each record must be a valid JSON document\n"},"processors":{"type":"array","items":{"type":"string"},"description":"Processors used to perform transformations on documents before indexing. Processors run sequentially in the order specified. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/processors.html. Each record must be a valid JSON document.\n"}},"type":"object"}},"elasticstack:index/elasticsearchLogstashPipeline:ElasticsearchLogstashPipeline":{"description":"Manage Logstash Pipelines via Centralized Pipeline Management. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/logstash-apis.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.ElasticsearchLogstashPipeline(\"example\", {\n    pipelineId: \"test_pipeline\",\n    description: \"This is an example pipeline\",\n    pipeline: `input{}\nfilter{}\noutput{}\n`,\n    pipelineMetadata: JSON.stringify({\n        type: \"logstash_pipeline\",\n        version: 1,\n    }),\n    pipelineBatchDelay: 50,\n    pipelineBatchSize: 125,\n    pipelineEcsCompatibility: \"disabled\",\n    pipelineOrdered: \"auto\",\n    pipelinePluginClassloaders: false,\n    pipelineUnsafeShutdown: false,\n    pipelineWorkers: 1,\n    queueCheckpointAcks: 1024,\n    queueCheckpointRetry: true,\n    queueCheckpointWrites: 1024,\n    queueDrain: false,\n    queueMaxBytes: \"1gb\",\n    queueMaxEvents: 0,\n    queuePageCapacity: \"64mb\",\n    queueType: \"persisted\",\n});\nexport const pipeline = example.pipelineId;\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.ElasticsearchLogstashPipeline(\"example\",\n    pipeline_id=\"test_pipeline\",\n    description=\"This is an example pipeline\",\n    pipeline=\"\"\"input{}\nfilter{}\noutput{}\n\"\"\",\n    pipeline_metadata=json.dumps({\n        \"type\": \"logstash_pipeline\",\n        \"version\": 1,\n    }),\n    pipeline_batch_delay=50,\n    pipeline_batch_size=125,\n    pipeline_ecs_compatibility=\"disabled\",\n    pipeline_ordered=\"auto\",\n    pipeline_plugin_classloaders=False,\n    pipeline_unsafe_shutdown=False,\n    pipeline_workers=1,\n    queue_checkpoint_acks=1024,\n    queue_checkpoint_retry=True,\n    queue_checkpoint_writes=1024,\n    queue_drain=False,\n    queue_max_bytes=\"1gb\",\n    queue_max_events=0,\n    queue_page_capacity=\"64mb\",\n    queue_type=\"persisted\")\npulumi.export(\"pipeline\", example.pipeline_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.ElasticsearchLogstashPipeline(\"example\", new()\n    {\n        PipelineId = \"test_pipeline\",\n        Description = \"This is an example pipeline\",\n        Pipeline = @\"input{}\nfilter{}\noutput{}\n\",\n        PipelineMetadata = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"type\"] = \"logstash_pipeline\",\n            [\"version\"] = 1,\n        }),\n        PipelineBatchDelay = 50,\n        PipelineBatchSize = 125,\n        PipelineEcsCompatibility = \"disabled\",\n        PipelineOrdered = \"auto\",\n        PipelinePluginClassloaders = false,\n        PipelineUnsafeShutdown = false,\n        PipelineWorkers = 1,\n        QueueCheckpointAcks = 1024,\n        QueueCheckpointRetry = true,\n        QueueCheckpointWrites = 1024,\n        QueueDrain = false,\n        QueueMaxBytes = \"1gb\",\n        QueueMaxEvents = 0,\n        QueuePageCapacity = \"64mb\",\n        QueueType = \"persisted\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"pipeline\"] = example.PipelineId,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"type\":    \"logstash_pipeline\",\n\t\t\t\"version\": 1,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texample, err := elasticstack.NewElasticsearchLogstashPipeline(ctx, \"example\", \u0026elasticstack.ElasticsearchLogstashPipelineArgs{\n\t\t\tPipelineId:                 pulumi.String(\"test_pipeline\"),\n\t\t\tDescription:                pulumi.String(\"This is an example pipeline\"),\n\t\t\tPipeline:                   pulumi.String(\"input{}\\nfilter{}\\noutput{}\\n\"),\n\t\t\tPipelineMetadata:           pulumi.String(json0),\n\t\t\tPipelineBatchDelay:         pulumi.Float64(50),\n\t\t\tPipelineBatchSize:          pulumi.Float64(125),\n\t\t\tPipelineEcsCompatibility:   pulumi.String(\"disabled\"),\n\t\t\tPipelineOrdered:            pulumi.String(\"auto\"),\n\t\t\tPipelinePluginClassloaders: pulumi.Bool(false),\n\t\t\tPipelineUnsafeShutdown:     pulumi.Bool(false),\n\t\t\tPipelineWorkers:            pulumi.Float64(1),\n\t\t\tQueueCheckpointAcks:        pulumi.Float64(1024),\n\t\t\tQueueCheckpointRetry:       pulumi.Bool(true),\n\t\t\tQueueCheckpointWrites:      pulumi.Float64(1024),\n\t\t\tQueueDrain:                 pulumi.Bool(false),\n\t\t\tQueueMaxBytes:              pulumi.String(\"1gb\"),\n\t\t\tQueueMaxEvents:             pulumi.Float64(0),\n\t\t\tQueuePageCapacity:          pulumi.String(\"64mb\"),\n\t\t\tQueueType:                  pulumi.String(\"persisted\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"pipeline\", example.PipelineId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchLogstashPipeline;\nimport com.pulumi.elasticstack.ElasticsearchLogstashPipelineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ElasticsearchLogstashPipeline(\"example\", ElasticsearchLogstashPipelineArgs.builder()\n            .pipelineId(\"test_pipeline\")\n            .description(\"This is an example pipeline\")\n            .pipeline(\"\"\"\ninput{}\nfilter{}\noutput{}\n            \"\"\")\n            .pipelineMetadata(serializeJson(\n                jsonObject(\n                    jsonProperty(\"type\", \"logstash_pipeline\"),\n                    jsonProperty(\"version\", 1)\n                )))\n            .pipelineBatchDelay(50.0)\n            .pipelineBatchSize(125.0)\n            .pipelineEcsCompatibility(\"disabled\")\n            .pipelineOrdered(\"auto\")\n            .pipelinePluginClassloaders(false)\n            .pipelineUnsafeShutdown(false)\n            .pipelineWorkers(1.0)\n            .queueCheckpointAcks(1024.0)\n            .queueCheckpointRetry(true)\n            .queueCheckpointWrites(1024.0)\n            .queueDrain(false)\n            .queueMaxBytes(\"1gb\")\n            .queueMaxEvents(0.0)\n            .queuePageCapacity(\"64mb\")\n            .queueType(\"persisted\")\n            .build());\n\n        ctx.export(\"pipeline\", example.pipelineId());\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:ElasticsearchLogstashPipeline\n    properties:\n      pipelineId: test_pipeline\n      description: This is an example pipeline\n      pipeline: |\n        input{}\n        filter{}\n        output{}\n      pipelineMetadata:\n        fn::toJSON:\n          type: logstash_pipeline\n          version: 1\n      pipelineBatchDelay: 50\n      pipelineBatchSize: 125\n      pipelineEcsCompatibility: disabled\n      pipelineOrdered: auto\n      pipelinePluginClassloaders: false\n      pipelineUnsafeShutdown: false\n      pipelineWorkers: 1\n      queueCheckpointAcks: 1024\n      queueCheckpointRetry: true\n      queueCheckpointWrites: 1024\n      queueDrain: false\n      queueMaxBytes: 1gb\n      queueMaxEvents: 0\n      queuePageCapacity: 64mb\n      queueType: persisted\noutputs:\n  pipeline: ${example.pipelineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchLogstashPipeline:ElasticsearchLogstashPipeline example \u003ccluster_uuid\u003e/\u003cpipeline ID\u003e\n```\n\n","properties":{"description":{"type":"string","description":"Description of the pipeline.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchLogstashPipelineElasticsearchConnection:ElasticsearchLogstashPipelineElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"lastModified":{"type":"string","description":"Date the pipeline was last updated.\n"},"pipeline":{"type":"string","description":"Configuration for the pipeline.\n"},"pipelineBatchDelay":{"type":"number","description":"Time in milliseconds to wait for each event before sending an undersized batch to pipeline workers.\n"},"pipelineBatchSize":{"type":"number","description":"The maximum number of events an individual worker thread collects before executing filters and outputs.\n"},"pipelineEcsCompatibility":{"type":"string","description":"Sets the pipeline default value for ecs_compatibility, a setting that is available to plugins that implement an ECS compatibility mode for use with the Elastic Common Schema.\n"},"pipelineId":{"type":"string","description":"Identifier for the pipeline.\n"},"pipelineMetadata":{"type":"string","description":"Optional JSON metadata about the pipeline.\n"},"pipelineOrdered":{"type":"string","description":"Set the pipeline event ordering.\n"},"pipelinePluginClassloaders":{"type":"boolean","description":"(Beta) Load Java plugins in independent classloaders to isolate their dependencies.\n"},"pipelineUnsafeShutdown":{"type":"boolean","description":"Forces Logstash to exit during shutdown even if there are still inflight events in memory.\n"},"pipelineWorkers":{"type":"number","description":"The number of parallel workers used to run the filter and output stages of the pipeline.\n"},"queueCheckpointAcks":{"type":"number","description":"The maximum number of ACKed events before forcing a checkpoint when persistent queues are enabled.\n"},"queueCheckpointRetry":{"type":"boolean","description":"When enabled, Logstash will retry four times per attempted checkpoint write for any checkpoint writes that fail. Any subsequent errors are not retried.\n"},"queueCheckpointWrites":{"type":"number","description":"The maximum number of written events before forcing a checkpoint when persistent queues are enabled.\n"},"queueDrain":{"type":"boolean","description":"When enabled, Logstash waits until the persistent queue is drained before shutting down.\n"},"queueMaxBytes":{"type":"string","description":"Units for the total capacity of the queue when persistent queues are enabled.\n"},"queueMaxEvents":{"type":"number","description":"The maximum number of unread events in the queue when persistent queues are enabled.\n"},"queuePageCapacity":{"type":"string","description":"The size of the page data files used when persistent queues are enabled. The queue data consists of append-only data files separated into pages.\n"},"queueType":{"type":"string","description":"The internal queueing model for event buffering. Options are memory for in-memory queueing, or persisted for disk-based acknowledged queueing.\n"},"username":{"type":"string","description":"User who last updated the pipeline.\n"}},"type":"object","required":["lastModified","pipeline","pipelineId"],"inputProperties":{"description":{"type":"string","description":"Description of the pipeline.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchLogstashPipelineElasticsearchConnection:ElasticsearchLogstashPipelineElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"pipeline":{"type":"string","description":"Configuration for the pipeline.\n"},"pipelineBatchDelay":{"type":"number","description":"Time in milliseconds to wait for each event before sending an undersized batch to pipeline workers.\n"},"pipelineBatchSize":{"type":"number","description":"The maximum number of events an individual worker thread collects before executing filters and outputs.\n"},"pipelineEcsCompatibility":{"type":"string","description":"Sets the pipeline default value for ecs_compatibility, a setting that is available to plugins that implement an ECS compatibility mode for use with the Elastic Common Schema.\n"},"pipelineId":{"type":"string","description":"Identifier for the pipeline.\n"},"pipelineMetadata":{"type":"string","description":"Optional JSON metadata about the pipeline.\n"},"pipelineOrdered":{"type":"string","description":"Set the pipeline event ordering.\n"},"pipelinePluginClassloaders":{"type":"boolean","description":"(Beta) Load Java plugins in independent classloaders to isolate their dependencies.\n"},"pipelineUnsafeShutdown":{"type":"boolean","description":"Forces Logstash to exit during shutdown even if there are still inflight events in memory.\n"},"pipelineWorkers":{"type":"number","description":"The number of parallel workers used to run the filter and output stages of the pipeline.\n"},"queueCheckpointAcks":{"type":"number","description":"The maximum number of ACKed events before forcing a checkpoint when persistent queues are enabled.\n"},"queueCheckpointRetry":{"type":"boolean","description":"When enabled, Logstash will retry four times per attempted checkpoint write for any checkpoint writes that fail. Any subsequent errors are not retried.\n"},"queueCheckpointWrites":{"type":"number","description":"The maximum number of written events before forcing a checkpoint when persistent queues are enabled.\n"},"queueDrain":{"type":"boolean","description":"When enabled, Logstash waits until the persistent queue is drained before shutting down.\n"},"queueMaxBytes":{"type":"string","description":"Units for the total capacity of the queue when persistent queues are enabled.\n"},"queueMaxEvents":{"type":"number","description":"The maximum number of unread events in the queue when persistent queues are enabled.\n"},"queuePageCapacity":{"type":"string","description":"The size of the page data files used when persistent queues are enabled. The queue data consists of append-only data files separated into pages.\n"},"queueType":{"type":"string","description":"The internal queueing model for event buffering. Options are memory for in-memory queueing, or persisted for disk-based acknowledged queueing.\n"},"username":{"type":"string","description":"User who last updated the pipeline.\n"}},"requiredInputs":["pipeline","pipelineId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchLogstashPipeline resources.\n","properties":{"description":{"type":"string","description":"Description of the pipeline.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchLogstashPipelineElasticsearchConnection:ElasticsearchLogstashPipelineElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"lastModified":{"type":"string","description":"Date the pipeline was last updated.\n"},"pipeline":{"type":"string","description":"Configuration for the pipeline.\n"},"pipelineBatchDelay":{"type":"number","description":"Time in milliseconds to wait for each event before sending an undersized batch to pipeline workers.\n"},"pipelineBatchSize":{"type":"number","description":"The maximum number of events an individual worker thread collects before executing filters and outputs.\n"},"pipelineEcsCompatibility":{"type":"string","description":"Sets the pipeline default value for ecs_compatibility, a setting that is available to plugins that implement an ECS compatibility mode for use with the Elastic Common Schema.\n"},"pipelineId":{"type":"string","description":"Identifier for the pipeline.\n"},"pipelineMetadata":{"type":"string","description":"Optional JSON metadata about the pipeline.\n"},"pipelineOrdered":{"type":"string","description":"Set the pipeline event ordering.\n"},"pipelinePluginClassloaders":{"type":"boolean","description":"(Beta) Load Java plugins in independent classloaders to isolate their dependencies.\n"},"pipelineUnsafeShutdown":{"type":"boolean","description":"Forces Logstash to exit during shutdown even if there are still inflight events in memory.\n"},"pipelineWorkers":{"type":"number","description":"The number of parallel workers used to run the filter and output stages of the pipeline.\n"},"queueCheckpointAcks":{"type":"number","description":"The maximum number of ACKed events before forcing a checkpoint when persistent queues are enabled.\n"},"queueCheckpointRetry":{"type":"boolean","description":"When enabled, Logstash will retry four times per attempted checkpoint write for any checkpoint writes that fail. Any subsequent errors are not retried.\n"},"queueCheckpointWrites":{"type":"number","description":"The maximum number of written events before forcing a checkpoint when persistent queues are enabled.\n"},"queueDrain":{"type":"boolean","description":"When enabled, Logstash waits until the persistent queue is drained before shutting down.\n"},"queueMaxBytes":{"type":"string","description":"Units for the total capacity of the queue when persistent queues are enabled.\n"},"queueMaxEvents":{"type":"number","description":"The maximum number of unread events in the queue when persistent queues are enabled.\n"},"queuePageCapacity":{"type":"string","description":"The size of the page data files used when persistent queues are enabled. The queue data consists of append-only data files separated into pages.\n"},"queueType":{"type":"string","description":"The internal queueing model for event buffering. Options are memory for in-memory queueing, or persisted for disk-based acknowledged queueing.\n"},"username":{"type":"string","description":"User who last updated the pipeline.\n"}},"type":"object"}},"elasticstack:index/elasticsearchMlAnomalyDetectionJob:ElasticsearchMlAnomalyDetectionJob":{"description":"Creates and manages Machine Learning anomaly detection jobs. See the [ML Job API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Basic anomaly detection job\nconst example = new elasticstack.ElasticsearchMlAnomalyDetectionJob(\"example\", {\n    jobId: \"example-anomaly-detector\",\n    description: \"Example anomaly detection job for monitoring web traffic\",\n    groups: [\n        \"web\",\n        \"monitoring\",\n    ],\n    analysisConfig: {\n        bucketSpan: \"15m\",\n        detectors: [\n            {\n                \"function\": \"count\",\n                detectorDescription: \"Count anomalies in web traffic\",\n            },\n            {\n                \"function\": \"mean\",\n                fieldName: \"response_time\",\n                detectorDescription: \"Mean response time anomalies\",\n            },\n        ],\n        influencers: [\n            \"client_ip\",\n            \"status_code\",\n        ],\n    },\n    dataDescription: {\n        timeField: \"@timestamp\",\n        timeFormat: \"epoch_ms\",\n    },\n    analysisLimits: {\n        modelMemoryLimit: \"100mb\",\n    },\n    modelPlotConfig: {\n        enabled: true,\n    },\n    modelSnapshotRetentionDays: 30,\n    resultsRetentionDays: 90,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Basic anomaly detection job\nexample = elasticstack.ElasticsearchMlAnomalyDetectionJob(\"example\",\n    job_id=\"example-anomaly-detector\",\n    description=\"Example anomaly detection job for monitoring web traffic\",\n    groups=[\n        \"web\",\n        \"monitoring\",\n    ],\n    analysis_config={\n        \"bucket_span\": \"15m\",\n        \"detectors\": [\n            {\n                \"function\": \"count\",\n                \"detector_description\": \"Count anomalies in web traffic\",\n            },\n            {\n                \"function\": \"mean\",\n                \"field_name\": \"response_time\",\n                \"detector_description\": \"Mean response time anomalies\",\n            },\n        ],\n        \"influencers\": [\n            \"client_ip\",\n            \"status_code\",\n        ],\n    },\n    data_description={\n        \"time_field\": \"@timestamp\",\n        \"time_format\": \"epoch_ms\",\n    },\n    analysis_limits={\n        \"model_memory_limit\": \"100mb\",\n    },\n    model_plot_config={\n        \"enabled\": True,\n    },\n    model_snapshot_retention_days=30,\n    results_retention_days=90)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic anomaly detection job\n    var example = new Elasticstack.ElasticsearchMlAnomalyDetectionJob(\"example\", new()\n    {\n        JobId = \"example-anomaly-detector\",\n        Description = \"Example anomaly detection job for monitoring web traffic\",\n        Groups = new[]\n        {\n            \"web\",\n            \"monitoring\",\n        },\n        AnalysisConfig = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs\n        {\n            BucketSpan = \"15m\",\n            Detectors = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs\n                {\n                    Function = \"count\",\n                    DetectorDescription = \"Count anomalies in web traffic\",\n                },\n                new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs\n                {\n                    Function = \"mean\",\n                    FieldName = \"response_time\",\n                    DetectorDescription = \"Mean response time anomalies\",\n                },\n            },\n            Influencers = new[]\n            {\n                \"client_ip\",\n                \"status_code\",\n            },\n        },\n        DataDescription = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs\n        {\n            TimeField = \"@timestamp\",\n            TimeFormat = \"epoch_ms\",\n        },\n        AnalysisLimits = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs\n        {\n            ModelMemoryLimit = \"100mb\",\n        },\n        ModelPlotConfig = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobModelPlotConfigArgs\n        {\n            Enabled = true,\n        },\n        ModelSnapshotRetentionDays = 30,\n        ResultsRetentionDays = 90,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic anomaly detection job\n\t\t_, err := elasticstack.NewElasticsearchMlAnomalyDetectionJob(ctx, \"example\", \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobArgs{\n\t\t\tJobId:       pulumi.String(\"example-anomaly-detector\"),\n\t\t\tDescription: pulumi.String(\"Example anomaly detection job for monitoring web traffic\"),\n\t\t\tGroups: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"web\"),\n\t\t\t\tpulumi.String(\"monitoring\"),\n\t\t\t},\n\t\t\tAnalysisConfig: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"15m\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs{\n\t\t\t\t\t\tFunction:            pulumi.String(\"count\"),\n\t\t\t\t\t\tDetectorDescription: pulumi.String(\"Count anomalies in web traffic\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs{\n\t\t\t\t\t\tFunction:            pulumi.String(\"mean\"),\n\t\t\t\t\t\tFieldName:           pulumi.String(\"response_time\"),\n\t\t\t\t\t\tDetectorDescription: pulumi.String(\"Mean response time anomalies\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfluencers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"client_ip\"),\n\t\t\t\t\tpulumi.String(\"status_code\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDescription: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs{\n\t\t\t\tTimeField:  pulumi.String(\"@timestamp\"),\n\t\t\t\tTimeFormat: pulumi.String(\"epoch_ms\"),\n\t\t\t},\n\t\t\tAnalysisLimits: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs{\n\t\t\t\tModelMemoryLimit: pulumi.String(\"100mb\"),\n\t\t\t},\n\t\t\tModelPlotConfig: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobModelPlotConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tModelSnapshotRetentionDays: pulumi.Float64(30),\n\t\t\tResultsRetentionDays:       pulumi.Float64(90),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchMlAnomalyDetectionJob;\nimport com.pulumi.elasticstack.ElasticsearchMlAnomalyDetectionJobArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlAnomalyDetectionJobModelPlotConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic anomaly detection job\n        var example = new ElasticsearchMlAnomalyDetectionJob(\"example\", ElasticsearchMlAnomalyDetectionJobArgs.builder()\n            .jobId(\"example-anomaly-detector\")\n            .description(\"Example anomaly detection job for monitoring web traffic\")\n            .groups(            \n                \"web\",\n                \"monitoring\")\n            .analysisConfig(ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs.builder()\n                .bucketSpan(\"15m\")\n                .detectors(                \n                    ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs.builder()\n                        .function(\"count\")\n                        .detectorDescription(\"Count anomalies in web traffic\")\n                        .build(),\n                    ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs.builder()\n                        .function(\"mean\")\n                        .fieldName(\"response_time\")\n                        .detectorDescription(\"Mean response time anomalies\")\n                        .build())\n                .influencers(                \n                    \"client_ip\",\n                    \"status_code\")\n                .build())\n            .dataDescription(ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs.builder()\n                .timeField(\"@timestamp\")\n                .timeFormat(\"epoch_ms\")\n                .build())\n            .analysisLimits(ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs.builder()\n                .modelMemoryLimit(\"100mb\")\n                .build())\n            .modelPlotConfig(ElasticsearchMlAnomalyDetectionJobModelPlotConfigArgs.builder()\n                .enabled(true)\n                .build())\n            .modelSnapshotRetentionDays(30.0)\n            .resultsRetentionDays(90.0)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic anomaly detection job\n  example:\n    type: elasticstack:ElasticsearchMlAnomalyDetectionJob\n    properties:\n      jobId: example-anomaly-detector\n      description: Example anomaly detection job for monitoring web traffic\n      groups:\n        - web\n        - monitoring\n      analysisConfig:\n        bucketSpan: 15m\n        detectors:\n          - function: count\n            detectorDescription: Count anomalies in web traffic\n          - function: mean\n            fieldName: response_time\n            detectorDescription: Mean response time anomalies\n        influencers:\n          - client_ip\n          - status_code\n      dataDescription:\n        timeField: '@timestamp'\n        timeFormat: epoch_ms\n      analysisLimits:\n        modelMemoryLimit: 100mb\n      modelPlotConfig:\n        enabled: true\n      modelSnapshotRetentionDays: 30\n      resultsRetentionDays: 90\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"allowLazyOpen":{"type":"boolean","description":"Advanced configuration option. Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node.\n"},"analysisConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfig:ElasticsearchMlAnomalyDetectionJobAnalysisConfig","description":"Specifies how to analyze the data. After you create a job, you cannot change the analysis configuration; all the properties are informational.\n"},"analysisLimits":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisLimits:ElasticsearchMlAnomalyDetectionJobAnalysisLimits","description":"Limits can be applied for the resources required to hold the mathematical models in memory.\n"},"backgroundPersistInterval":{"type":"string","description":"Advanced configuration option. The time between each periodic persistence of the model.\n"},"createTime":{"type":"string","description":"The time the job was created.\n"},"customSettings":{"type":"string","description":"Advanced configuration option. Contains custom meta data about the job. For example, it can contain custom URL information.\n"},"dailyModelSnapshotRetentionAfterDays":{"type":"number","description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.\n"},"dataDescription":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobDataDescription:ElasticsearchMlAnomalyDetectionJobDataDescription","description":"Defines the format of the input data when you send data to the job by using the post data API.\n"},"description":{"type":"string","description":"A description of the job.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobElasticsearchConnection:ElasticsearchMlAnomalyDetectionJobElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"groups":{"type":"array","items":{"type":"string"},"description":"A set of job groups. A job can belong to no groups or many.\n"},"jobId":{"type":"string","description":"The identifier for the anomaly detection job. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.\n"},"jobType":{"type":"string","description":"Reserved for future use, currently set to anomaly_detector.\n"},"jobVersion":{"type":"string","description":"The version of Elasticsearch when the job was created.\n"},"modelPlotConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobModelPlotConfig:ElasticsearchMlAnomalyDetectionJobModelPlotConfig","description":"This advanced configuration option stores model information along with the results. It provides a more detailed view into anomaly detection.\n"},"modelSnapshotId":{"type":"string","description":"A numerical character string that uniquely identifies the model snapshot.\n"},"modelSnapshotRetentionDays":{"type":"number","description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.\n"},"renormalizationWindowDays":{"type":"number","description":"Advanced configuration option. The period over which adjustments to the score are applied, as new data is seen.\n"},"resultsIndexName":{"type":"string","description":"A text string that affects the name of the machine learning results index.\n"},"resultsRetentionDays":{"type":"number","description":"Advanced configuration option. The period of time (in days) that results are retained.\n"}},"type":"object","required":["allowLazyOpen","analysisConfig","analysisLimits","createTime","dailyModelSnapshotRetentionAfterDays","dataDescription","jobId","jobType","jobVersion","modelSnapshotId","modelSnapshotRetentionDays","resultsIndexName"],"inputProperties":{"allowLazyOpen":{"type":"boolean","description":"Advanced configuration option. Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node.\n"},"analysisConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfig:ElasticsearchMlAnomalyDetectionJobAnalysisConfig","description":"Specifies how to analyze the data. After you create a job, you cannot change the analysis configuration; all the properties are informational.\n"},"analysisLimits":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisLimits:ElasticsearchMlAnomalyDetectionJobAnalysisLimits","description":"Limits can be applied for the resources required to hold the mathematical models in memory.\n"},"backgroundPersistInterval":{"type":"string","description":"Advanced configuration option. The time between each periodic persistence of the model.\n"},"customSettings":{"type":"string","description":"Advanced configuration option. Contains custom meta data about the job. For example, it can contain custom URL information.\n"},"dailyModelSnapshotRetentionAfterDays":{"type":"number","description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.\n"},"dataDescription":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobDataDescription:ElasticsearchMlAnomalyDetectionJobDataDescription","description":"Defines the format of the input data when you send data to the job by using the post data API.\n"},"description":{"type":"string","description":"A description of the job.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobElasticsearchConnection:ElasticsearchMlAnomalyDetectionJobElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"groups":{"type":"array","items":{"type":"string"},"description":"A set of job groups. A job can belong to no groups or many.\n"},"jobId":{"type":"string","description":"The identifier for the anomaly detection job. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.\n"},"modelPlotConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobModelPlotConfig:ElasticsearchMlAnomalyDetectionJobModelPlotConfig","description":"This advanced configuration option stores model information along with the results. It provides a more detailed view into anomaly detection.\n"},"modelSnapshotRetentionDays":{"type":"number","description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.\n"},"renormalizationWindowDays":{"type":"number","description":"Advanced configuration option. The period over which adjustments to the score are applied, as new data is seen.\n"},"resultsIndexName":{"type":"string","description":"A text string that affects the name of the machine learning results index.\n"},"resultsRetentionDays":{"type":"number","description":"Advanced configuration option. The period of time (in days) that results are retained.\n"}},"requiredInputs":["analysisConfig","dataDescription","jobId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlAnomalyDetectionJob resources.\n","properties":{"allowLazyOpen":{"type":"boolean","description":"Advanced configuration option. Specifies whether this job can open when there is insufficient machine learning node capacity for it to be immediately assigned to a node.\n"},"analysisConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfig:ElasticsearchMlAnomalyDetectionJobAnalysisConfig","description":"Specifies how to analyze the data. After you create a job, you cannot change the analysis configuration; all the properties are informational.\n"},"analysisLimits":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisLimits:ElasticsearchMlAnomalyDetectionJobAnalysisLimits","description":"Limits can be applied for the resources required to hold the mathematical models in memory.\n"},"backgroundPersistInterval":{"type":"string","description":"Advanced configuration option. The time between each periodic persistence of the model.\n"},"createTime":{"type":"string","description":"The time the job was created.\n"},"customSettings":{"type":"string","description":"Advanced configuration option. Contains custom meta data about the job. For example, it can contain custom URL information.\n"},"dailyModelSnapshotRetentionAfterDays":{"type":"number","description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.\n"},"dataDescription":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobDataDescription:ElasticsearchMlAnomalyDetectionJobDataDescription","description":"Defines the format of the input data when you send data to the job by using the post data API.\n"},"description":{"type":"string","description":"A description of the job.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobElasticsearchConnection:ElasticsearchMlAnomalyDetectionJobElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"groups":{"type":"array","items":{"type":"string"},"description":"A set of job groups. A job can belong to no groups or many.\n"},"jobId":{"type":"string","description":"The identifier for the anomaly detection job. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.\n"},"jobType":{"type":"string","description":"Reserved for future use, currently set to anomaly_detector.\n"},"jobVersion":{"type":"string","description":"The version of Elasticsearch when the job was created.\n"},"modelPlotConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobModelPlotConfig:ElasticsearchMlAnomalyDetectionJobModelPlotConfig","description":"This advanced configuration option stores model information along with the results. It provides a more detailed view into anomaly detection.\n"},"modelSnapshotId":{"type":"string","description":"A numerical character string that uniquely identifies the model snapshot.\n"},"modelSnapshotRetentionDays":{"type":"number","description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.\n"},"renormalizationWindowDays":{"type":"number","description":"Advanced configuration option. The period over which adjustments to the score are applied, as new data is seen.\n"},"resultsIndexName":{"type":"string","description":"A text string that affects the name of the machine learning results index.\n"},"resultsRetentionDays":{"type":"number","description":"Advanced configuration option. The period of time (in days) that results are retained.\n"}},"type":"object"}},"elasticstack:index/elasticsearchMlDatafeed:ElasticsearchMlDatafeed":{"description":"Creates and manages Machine Learning datafeeds. Datafeeds retrieve data from Elasticsearch for analysis by an anomaly detection job. Each anomaly detection job can have only one associated datafeed. See the [ML Datafeed API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-datafeed.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Required ML Job for the datafeed\nconst example = new elasticstack.index.ElasticsearchMlAnomalyDetector(\"example\", {\n    jobId: \"example-anomaly-job\",\n    description: \"Example anomaly detection job\",\n    analysisConfig: [{\n        bucketSpan: \"15m\",\n        detectors: [{\n            \"function\": \"count\",\n        }],\n    }],\n    dataDescription: [{\n        timeField: \"@timestamp\",\n        timeFormat: \"epoch_ms\",\n    }],\n});\n// Basic ML Datafeed\nconst basic = new elasticstack.ElasticsearchMlDatafeed(\"basic\", {\n    datafeedId: \"my-basic-datafeed\",\n    jobId: example.jobId,\n    indices: [\"log-data-*\"],\n    query: JSON.stringify({\n        match_all: {},\n    }),\n});\n// Comprehensive ML Datafeed with all options\nconst comprehensive = new elasticstack.ElasticsearchMlDatafeed(\"comprehensive\", {\n    datafeedId: \"my-comprehensive-datafeed\",\n    jobId: example.jobId,\n    indices: [\n        \"app-logs-*\",\n        \"system-logs-*\",\n    ],\n    query: JSON.stringify({\n        bool: {\n            must: [\n                {\n                    range: {\n                        \"@timestamp\": {\n                            gte: \"now-1h\",\n                        },\n                    },\n                },\n                {\n                    term: {\n                        status: \"error\",\n                    },\n                },\n            ],\n        },\n    }),\n    scrollSize: 1000,\n    frequency: \"30s\",\n    queryDelay: \"60s\",\n    maxEmptySearches: 10,\n    chunkingConfig: {\n        mode: \"manual\",\n        timeSpan: \"30m\",\n    },\n    delayedDataCheckConfig: {\n        enabled: true,\n        checkWindow: \"2h\",\n    },\n    indicesOptions: {\n        ignoreUnavailable: true,\n        allowNoIndices: false,\n        expandWildcards: [\n            \"open\",\n            \"closed\",\n        ],\n    },\n    runtimeMappings: JSON.stringify({\n        hour_of_day: {\n            type: \"long\",\n            script: {\n                source: \"emit(doc['@timestamp'].value.getHour())\",\n            },\n        },\n    }),\n    scriptFields: JSON.stringify({\n        my_script_field: {\n            script: {\n                source: \"_score * doc['my_field'].value\",\n            },\n        },\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# Required ML Job for the datafeed\nexample = elasticstack.index.ElasticsearchMlAnomalyDetector(\"example\",\n    job_id=example-anomaly-job,\n    description=Example anomaly detection job,\n    analysis_config=[{\n        bucketSpan: 15m,\n        detectors: [{\n            function: count,\n        }],\n    }],\n    data_description=[{\n        timeField: @timestamp,\n        timeFormat: epoch_ms,\n    }])\n# Basic ML Datafeed\nbasic = elasticstack.ElasticsearchMlDatafeed(\"basic\",\n    datafeed_id=\"my-basic-datafeed\",\n    job_id=example[\"jobId\"],\n    indices=[\"log-data-*\"],\n    query=json.dumps({\n        \"match_all\": {},\n    }))\n# Comprehensive ML Datafeed with all options\ncomprehensive = elasticstack.ElasticsearchMlDatafeed(\"comprehensive\",\n    datafeed_id=\"my-comprehensive-datafeed\",\n    job_id=example[\"jobId\"],\n    indices=[\n        \"app-logs-*\",\n        \"system-logs-*\",\n    ],\n    query=json.dumps({\n        \"bool\": {\n            \"must\": [\n                {\n                    \"range\": {\n                        \"@timestamp\": {\n                            \"gte\": \"now-1h\",\n                        },\n                    },\n                },\n                {\n                    \"term\": {\n                        \"status\": \"error\",\n                    },\n                },\n            ],\n        },\n    }),\n    scroll_size=1000,\n    frequency=\"30s\",\n    query_delay=\"60s\",\n    max_empty_searches=10,\n    chunking_config={\n        \"mode\": \"manual\",\n        \"time_span\": \"30m\",\n    },\n    delayed_data_check_config={\n        \"enabled\": True,\n        \"check_window\": \"2h\",\n    },\n    indices_options={\n        \"ignore_unavailable\": True,\n        \"allow_no_indices\": False,\n        \"expand_wildcards\": [\n            \"open\",\n            \"closed\",\n        ],\n    },\n    runtime_mappings=json.dumps({\n        \"hour_of_day\": {\n            \"type\": \"long\",\n            \"script\": {\n                \"source\": \"emit(doc['@timestamp'].value.getHour())\",\n            },\n        },\n    }),\n    script_fields=json.dumps({\n        \"my_script_field\": {\n            \"script\": {\n                \"source\": \"_score * doc['my_field'].value\",\n            },\n        },\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Required ML Job for the datafeed\n    var example = new Elasticstack.Index.ElasticsearchMlAnomalyDetector(\"example\", new()\n    {\n        JobId = \"example-anomaly-job\",\n        Description = \"Example anomaly detection job\",\n        AnalysisConfig = new[]\n        {\n            \n            {\n                { \"bucketSpan\", \"15m\" },\n                { \"detectors\", new[]\n                {\n                    \n                    {\n                        { \"function\", \"count\" },\n                    },\n                } },\n            },\n        },\n        DataDescription = new[]\n        {\n            \n            {\n                { \"timeField\", \"@timestamp\" },\n                { \"timeFormat\", \"epoch_ms\" },\n            },\n        },\n    });\n\n    // Basic ML Datafeed\n    var basic = new Elasticstack.ElasticsearchMlDatafeed(\"basic\", new()\n    {\n        DatafeedId = \"my-basic-datafeed\",\n        JobId = example.JobId,\n        Indices = new[]\n        {\n            \"log-data-*\",\n        },\n        Query = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"match_all\"] = new Dictionary\u003cstring, object?\u003e\n            {\n            },\n        }),\n    });\n\n    // Comprehensive ML Datafeed with all options\n    var comprehensive = new Elasticstack.ElasticsearchMlDatafeed(\"comprehensive\", new()\n    {\n        DatafeedId = \"my-comprehensive-datafeed\",\n        JobId = example.JobId,\n        Indices = new[]\n        {\n            \"app-logs-*\",\n            \"system-logs-*\",\n        },\n        Query = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"bool\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"must\"] = new[]\n                {\n                    new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"range\"] = new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"@timestamp\"] = new Dictionary\u003cstring, object?\u003e\n                            {\n                                [\"gte\"] = \"now-1h\",\n                            },\n                        },\n                    },\n                    new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"term\"] = new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"status\"] = \"error\",\n                        },\n                    },\n                },\n            },\n        }),\n        ScrollSize = 1000,\n        Frequency = \"30s\",\n        QueryDelay = \"60s\",\n        MaxEmptySearches = 10,\n        ChunkingConfig = new Elasticstack.Inputs.ElasticsearchMlDatafeedChunkingConfigArgs\n        {\n            Mode = \"manual\",\n            TimeSpan = \"30m\",\n        },\n        DelayedDataCheckConfig = new Elasticstack.Inputs.ElasticsearchMlDatafeedDelayedDataCheckConfigArgs\n        {\n            Enabled = true,\n            CheckWindow = \"2h\",\n        },\n        IndicesOptions = new Elasticstack.Inputs.ElasticsearchMlDatafeedIndicesOptionsArgs\n        {\n            IgnoreUnavailable = true,\n            AllowNoIndices = false,\n            ExpandWildcards = new[]\n            {\n                \"open\",\n                \"closed\",\n            },\n        },\n        RuntimeMappings = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"hour_of_day\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"type\"] = \"long\",\n                [\"script\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"source\"] = \"emit(doc['@timestamp'].value.getHour())\",\n                },\n            },\n        }),\n        ScriptFields = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"my_script_field\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"script\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"source\"] = \"_score * doc['my_field'].value\",\n                },\n            },\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Required ML Job for the datafeed\n\t\texample, err := elasticstack.NewElasticsearchMlAnomalyDetector(ctx, \"example\", \u0026elasticstack.ElasticsearchMlAnomalyDetectorArgs{\n\t\t\tJobId:       \"example-anomaly-job\",\n\t\t\tDescription: \"Example anomaly detection job\",\n\t\t\tAnalysisConfig: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"bucketSpan\": \"15m\",\n\t\t\t\t\t\"detectors\": []map[string]interface{}{\n\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\"function\": \"count\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDescription: []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"timeField\":  \"@timestamp\",\n\t\t\t\t\t\"timeFormat\": \"epoch_ms\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"match_all\": map[string]interface{}{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// Basic ML Datafeed\n\t\t_, err = elasticstack.NewElasticsearchMlDatafeed(ctx, \"basic\", \u0026elasticstack.ElasticsearchMlDatafeedArgs{\n\t\t\tDatafeedId: pulumi.String(\"my-basic-datafeed\"),\n\t\t\tJobId:      example.JobId,\n\t\t\tIndices: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"log-data-*\"),\n\t\t\t},\n\t\t\tQuery: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"bool\": map[string]interface{}{\n\t\t\t\t\"must\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"range\": map[string]interface{}{\n\t\t\t\t\t\t\t\"@timestamp\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"gte\": \"now-1h\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"term\": map[string]interface{}{\n\t\t\t\t\t\t\t\"status\": \"error\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal(map[string]interface{}{\n\t\t\t\"hour_of_day\": map[string]interface{}{\n\t\t\t\t\"type\": \"long\",\n\t\t\t\t\"script\": map[string]interface{}{\n\t\t\t\t\t\"source\": \"emit(doc['@timestamp'].value.getHour())\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(map[string]interface{}{\n\t\t\t\"my_script_field\": map[string]interface{}{\n\t\t\t\t\"script\": map[string]interface{}{\n\t\t\t\t\t\"source\": \"_score * doc['my_field'].value\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\t// Comprehensive ML Datafeed with all options\n\t\t_, err = elasticstack.NewElasticsearchMlDatafeed(ctx, \"comprehensive\", \u0026elasticstack.ElasticsearchMlDatafeedArgs{\n\t\t\tDatafeedId: pulumi.String(\"my-comprehensive-datafeed\"),\n\t\t\tJobId:      example.JobId,\n\t\t\tIndices: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"app-logs-*\"),\n\t\t\t\tpulumi.String(\"system-logs-*\"),\n\t\t\t},\n\t\t\tQuery:            pulumi.String(json1),\n\t\t\tScrollSize:       pulumi.Float64(1000),\n\t\t\tFrequency:        pulumi.String(\"30s\"),\n\t\t\tQueryDelay:       pulumi.String(\"60s\"),\n\t\t\tMaxEmptySearches: pulumi.Float64(10),\n\t\t\tChunkingConfig: \u0026elasticstack.ElasticsearchMlDatafeedChunkingConfigArgs{\n\t\t\t\tMode:     pulumi.String(\"manual\"),\n\t\t\t\tTimeSpan: pulumi.String(\"30m\"),\n\t\t\t},\n\t\t\tDelayedDataCheckConfig: \u0026elasticstack.ElasticsearchMlDatafeedDelayedDataCheckConfigArgs{\n\t\t\t\tEnabled:     pulumi.Bool(true),\n\t\t\t\tCheckWindow: pulumi.String(\"2h\"),\n\t\t\t},\n\t\t\tIndicesOptions: \u0026elasticstack.ElasticsearchMlDatafeedIndicesOptionsArgs{\n\t\t\t\tIgnoreUnavailable: pulumi.Bool(true),\n\t\t\t\tAllowNoIndices:    pulumi.Bool(false),\n\t\t\t\tExpandWildcards: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"open\"),\n\t\t\t\t\tpulumi.String(\"closed\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRuntimeMappings: pulumi.String(json2),\n\t\t\tScriptFields:    pulumi.String(json3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchMlAnomalyDetector;\nimport com.pulumi.elasticstack.ElasticsearchMlAnomalyDetectorArgs;\nimport com.pulumi.elasticstack.ElasticsearchMlDatafeed;\nimport com.pulumi.elasticstack.ElasticsearchMlDatafeedArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlDatafeedChunkingConfigArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlDatafeedDelayedDataCheckConfigArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlDatafeedIndicesOptionsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Required ML Job for the datafeed\n        var example = new ElasticsearchMlAnomalyDetector(\"example\", ElasticsearchMlAnomalyDetectorArgs.builder()\n            .jobId(\"example-anomaly-job\")\n            .description(\"Example anomaly detection job\")\n            .analysisConfig(List.of(Map.ofEntries(\n                Map.entry(\"bucketSpan\", \"15m\"),\n                Map.entry(\"detectors\", List.of(Map.of(\"function\", \"count\")))\n            )))\n            .dataDescription(List.of(Map.ofEntries(\n                Map.entry(\"timeField\", \"@timestamp\"),\n                Map.entry(\"timeFormat\", \"epoch_ms\")\n            )))\n            .build());\n\n        // Basic ML Datafeed\n        var basic = new ElasticsearchMlDatafeed(\"basic\", ElasticsearchMlDatafeedArgs.builder()\n            .datafeedId(\"my-basic-datafeed\")\n            .jobId(example.jobId())\n            .indices(\"log-data-*\")\n            .query(serializeJson(\n                jsonObject(\n                    jsonProperty(\"match_all\", jsonObject(\n\n                    ))\n                )))\n            .build());\n\n        // Comprehensive ML Datafeed with all options\n        var comprehensive = new ElasticsearchMlDatafeed(\"comprehensive\", ElasticsearchMlDatafeedArgs.builder()\n            .datafeedId(\"my-comprehensive-datafeed\")\n            .jobId(example.jobId())\n            .indices(            \n                \"app-logs-*\",\n                \"system-logs-*\")\n            .query(serializeJson(\n                jsonObject(\n                    jsonProperty(\"bool\", jsonObject(\n                        jsonProperty(\"must\", jsonArray(\n                            jsonObject(\n                                jsonProperty(\"range\", jsonObject(\n                                    jsonProperty(\"@timestamp\", jsonObject(\n                                        jsonProperty(\"gte\", \"now-1h\")\n                                    ))\n                                ))\n                            ), \n                            jsonObject(\n                                jsonProperty(\"term\", jsonObject(\n                                    jsonProperty(\"status\", \"error\")\n                                ))\n                            )\n                        ))\n                    ))\n                )))\n            .scrollSize(1000.0)\n            .frequency(\"30s\")\n            .queryDelay(\"60s\")\n            .maxEmptySearches(10.0)\n            .chunkingConfig(ElasticsearchMlDatafeedChunkingConfigArgs.builder()\n                .mode(\"manual\")\n                .timeSpan(\"30m\")\n                .build())\n            .delayedDataCheckConfig(ElasticsearchMlDatafeedDelayedDataCheckConfigArgs.builder()\n                .enabled(true)\n                .checkWindow(\"2h\")\n                .build())\n            .indicesOptions(ElasticsearchMlDatafeedIndicesOptionsArgs.builder()\n                .ignoreUnavailable(true)\n                .allowNoIndices(false)\n                .expandWildcards(                \n                    \"open\",\n                    \"closed\")\n                .build())\n            .runtimeMappings(serializeJson(\n                jsonObject(\n                    jsonProperty(\"hour_of_day\", jsonObject(\n                        jsonProperty(\"type\", \"long\"),\n                        jsonProperty(\"script\", jsonObject(\n                            jsonProperty(\"source\", \"emit(doc['@timestamp'].value.getHour())\")\n                        ))\n                    ))\n                )))\n            .scriptFields(serializeJson(\n                jsonObject(\n                    jsonProperty(\"my_script_field\", jsonObject(\n                        jsonProperty(\"script\", jsonObject(\n                            jsonProperty(\"source\", \"_score * doc['my_field'].value\")\n                        ))\n                    ))\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic ML Datafeed\n  basic:\n    type: elasticstack:ElasticsearchMlDatafeed\n    properties:\n      datafeedId: my-basic-datafeed\n      jobId: ${example.jobId}\n      indices:\n        - log-data-*\n      query:\n        fn::toJSON:\n          match_all: {}\n  # Comprehensive ML Datafeed with all options\n  comprehensive:\n    type: elasticstack:ElasticsearchMlDatafeed\n    properties:\n      datafeedId: my-comprehensive-datafeed\n      jobId: ${example.jobId}\n      indices:\n        - app-logs-*\n        - system-logs-*\n      query:\n        fn::toJSON:\n          bool:\n            must:\n              - range:\n                  '@timestamp':\n                    gte: now-1h\n              - term:\n                  status: error\n      scrollSize: 1000\n      frequency: 30s\n      queryDelay: 60s\n      maxEmptySearches: 10\n      chunkingConfig:\n        mode: manual\n        timeSpan: 30m\n      delayedDataCheckConfig:\n        enabled: true\n        checkWindow: 2h\n      indicesOptions:\n        ignoreUnavailable: true\n        allowNoIndices: false\n        expandWildcards:\n          - open\n          - closed\n      runtimeMappings:\n        fn::toJSON:\n          hour_of_day:\n            type: long\n            script:\n              source: emit(doc['@timestamp'].value.getHour())\n      scriptFields:\n        fn::toJSON:\n          my_script_field:\n            script:\n              source: _score * doc['my_field'].value\n  # Required ML Job for the datafeed\n  example:\n    type: elasticstack:ElasticsearchMlAnomalyDetector\n    properties:\n      jobId: example-anomaly-job\n      description: Example anomaly detection job\n      analysisConfig:\n        - bucketSpan: 15m\n          detectors:\n            - function: count\n      dataDescription:\n        - timeField: '@timestamp'\n          timeFormat: epoch_ms\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"aggregations":{"type":"string","description":"If set, the datafeed performs aggregation searches. Support for aggregations is limited and should be used only with low cardinality data. This should be a JSON object representing the aggregations to be performed.\n"},"chunkingConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedChunkingConfig:ElasticsearchMlDatafeedChunkingConfig","description":"Datafeeds might search over long time periods, for several months or years. This search is split into time chunks in order to ensure the load on Elasticsearch is managed. Chunking configuration controls how the size of these time chunks are calculated; it is an advanced configuration option.\n"},"datafeedId":{"type":"string","description":"A numerical character string that uniquely identifies the datafeed. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.\n"},"delayedDataCheckConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedDelayedDataCheckConfig:ElasticsearchMlDatafeedDelayedDataCheckConfig","description":"Specifies whether the datafeed checks for missing data and the size of the window. The datafeed can optionally search over indices that have already been read in an effort to determine whether any data has subsequently been added to the index. If missing data is found, it is a good indication that the \u003cspan pulumi-lang-nodejs=\"`queryDelay`\" pulumi-lang-dotnet=\"`QueryDelay`\" pulumi-lang-go=\"`queryDelay`\" pulumi-lang-python=\"`query_delay`\" pulumi-lang-yaml=\"`queryDelay`\" pulumi-lang-java=\"`queryDelay`\"\u003e`query_delay`\u003c/span\u003e is set too low and the data is being indexed after the datafeed has passed that moment in time. This check runs only on real-time datafeeds.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedElasticsearchConnection:ElasticsearchMlDatafeedElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"frequency":{"type":"string","description":"The interval at which scheduled queries are made while the datafeed runs in real time. The default value is either the bucket span for short bucket spans, or, for longer bucket spans, a sensible fraction of the bucket span. When \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e is shorter than the bucket span, interim results for the last (partial) bucket are written then eventually overwritten by the full bucket results. If the datafeed uses aggregations, this value must be divisible by the interval of the date histogram aggregation.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the machine learning nodes must have the \u003cspan pulumi-lang-nodejs=\"`remoteClusterClient`\" pulumi-lang-dotnet=\"`RemoteClusterClient`\" pulumi-lang-go=\"`remoteClusterClient`\" pulumi-lang-python=\"`remote_cluster_client`\" pulumi-lang-yaml=\"`remoteClusterClient`\" pulumi-lang-java=\"`remoteClusterClient`\"\u003e`remote_cluster_client`\u003c/span\u003e role.\n"},"indicesOptions":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedIndicesOptions:ElasticsearchMlDatafeedIndicesOptions","description":"Specifies index expansion options that are used during search.\n"},"jobId":{"type":"string","description":"Identifier for the anomaly detection job. The job must exist before creating the datafeed.\n"},"maxEmptySearches":{"type":"number","description":"If a real-time datafeed has never seen any data (including during any initial training period), it automatically stops and closes the associated job after this many real-time searches return no documents. In other words, it stops after \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e times \u003cspan pulumi-lang-nodejs=\"`maxEmptySearches`\" pulumi-lang-dotnet=\"`MaxEmptySearches`\" pulumi-lang-go=\"`maxEmptySearches`\" pulumi-lang-python=\"`max_empty_searches`\" pulumi-lang-yaml=\"`maxEmptySearches`\" pulumi-lang-java=\"`maxEmptySearches`\"\u003e`max_empty_searches`\u003c/span\u003e of real-time operation. If not set, a datafeed with no end time that sees no data remains started until it is explicitly stopped.\n"},"query":{"type":"string","description":"The Elasticsearch query domain-specific language (DSL). This value corresponds to the query object in an Elasticsearch search POST body. All the options that are supported by Elasticsearch can be used, as this object is passed verbatim to Elasticsearch. By default uses `{\u003cspan pulumi-lang-nodejs=\"\"matchAll\"\" pulumi-lang-dotnet=\"\"MatchAll\"\" pulumi-lang-go=\"\"matchAll\"\" pulumi-lang-python=\"\"match_all\"\" pulumi-lang-yaml=\"\"matchAll\"\" pulumi-lang-java=\"\"matchAll\"\"\u003e\"match_all\"\u003c/span\u003e: {\"boost\": 1}}`.\n"},"queryDelay":{"type":"string","description":"The number of seconds behind real time that data is queried. For example, if data from 10:04 a.m. might not be searchable in Elasticsearch until 10:06 a.m., set this property to 120 seconds. The default value is randomly selected between \u003cspan pulumi-lang-nodejs=\"`60s`\" pulumi-lang-dotnet=\"`60s`\" pulumi-lang-go=\"`60s`\" pulumi-lang-python=\"`60s`\" pulumi-lang-yaml=\"`60s`\" pulumi-lang-java=\"`60s`\"\u003e`60s`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`120s`\" pulumi-lang-dotnet=\"`120s`\" pulumi-lang-go=\"`120s`\" pulumi-lang-python=\"`120s`\" pulumi-lang-yaml=\"`120s`\" pulumi-lang-java=\"`120s`\"\u003e`120s`\u003c/span\u003e. This randomness improves the query performance when there are multiple jobs running on the same node.\n"},"runtimeMappings":{"type":"string","description":"Specifies runtime fields for the datafeed search. This should be a JSON object representing the runtime field mappings.\n"},"scriptFields":{"type":"string","description":"Specifies scripts that evaluate custom expressions and returns script fields to the datafeed. The detector configuration objects in a job can contain functions that use these script fields. This should be a JSON object representing the script fields.\n"},"scrollSize":{"type":"number","description":"The size parameter that is used in Elasticsearch searches when the datafeed does not use aggregations. The maximum value is the value of `index.max_result_window`, which is 10,000 by default.\n"}},"type":"object","required":["chunkingConfig","datafeedId","delayedDataCheckConfig","frequency","indices","indicesOptions","jobId","query","queryDelay","scrollSize"],"inputProperties":{"aggregations":{"type":"string","description":"If set, the datafeed performs aggregation searches. Support for aggregations is limited and should be used only with low cardinality data. This should be a JSON object representing the aggregations to be performed.\n"},"chunkingConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedChunkingConfig:ElasticsearchMlDatafeedChunkingConfig","description":"Datafeeds might search over long time periods, for several months or years. This search is split into time chunks in order to ensure the load on Elasticsearch is managed. Chunking configuration controls how the size of these time chunks are calculated; it is an advanced configuration option.\n"},"datafeedId":{"type":"string","description":"A numerical character string that uniquely identifies the datafeed. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.\n"},"delayedDataCheckConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedDelayedDataCheckConfig:ElasticsearchMlDatafeedDelayedDataCheckConfig","description":"Specifies whether the datafeed checks for missing data and the size of the window. The datafeed can optionally search over indices that have already been read in an effort to determine whether any data has subsequently been added to the index. If missing data is found, it is a good indication that the \u003cspan pulumi-lang-nodejs=\"`queryDelay`\" pulumi-lang-dotnet=\"`QueryDelay`\" pulumi-lang-go=\"`queryDelay`\" pulumi-lang-python=\"`query_delay`\" pulumi-lang-yaml=\"`queryDelay`\" pulumi-lang-java=\"`queryDelay`\"\u003e`query_delay`\u003c/span\u003e is set too low and the data is being indexed after the datafeed has passed that moment in time. This check runs only on real-time datafeeds.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedElasticsearchConnection:ElasticsearchMlDatafeedElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"frequency":{"type":"string","description":"The interval at which scheduled queries are made while the datafeed runs in real time. The default value is either the bucket span for short bucket spans, or, for longer bucket spans, a sensible fraction of the bucket span. When \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e is shorter than the bucket span, interim results for the last (partial) bucket are written then eventually overwritten by the full bucket results. If the datafeed uses aggregations, this value must be divisible by the interval of the date histogram aggregation.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the machine learning nodes must have the \u003cspan pulumi-lang-nodejs=\"`remoteClusterClient`\" pulumi-lang-dotnet=\"`RemoteClusterClient`\" pulumi-lang-go=\"`remoteClusterClient`\" pulumi-lang-python=\"`remote_cluster_client`\" pulumi-lang-yaml=\"`remoteClusterClient`\" pulumi-lang-java=\"`remoteClusterClient`\"\u003e`remote_cluster_client`\u003c/span\u003e role.\n"},"indicesOptions":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedIndicesOptions:ElasticsearchMlDatafeedIndicesOptions","description":"Specifies index expansion options that are used during search.\n"},"jobId":{"type":"string","description":"Identifier for the anomaly detection job. The job must exist before creating the datafeed.\n"},"maxEmptySearches":{"type":"number","description":"If a real-time datafeed has never seen any data (including during any initial training period), it automatically stops and closes the associated job after this many real-time searches return no documents. In other words, it stops after \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e times \u003cspan pulumi-lang-nodejs=\"`maxEmptySearches`\" pulumi-lang-dotnet=\"`MaxEmptySearches`\" pulumi-lang-go=\"`maxEmptySearches`\" pulumi-lang-python=\"`max_empty_searches`\" pulumi-lang-yaml=\"`maxEmptySearches`\" pulumi-lang-java=\"`maxEmptySearches`\"\u003e`max_empty_searches`\u003c/span\u003e of real-time operation. If not set, a datafeed with no end time that sees no data remains started until it is explicitly stopped.\n"},"query":{"type":"string","description":"The Elasticsearch query domain-specific language (DSL). This value corresponds to the query object in an Elasticsearch search POST body. All the options that are supported by Elasticsearch can be used, as this object is passed verbatim to Elasticsearch. By default uses `{\u003cspan pulumi-lang-nodejs=\"\"matchAll\"\" pulumi-lang-dotnet=\"\"MatchAll\"\" pulumi-lang-go=\"\"matchAll\"\" pulumi-lang-python=\"\"match_all\"\" pulumi-lang-yaml=\"\"matchAll\"\" pulumi-lang-java=\"\"matchAll\"\"\u003e\"match_all\"\u003c/span\u003e: {\"boost\": 1}}`.\n"},"queryDelay":{"type":"string","description":"The number of seconds behind real time that data is queried. For example, if data from 10:04 a.m. might not be searchable in Elasticsearch until 10:06 a.m., set this property to 120 seconds. The default value is randomly selected between \u003cspan pulumi-lang-nodejs=\"`60s`\" pulumi-lang-dotnet=\"`60s`\" pulumi-lang-go=\"`60s`\" pulumi-lang-python=\"`60s`\" pulumi-lang-yaml=\"`60s`\" pulumi-lang-java=\"`60s`\"\u003e`60s`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`120s`\" pulumi-lang-dotnet=\"`120s`\" pulumi-lang-go=\"`120s`\" pulumi-lang-python=\"`120s`\" pulumi-lang-yaml=\"`120s`\" pulumi-lang-java=\"`120s`\"\u003e`120s`\u003c/span\u003e. This randomness improves the query performance when there are multiple jobs running on the same node.\n"},"runtimeMappings":{"type":"string","description":"Specifies runtime fields for the datafeed search. This should be a JSON object representing the runtime field mappings.\n"},"scriptFields":{"type":"string","description":"Specifies scripts that evaluate custom expressions and returns script fields to the datafeed. The detector configuration objects in a job can contain functions that use these script fields. This should be a JSON object representing the script fields.\n"},"scrollSize":{"type":"number","description":"The size parameter that is used in Elasticsearch searches when the datafeed does not use aggregations. The maximum value is the value of `index.max_result_window`, which is 10,000 by default.\n"}},"requiredInputs":["datafeedId","indices","jobId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlDatafeed resources.\n","properties":{"aggregations":{"type":"string","description":"If set, the datafeed performs aggregation searches. Support for aggregations is limited and should be used only with low cardinality data. This should be a JSON object representing the aggregations to be performed.\n"},"chunkingConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedChunkingConfig:ElasticsearchMlDatafeedChunkingConfig","description":"Datafeeds might search over long time periods, for several months or years. This search is split into time chunks in order to ensure the load on Elasticsearch is managed. Chunking configuration controls how the size of these time chunks are calculated; it is an advanced configuration option.\n"},"datafeedId":{"type":"string","description":"A numerical character string that uniquely identifies the datafeed. This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. It must start and end with alphanumeric characters.\n"},"delayedDataCheckConfig":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedDelayedDataCheckConfig:ElasticsearchMlDatafeedDelayedDataCheckConfig","description":"Specifies whether the datafeed checks for missing data and the size of the window. The datafeed can optionally search over indices that have already been read in an effort to determine whether any data has subsequently been added to the index. If missing data is found, it is a good indication that the \u003cspan pulumi-lang-nodejs=\"`queryDelay`\" pulumi-lang-dotnet=\"`QueryDelay`\" pulumi-lang-go=\"`queryDelay`\" pulumi-lang-python=\"`query_delay`\" pulumi-lang-yaml=\"`queryDelay`\" pulumi-lang-java=\"`queryDelay`\"\u003e`query_delay`\u003c/span\u003e is set too low and the data is being indexed after the datafeed has passed that moment in time. This check runs only on real-time datafeeds.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedElasticsearchConnection:ElasticsearchMlDatafeedElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"frequency":{"type":"string","description":"The interval at which scheduled queries are made while the datafeed runs in real time. The default value is either the bucket span for short bucket spans, or, for longer bucket spans, a sensible fraction of the bucket span. When \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e is shorter than the bucket span, interim results for the last (partial) bucket are written then eventually overwritten by the full bucket results. If the datafeed uses aggregations, this value must be divisible by the interval of the date histogram aggregation.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the machine learning nodes must have the \u003cspan pulumi-lang-nodejs=\"`remoteClusterClient`\" pulumi-lang-dotnet=\"`RemoteClusterClient`\" pulumi-lang-go=\"`remoteClusterClient`\" pulumi-lang-python=\"`remote_cluster_client`\" pulumi-lang-yaml=\"`remoteClusterClient`\" pulumi-lang-java=\"`remoteClusterClient`\"\u003e`remote_cluster_client`\u003c/span\u003e role.\n"},"indicesOptions":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedIndicesOptions:ElasticsearchMlDatafeedIndicesOptions","description":"Specifies index expansion options that are used during search.\n"},"jobId":{"type":"string","description":"Identifier for the anomaly detection job. The job must exist before creating the datafeed.\n"},"maxEmptySearches":{"type":"number","description":"If a real-time datafeed has never seen any data (including during any initial training period), it automatically stops and closes the associated job after this many real-time searches return no documents. In other words, it stops after \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e times \u003cspan pulumi-lang-nodejs=\"`maxEmptySearches`\" pulumi-lang-dotnet=\"`MaxEmptySearches`\" pulumi-lang-go=\"`maxEmptySearches`\" pulumi-lang-python=\"`max_empty_searches`\" pulumi-lang-yaml=\"`maxEmptySearches`\" pulumi-lang-java=\"`maxEmptySearches`\"\u003e`max_empty_searches`\u003c/span\u003e of real-time operation. If not set, a datafeed with no end time that sees no data remains started until it is explicitly stopped.\n"},"query":{"type":"string","description":"The Elasticsearch query domain-specific language (DSL). This value corresponds to the query object in an Elasticsearch search POST body. All the options that are supported by Elasticsearch can be used, as this object is passed verbatim to Elasticsearch. By default uses `{\u003cspan pulumi-lang-nodejs=\"\"matchAll\"\" pulumi-lang-dotnet=\"\"MatchAll\"\" pulumi-lang-go=\"\"matchAll\"\" pulumi-lang-python=\"\"match_all\"\" pulumi-lang-yaml=\"\"matchAll\"\" pulumi-lang-java=\"\"matchAll\"\"\u003e\"match_all\"\u003c/span\u003e: {\"boost\": 1}}`.\n"},"queryDelay":{"type":"string","description":"The number of seconds behind real time that data is queried. For example, if data from 10:04 a.m. might not be searchable in Elasticsearch until 10:06 a.m., set this property to 120 seconds. The default value is randomly selected between \u003cspan pulumi-lang-nodejs=\"`60s`\" pulumi-lang-dotnet=\"`60s`\" pulumi-lang-go=\"`60s`\" pulumi-lang-python=\"`60s`\" pulumi-lang-yaml=\"`60s`\" pulumi-lang-java=\"`60s`\"\u003e`60s`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`120s`\" pulumi-lang-dotnet=\"`120s`\" pulumi-lang-go=\"`120s`\" pulumi-lang-python=\"`120s`\" pulumi-lang-yaml=\"`120s`\" pulumi-lang-java=\"`120s`\"\u003e`120s`\u003c/span\u003e. This randomness improves the query performance when there are multiple jobs running on the same node.\n"},"runtimeMappings":{"type":"string","description":"Specifies runtime fields for the datafeed search. This should be a JSON object representing the runtime field mappings.\n"},"scriptFields":{"type":"string","description":"Specifies scripts that evaluate custom expressions and returns script fields to the datafeed. The detector configuration objects in a job can contain functions that use these script fields. This should be a JSON object representing the script fields.\n"},"scrollSize":{"type":"number","description":"The size parameter that is used in Elasticsearch searches when the datafeed does not use aggregations. The maximum value is the value of `index.max_result_window`, which is 10,000 by default.\n"}},"type":"object"}},"elasticstack:index/elasticsearchMlDatafeedState:ElasticsearchMlDatafeedState":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n//# The following resources setup a realtime ML datafeed.\nconst mlDatafeedIndex = new elasticstack.ElasticsearchIndex(\"ml_datafeed_index\", {\n    name: \"ml-datafeed-data\",\n    mappings: JSON.stringify({\n        properties: {\n            \"@timestamp\": {\n                type: \"date\",\n            },\n            value: {\n                type: \"double\",\n            },\n            user: {\n                type: \"keyword\",\n            },\n        },\n    }),\n});\nconst example = new elasticstack.ElasticsearchMlAnomalyDetectionJob(\"example\", {\n    jobId: \"example-anomaly-job\",\n    description: \"Example anomaly detection job\",\n    analysisConfig: {\n        bucketSpan: \"15m\",\n        detectors: [{\n            \"function\": \"mean\",\n            fieldName: \"value\",\n            byFieldName: \"user\",\n        }],\n    },\n    dataDescription: {\n        timeField: \"@timestamp\",\n    },\n});\nconst exampleElasticsearchMlDatafeed = new elasticstack.ElasticsearchMlDatafeed(\"example\", {\n    datafeedId: \"example-datafeed\",\n    jobId: example.jobId,\n    indices: [mlDatafeedIndex.name],\n    query: JSON.stringify({\n        bool: {\n            must: [{\n                range: {\n                    \"@timestamp\": {\n                        gte: \"now-7d\",\n                    },\n                },\n            }],\n        },\n    }),\n});\nconst exampleElasticsearchMlDatafeedState = new elasticstack.ElasticsearchMlDatafeedState(\"example\", {\n    datafeedId: exampleElasticsearchMlDatafeed.datafeedId,\n    state: \"started\",\n    force: false,\n});\n//# A non-realtime datafeed will automatically stop once all data has been processed.\n//# It's recommended to ignore changes to the `state` attribute via the resource lifecycle for such datafeeds.\nconst non_realtime = new elasticstack.ElasticsearchMlAnomalyDetectionJob(\"non-realtime\", {\n    jobId: \"non-realtime-anomaly-job\",\n    description: \"Test job for datafeed state testing with time range\",\n    analysisConfig: {\n        bucketSpan: \"1h\",\n        detectors: [{\n            \"function\": \"count\",\n            detectorDescription: \"count\",\n        }],\n    },\n    dataDescription: {\n        timeField: \"@timestamp\",\n        timeFormat: \"epoch_ms\",\n    },\n    analysisLimits: {\n        modelMemoryLimit: \"10mb\",\n    },\n});\nconst non_realtimeElasticsearchMlJobState = new elasticstack.ElasticsearchMlJobState(\"non-realtime\", {\n    jobId: non_realtime.jobId,\n    state: \"opened\",\n});\nconst non_realtimeElasticsearchMlDatafeed = new elasticstack.ElasticsearchMlDatafeed(\"non-realtime\", {\n    datafeedId: \"non-realtime-datafeed\",\n    jobId: non_realtime.jobId,\n    indices: [mlDatafeedIndex.name],\n    query: JSON.stringify({\n        match_all: {},\n    }),\n});\nconst non_realtimeElasticsearchMlDatafeedState = new elasticstack.ElasticsearchMlDatafeedState(\"non-realtime\", {\n    datafeedId: non_realtimeElasticsearchMlDatafeed.datafeedId,\n    state: \"started\",\n    start: \"2024-01-01T00:00:00Z\",\n    end: \"2024-01-02T00:00:00Z\",\n    datafeedTimeout: \"60s\",\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n## The following resources setup a realtime ML datafeed.\nml_datafeed_index = elasticstack.ElasticsearchIndex(\"ml_datafeed_index\",\n    name=\"ml-datafeed-data\",\n    mappings=json.dumps({\n        \"properties\": {\n            \"@timestamp\": {\n                \"type\": \"date\",\n            },\n            \"value\": {\n                \"type\": \"double\",\n            },\n            \"user\": {\n                \"type\": \"keyword\",\n            },\n        },\n    }))\nexample = elasticstack.ElasticsearchMlAnomalyDetectionJob(\"example\",\n    job_id=\"example-anomaly-job\",\n    description=\"Example anomaly detection job\",\n    analysis_config={\n        \"bucket_span\": \"15m\",\n        \"detectors\": [{\n            \"function\": \"mean\",\n            \"field_name\": \"value\",\n            \"by_field_name\": \"user\",\n        }],\n    },\n    data_description={\n        \"time_field\": \"@timestamp\",\n    })\nexample_elasticsearch_ml_datafeed = elasticstack.ElasticsearchMlDatafeed(\"example\",\n    datafeed_id=\"example-datafeed\",\n    job_id=example.job_id,\n    indices=[ml_datafeed_index.name],\n    query=json.dumps({\n        \"bool\": {\n            \"must\": [{\n                \"range\": {\n                    \"@timestamp\": {\n                        \"gte\": \"now-7d\",\n                    },\n                },\n            }],\n        },\n    }))\nexample_elasticsearch_ml_datafeed_state = elasticstack.ElasticsearchMlDatafeedState(\"example\",\n    datafeed_id=example_elasticsearch_ml_datafeed.datafeed_id,\n    state=\"started\",\n    force=False)\n## A non-realtime datafeed will automatically stop once all data has been processed.\n## It's recommended to ignore changes to the `state` attribute via the resource lifecycle for such datafeeds.\nnon_realtime = elasticstack.ElasticsearchMlAnomalyDetectionJob(\"non-realtime\",\n    job_id=\"non-realtime-anomaly-job\",\n    description=\"Test job for datafeed state testing with time range\",\n    analysis_config={\n        \"bucket_span\": \"1h\",\n        \"detectors\": [{\n            \"function\": \"count\",\n            \"detector_description\": \"count\",\n        }],\n    },\n    data_description={\n        \"time_field\": \"@timestamp\",\n        \"time_format\": \"epoch_ms\",\n    },\n    analysis_limits={\n        \"model_memory_limit\": \"10mb\",\n    })\nnon_realtime_elasticsearch_ml_job_state = elasticstack.ElasticsearchMlJobState(\"non-realtime\",\n    job_id=non_realtime.job_id,\n    state=\"opened\")\nnon_realtime_elasticsearch_ml_datafeed = elasticstack.ElasticsearchMlDatafeed(\"non-realtime\",\n    datafeed_id=\"non-realtime-datafeed\",\n    job_id=non_realtime.job_id,\n    indices=[ml_datafeed_index.name],\n    query=json.dumps({\n        \"match_all\": {},\n    }))\nnon_realtime_elasticsearch_ml_datafeed_state = elasticstack.ElasticsearchMlDatafeedState(\"non-realtime\",\n    datafeed_id=non_realtime_elasticsearch_ml_datafeed.datafeed_id,\n    state=\"started\",\n    start=\"2024-01-01T00:00:00Z\",\n    end=\"2024-01-02T00:00:00Z\",\n    datafeed_timeout=\"60s\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    //# The following resources setup a realtime ML datafeed.\n    var mlDatafeedIndex = new Elasticstack.ElasticsearchIndex(\"ml_datafeed_index\", new()\n    {\n        Name = \"ml-datafeed-data\",\n        Mappings = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"properties\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"@timestamp\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"type\"] = \"date\",\n                },\n                [\"value\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"type\"] = \"double\",\n                },\n                [\"user\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"type\"] = \"keyword\",\n                },\n            },\n        }),\n    });\n\n    var example = new Elasticstack.ElasticsearchMlAnomalyDetectionJob(\"example\", new()\n    {\n        JobId = \"example-anomaly-job\",\n        Description = \"Example anomaly detection job\",\n        AnalysisConfig = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs\n        {\n            BucketSpan = \"15m\",\n            Detectors = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs\n                {\n                    Function = \"mean\",\n                    FieldName = \"value\",\n                    ByFieldName = \"user\",\n                },\n            },\n        },\n        DataDescription = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs\n        {\n            TimeField = \"@timestamp\",\n        },\n    });\n\n    var exampleElasticsearchMlDatafeed = new Elasticstack.ElasticsearchMlDatafeed(\"example\", new()\n    {\n        DatafeedId = \"example-datafeed\",\n        JobId = example.JobId,\n        Indices = new[]\n        {\n            mlDatafeedIndex.Name,\n        },\n        Query = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"bool\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"must\"] = new[]\n                {\n                    new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"range\"] = new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"@timestamp\"] = new Dictionary\u003cstring, object?\u003e\n                            {\n                                [\"gte\"] = \"now-7d\",\n                            },\n                        },\n                    },\n                },\n            },\n        }),\n    });\n\n    var exampleElasticsearchMlDatafeedState = new Elasticstack.ElasticsearchMlDatafeedState(\"example\", new()\n    {\n        DatafeedId = exampleElasticsearchMlDatafeed.DatafeedId,\n        State = \"started\",\n        Force = false,\n    });\n\n    //# A non-realtime datafeed will automatically stop once all data has been processed.\n    //# It's recommended to ignore changes to the `state` attribute via the resource lifecycle for such datafeeds.\n    var non_realtime = new Elasticstack.ElasticsearchMlAnomalyDetectionJob(\"non-realtime\", new()\n    {\n        JobId = \"non-realtime-anomaly-job\",\n        Description = \"Test job for datafeed state testing with time range\",\n        AnalysisConfig = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs\n        {\n            BucketSpan = \"1h\",\n            Detectors = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs\n                {\n                    Function = \"count\",\n                    DetectorDescription = \"count\",\n                },\n            },\n        },\n        DataDescription = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs\n        {\n            TimeField = \"@timestamp\",\n            TimeFormat = \"epoch_ms\",\n        },\n        AnalysisLimits = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs\n        {\n            ModelMemoryLimit = \"10mb\",\n        },\n    });\n\n    var non_realtimeElasticsearchMlJobState = new Elasticstack.ElasticsearchMlJobState(\"non-realtime\", new()\n    {\n        JobId = non_realtime.JobId,\n        State = \"opened\",\n    });\n\n    var non_realtimeElasticsearchMlDatafeed = new Elasticstack.ElasticsearchMlDatafeed(\"non-realtime\", new()\n    {\n        DatafeedId = \"non-realtime-datafeed\",\n        JobId = non_realtime.JobId,\n        Indices = new[]\n        {\n            mlDatafeedIndex.Name,\n        },\n        Query = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"match_all\"] = new Dictionary\u003cstring, object?\u003e\n            {\n            },\n        }),\n    });\n\n    var non_realtimeElasticsearchMlDatafeedState = new Elasticstack.ElasticsearchMlDatafeedState(\"non-realtime\", new()\n    {\n        DatafeedId = non_realtimeElasticsearchMlDatafeed.DatafeedId,\n        State = \"started\",\n        Start = \"2024-01-01T00:00:00Z\",\n        End = \"2024-01-02T00:00:00Z\",\n        DatafeedTimeout = \"60s\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"properties\": map[string]interface{}{\n\t\t\t\t\"@timestamp\": map[string]interface{}{\n\t\t\t\t\t\"type\": \"date\",\n\t\t\t\t},\n\t\t\t\t\"value\": map[string]interface{}{\n\t\t\t\t\t\"type\": \"double\",\n\t\t\t\t},\n\t\t\t\t\"user\": map[string]interface{}{\n\t\t\t\t\t\"type\": \"keyword\",\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// # The following resources setup a realtime ML datafeed.\n\t\tmlDatafeedIndex, err := elasticstack.NewElasticsearchIndex(ctx, \"ml_datafeed_index\", \u0026elasticstack.ElasticsearchIndexArgs{\n\t\t\tName:     pulumi.String(\"ml-datafeed-data\"),\n\t\t\tMappings: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := elasticstack.NewElasticsearchMlAnomalyDetectionJob(ctx, \"example\", \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobArgs{\n\t\t\tJobId:       pulumi.String(\"example-anomaly-job\"),\n\t\t\tDescription: pulumi.String(\"Example anomaly detection job\"),\n\t\t\tAnalysisConfig: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"15m\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs{\n\t\t\t\t\t\tFunction:    pulumi.String(\"mean\"),\n\t\t\t\t\t\tFieldName:   pulumi.String(\"value\"),\n\t\t\t\t\t\tByFieldName: pulumi.String(\"user\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDescription: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs{\n\t\t\t\tTimeField: pulumi.String(\"@timestamp\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"bool\": map[string]interface{}{\n\t\t\t\t\"must\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"range\": map[string]interface{}{\n\t\t\t\t\t\t\t\"@timestamp\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"gte\": \"now-7d\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\texampleElasticsearchMlDatafeed, err := elasticstack.NewElasticsearchMlDatafeed(ctx, \"example\", \u0026elasticstack.ElasticsearchMlDatafeedArgs{\n\t\t\tDatafeedId: pulumi.String(\"example-datafeed\"),\n\t\t\tJobId:      example.JobId,\n\t\t\tIndices: pulumi.StringArray{\n\t\t\t\tmlDatafeedIndex.Name,\n\t\t\t},\n\t\t\tQuery: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchMlDatafeedState(ctx, \"example\", \u0026elasticstack.ElasticsearchMlDatafeedStateArgs{\n\t\t\tDatafeedId: exampleElasticsearchMlDatafeed.DatafeedId,\n\t\t\tState:      pulumi.String(\"started\"),\n\t\t\tForce:      pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// # A non-realtime datafeed will automatically stop once all data has been processed.\n\t\t// # It's recommended to ignore changes to the `state` attribute via the resource lifecycle for such datafeeds.\n\t\tnon_realtime, err := elasticstack.NewElasticsearchMlAnomalyDetectionJob(ctx, \"non-realtime\", \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobArgs{\n\t\t\tJobId:       pulumi.String(\"non-realtime-anomaly-job\"),\n\t\t\tDescription: pulumi.String(\"Test job for datafeed state testing with time range\"),\n\t\t\tAnalysisConfig: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"1h\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs{\n\t\t\t\t\t\tFunction:            pulumi.String(\"count\"),\n\t\t\t\t\t\tDetectorDescription: pulumi.String(\"count\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDescription: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs{\n\t\t\t\tTimeField:  pulumi.String(\"@timestamp\"),\n\t\t\t\tTimeFormat: pulumi.String(\"epoch_ms\"),\n\t\t\t},\n\t\t\tAnalysisLimits: \u0026elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs{\n\t\t\t\tModelMemoryLimit: pulumi.String(\"10mb\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchMlJobState(ctx, \"non-realtime\", \u0026elasticstack.ElasticsearchMlJobStateArgs{\n\t\t\tJobId: non_realtime.JobId,\n\t\t\tState: pulumi.String(\"opened\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON2, err := json.Marshal(map[string]interface{}{\n\t\t\t\"match_all\": map[string]interface{}{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\tnon_realtimeElasticsearchMlDatafeed, err := elasticstack.NewElasticsearchMlDatafeed(ctx, \"non-realtime\", \u0026elasticstack.ElasticsearchMlDatafeedArgs{\n\t\t\tDatafeedId: pulumi.String(\"non-realtime-datafeed\"),\n\t\t\tJobId:      non_realtime.JobId,\n\t\t\tIndices: pulumi.StringArray{\n\t\t\t\tmlDatafeedIndex.Name,\n\t\t\t},\n\t\t\tQuery: pulumi.String(json2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchMlDatafeedState(ctx, \"non-realtime\", \u0026elasticstack.ElasticsearchMlDatafeedStateArgs{\n\t\t\tDatafeedId:      non_realtimeElasticsearchMlDatafeed.DatafeedId,\n\t\t\tState:           pulumi.String(\"started\"),\n\t\t\tStart:           pulumi.String(\"2024-01-01T00:00:00Z\"),\n\t\t\tEnd:             pulumi.String(\"2024-01-02T00:00:00Z\"),\n\t\t\tDatafeedTimeout: pulumi.String(\"60s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIndex;\nimport com.pulumi.elasticstack.ElasticsearchIndexArgs;\nimport com.pulumi.elasticstack.ElasticsearchMlAnomalyDetectionJob;\nimport com.pulumi.elasticstack.ElasticsearchMlAnomalyDetectionJobArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs;\nimport com.pulumi.elasticstack.ElasticsearchMlDatafeed;\nimport com.pulumi.elasticstack.ElasticsearchMlDatafeedArgs;\nimport com.pulumi.elasticstack.ElasticsearchMlDatafeedState;\nimport com.pulumi.elasticstack.ElasticsearchMlDatafeedStateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs;\nimport com.pulumi.elasticstack.ElasticsearchMlJobState;\nimport com.pulumi.elasticstack.ElasticsearchMlJobStateArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        //# The following resources setup a realtime ML datafeed.\n        var mlDatafeedIndex = new ElasticsearchIndex(\"mlDatafeedIndex\", ElasticsearchIndexArgs.builder()\n            .name(\"ml-datafeed-data\")\n            .mappings(serializeJson(\n                jsonObject(\n                    jsonProperty(\"properties\", jsonObject(\n                        jsonProperty(\"@timestamp\", jsonObject(\n                            jsonProperty(\"type\", \"date\")\n                        )),\n                        jsonProperty(\"value\", jsonObject(\n                            jsonProperty(\"type\", \"double\")\n                        )),\n                        jsonProperty(\"user\", jsonObject(\n                            jsonProperty(\"type\", \"keyword\")\n                        ))\n                    ))\n                )))\n            .build());\n\n        var example = new ElasticsearchMlAnomalyDetectionJob(\"example\", ElasticsearchMlAnomalyDetectionJobArgs.builder()\n            .jobId(\"example-anomaly-job\")\n            .description(\"Example anomaly detection job\")\n            .analysisConfig(ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs.builder()\n                .bucketSpan(\"15m\")\n                .detectors(ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs.builder()\n                    .function(\"mean\")\n                    .fieldName(\"value\")\n                    .byFieldName(\"user\")\n                    .build())\n                .build())\n            .dataDescription(ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs.builder()\n                .timeField(\"@timestamp\")\n                .build())\n            .build());\n\n        var exampleElasticsearchMlDatafeed = new ElasticsearchMlDatafeed(\"exampleElasticsearchMlDatafeed\", ElasticsearchMlDatafeedArgs.builder()\n            .datafeedId(\"example-datafeed\")\n            .jobId(example.jobId())\n            .indices(mlDatafeedIndex.name())\n            .query(serializeJson(\n                jsonObject(\n                    jsonProperty(\"bool\", jsonObject(\n                        jsonProperty(\"must\", jsonArray(jsonObject(\n                            jsonProperty(\"range\", jsonObject(\n                                jsonProperty(\"@timestamp\", jsonObject(\n                                    jsonProperty(\"gte\", \"now-7d\")\n                                ))\n                            ))\n                        )))\n                    ))\n                )))\n            .build());\n\n        var exampleElasticsearchMlDatafeedState = new ElasticsearchMlDatafeedState(\"exampleElasticsearchMlDatafeedState\", ElasticsearchMlDatafeedStateArgs.builder()\n            .datafeedId(exampleElasticsearchMlDatafeed.datafeedId())\n            .state(\"started\")\n            .force(false)\n            .build());\n\n        //# A non-realtime datafeed will automatically stop once all data has been processed.\n        //# It's recommended to ignore changes to the `state` attribute via the resource lifecycle for such datafeeds.\n        var non_realtime = new ElasticsearchMlAnomalyDetectionJob(\"non-realtime\", ElasticsearchMlAnomalyDetectionJobArgs.builder()\n            .jobId(\"non-realtime-anomaly-job\")\n            .description(\"Test job for datafeed state testing with time range\")\n            .analysisConfig(ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs.builder()\n                .bucketSpan(\"1h\")\n                .detectors(ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs.builder()\n                    .function(\"count\")\n                    .detectorDescription(\"count\")\n                    .build())\n                .build())\n            .dataDescription(ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs.builder()\n                .timeField(\"@timestamp\")\n                .timeFormat(\"epoch_ms\")\n                .build())\n            .analysisLimits(ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs.builder()\n                .modelMemoryLimit(\"10mb\")\n                .build())\n            .build());\n\n        var non_realtimeElasticsearchMlJobState = new ElasticsearchMlJobState(\"non-realtimeElasticsearchMlJobState\", ElasticsearchMlJobStateArgs.builder()\n            .jobId(non_realtime.jobId())\n            .state(\"opened\")\n            .build());\n\n        var non_realtimeElasticsearchMlDatafeed = new ElasticsearchMlDatafeed(\"non-realtimeElasticsearchMlDatafeed\", ElasticsearchMlDatafeedArgs.builder()\n            .datafeedId(\"non-realtime-datafeed\")\n            .jobId(non_realtime.jobId())\n            .indices(mlDatafeedIndex.name())\n            .query(serializeJson(\n                jsonObject(\n                    jsonProperty(\"match_all\", jsonObject(\n\n                    ))\n                )))\n            .build());\n\n        var non_realtimeElasticsearchMlDatafeedState = new ElasticsearchMlDatafeedState(\"non-realtimeElasticsearchMlDatafeedState\", ElasticsearchMlDatafeedStateArgs.builder()\n            .datafeedId(non_realtimeElasticsearchMlDatafeed.datafeedId())\n            .state(\"started\")\n            .start(\"2024-01-01T00:00:00Z\")\n            .end(\"2024-01-02T00:00:00Z\")\n            .datafeedTimeout(\"60s\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ## The following resources setup a realtime ML datafeed.\n  mlDatafeedIndex:\n    type: elasticstack:ElasticsearchIndex\n    name: ml_datafeed_index\n    properties:\n      name: ml-datafeed-data\n      mappings:\n        fn::toJSON:\n          properties:\n            '@timestamp':\n              type: date\n            value:\n              type: double\n            user:\n              type: keyword\n  example:\n    type: elasticstack:ElasticsearchMlAnomalyDetectionJob\n    properties:\n      jobId: example-anomaly-job\n      description: Example anomaly detection job\n      analysisConfig:\n        bucketSpan: 15m\n        detectors:\n          - function: mean\n            fieldName: value\n            byFieldName: user\n      dataDescription:\n        timeField: '@timestamp'\n  exampleElasticsearchMlDatafeed:\n    type: elasticstack:ElasticsearchMlDatafeed\n    name: example\n    properties:\n      datafeedId: example-datafeed\n      jobId: ${example.jobId}\n      indices:\n        - ${mlDatafeedIndex.name}\n      query:\n        fn::toJSON:\n          bool:\n            must:\n              - range:\n                  '@timestamp':\n                    gte: now-7d\n  exampleElasticsearchMlDatafeedState:\n    type: elasticstack:ElasticsearchMlDatafeedState\n    name: example\n    properties:\n      datafeedId: ${exampleElasticsearchMlDatafeed.datafeedId}\n      state: started\n      force: false\n  ## A non-realtime datafeed will automatically stop once all data has been processed.\n  ## It's recommended to ignore changes to the `state` attribute via the resource lifecycle for such datafeeds.\n  non-realtime:\n    type: elasticstack:ElasticsearchMlAnomalyDetectionJob\n    properties:\n      jobId: non-realtime-anomaly-job\n      description: Test job for datafeed state testing with time range\n      analysisConfig:\n        bucketSpan: 1h\n        detectors:\n          - function: count\n            detectorDescription: count\n      dataDescription:\n        timeField: '@timestamp'\n        timeFormat: epoch_ms\n      analysisLimits:\n        modelMemoryLimit: 10mb\n  non-realtimeElasticsearchMlJobState:\n    type: elasticstack:ElasticsearchMlJobState\n    name: non-realtime\n    properties:\n      jobId: ${[\"non-realtime\"].jobId}\n      state: opened\n  non-realtimeElasticsearchMlDatafeed:\n    type: elasticstack:ElasticsearchMlDatafeed\n    name: non-realtime\n    properties:\n      datafeedId: non-realtime-datafeed\n      jobId: ${[\"non-realtime\"].jobId}\n      indices:\n        - ${mlDatafeedIndex.name}\n      query:\n        fn::toJSON:\n          match_all: {}\n  non-realtimeElasticsearchMlDatafeedState:\n    type: elasticstack:ElasticsearchMlDatafeedState\n    name: non-realtime\n    properties:\n      datafeedId: ${[\"non-realtimeElasticsearchMlDatafeed\"].datafeedId}\n      state: started\n      start: 2024-01-01T00:00:00Z\n      end: 2024-01-02T00:00:00Z\n      datafeedTimeout: 60s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchMlDatafeedState:ElasticsearchMlDatafeedState example my-datafeed-id\n```\n\n","properties":{"datafeedId":{"type":"string","description":"Identifier for the ML datafeed.\n"},"datafeedTimeout":{"type":"string","description":"Timeout for the operation. Examples: \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateElasticsearchConnection:ElasticsearchMlDatafeedStateElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"end":{"type":"string","description":"The time that the datafeed should end collecting data. When not specified, the datafeed continues in real-time. This property must be specified in RFC 3339 format.\n"},"force":{"type":"boolean","description":"When stopping a datafeed, use to forcefully stop it.\n"},"start":{"type":"string","description":"The time that the datafeed should start collecting data. When not specified, the datafeed starts in real-time. This property must be specified in RFC 3339 format.\n"},"state":{"type":"string","description":"The desired state for the ML datafeed. Valid values are \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e.\n"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateTimeouts:ElasticsearchMlDatafeedStateTimeouts"}},"type":"object","required":["datafeedId","datafeedTimeout","force","start","state"],"inputProperties":{"datafeedId":{"type":"string","description":"Identifier for the ML datafeed.\n"},"datafeedTimeout":{"type":"string","description":"Timeout for the operation. Examples: \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateElasticsearchConnection:ElasticsearchMlDatafeedStateElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"end":{"type":"string","description":"The time that the datafeed should end collecting data. When not specified, the datafeed continues in real-time. This property must be specified in RFC 3339 format.\n"},"force":{"type":"boolean","description":"When stopping a datafeed, use to forcefully stop it.\n"},"start":{"type":"string","description":"The time that the datafeed should start collecting data. When not specified, the datafeed starts in real-time. This property must be specified in RFC 3339 format.\n"},"state":{"type":"string","description":"The desired state for the ML datafeed. Valid values are \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e.\n"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateTimeouts:ElasticsearchMlDatafeedStateTimeouts"}},"requiredInputs":["datafeedId","state"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlDatafeedState resources.\n","properties":{"datafeedId":{"type":"string","description":"Identifier for the ML datafeed.\n"},"datafeedTimeout":{"type":"string","description":"Timeout for the operation. Examples: \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateElasticsearchConnection:ElasticsearchMlDatafeedStateElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"end":{"type":"string","description":"The time that the datafeed should end collecting data. When not specified, the datafeed continues in real-time. This property must be specified in RFC 3339 format.\n"},"force":{"type":"boolean","description":"When stopping a datafeed, use to forcefully stop it.\n"},"start":{"type":"string","description":"The time that the datafeed should start collecting data. When not specified, the datafeed starts in real-time. This property must be specified in RFC 3339 format.\n"},"state":{"type":"string","description":"The desired state for the ML datafeed. Valid values are \u003cspan pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\"\u003e`started`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\"\u003e`stopped`\u003c/span\u003e.\n"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateTimeouts:ElasticsearchMlDatafeedStateTimeouts"}},"type":"object"}},"elasticstack:index/elasticsearchMlJobState:ElasticsearchMlJobState":{"description":"Manages the state of an Elasticsearch Machine Learning (ML) job, allowing you to open or close ML jobs.\n\nThis resource uses the following Elasticsearch APIs:\n- [Open ML Job API](https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-open-job.html)\n- [Close ML Job API](https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-close-job.html)\n- [Get ML Job Stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-job-stats.html)\n\n## Important Notes\n\n- This resource manages the **state** of an existing ML job, not the job configuration itself.\n- The ML job must already exist before using this resource.\n- Opening a job allows it to receive and process data.\n- Closing a job stops data processing and frees up resources.\n- Jobs can be opened and closed multiple times throughout their lifecycle.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// First create an ML anomaly detection job\nconst example = new elasticstack.index.ElasticsearchMlAnomalyDetector(\"example\", {\n    jobId: \"example-ml-job\",\n    description: \"Example anomaly detection job\",\n    analysisConfig: {\n        bucketSpan: \"15m\",\n        detectors: [{\n            \"function\": \"count\",\n            detectorDescription: \"Count detector\",\n        }],\n    },\n    dataDescription: {\n        timeField: \"@timestamp\",\n        timeFormat: \"epoch_ms\",\n    },\n});\n// Manage the state of the ML job - open it\nconst exampleElasticsearchMlJobState = new elasticstack.ElasticsearchMlJobState(\"example\", {\n    jobId: example.jobId,\n    state: \"opened\",\n    force: false,\n    jobTimeout: \"30s\",\n}, {\n    dependsOn: [example],\n});\n// Example with different configuration options\nconst exampleWithOptions = new elasticstack.ElasticsearchMlJobState(\"example_with_options\", {\n    jobId: example.jobId,\n    state: \"closed\",\n    force: true,\n    jobTimeout: \"2m\",\n}, {\n    dependsOn: [example],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# First create an ML anomaly detection job\nexample = elasticstack.index.ElasticsearchMlAnomalyDetector(\"example\",\n    job_id=example-ml-job,\n    description=Example anomaly detection job,\n    analysis_config={\n        bucketSpan: 15m,\n        detectors: [{\n            function: count,\n            detectorDescription: Count detector,\n        }],\n    },\n    data_description={\n        timeField: @timestamp,\n        timeFormat: epoch_ms,\n    })\n# Manage the state of the ML job - open it\nexample_elasticsearch_ml_job_state = elasticstack.ElasticsearchMlJobState(\"example\",\n    job_id=example[\"jobId\"],\n    state=\"opened\",\n    force=False,\n    job_timeout=\"30s\",\n    opts = pulumi.ResourceOptions(depends_on=[example]))\n# Example with different configuration options\nexample_with_options = elasticstack.ElasticsearchMlJobState(\"example_with_options\",\n    job_id=example[\"jobId\"],\n    state=\"closed\",\n    force=True,\n    job_timeout=\"2m\",\n    opts = pulumi.ResourceOptions(depends_on=[example]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // First create an ML anomaly detection job\n    var example = new Elasticstack.Index.ElasticsearchMlAnomalyDetector(\"example\", new()\n    {\n        JobId = \"example-ml-job\",\n        Description = \"Example anomaly detection job\",\n        AnalysisConfig = \n        {\n            { \"bucketSpan\", \"15m\" },\n            { \"detectors\", new[]\n            {\n                \n                {\n                    { \"function\", \"count\" },\n                    { \"detectorDescription\", \"Count detector\" },\n                },\n            } },\n        },\n        DataDescription = \n        {\n            { \"timeField\", \"@timestamp\" },\n            { \"timeFormat\", \"epoch_ms\" },\n        },\n    });\n\n    // Manage the state of the ML job - open it\n    var exampleElasticsearchMlJobState = new Elasticstack.ElasticsearchMlJobState(\"example\", new()\n    {\n        JobId = example.JobId,\n        State = \"opened\",\n        Force = false,\n        JobTimeout = \"30s\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n        },\n    });\n\n    // Example with different configuration options\n    var exampleWithOptions = new Elasticstack.ElasticsearchMlJobState(\"example_with_options\", new()\n    {\n        JobId = example.JobId,\n        State = \"closed\",\n        Force = true,\n        JobTimeout = \"2m\",\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            example,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// First create an ML anomaly detection job\n\t\texample, err := elasticstack.NewElasticsearchMlAnomalyDetector(ctx, \"example\", \u0026elasticstack.ElasticsearchMlAnomalyDetectorArgs{\n\t\t\tJobId:       \"example-ml-job\",\n\t\t\tDescription: \"Example anomaly detection job\",\n\t\t\tAnalysisConfig: map[string]interface{}{\n\t\t\t\t\"bucketSpan\": \"15m\",\n\t\t\t\t\"detectors\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"function\":            \"count\",\n\t\t\t\t\t\t\"detectorDescription\": \"Count detector\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDescription: map[string]interface{}{\n\t\t\t\t\"timeField\":  \"@timestamp\",\n\t\t\t\t\"timeFormat\": \"epoch_ms\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Manage the state of the ML job - open it\n\t\t_, err = elasticstack.NewElasticsearchMlJobState(ctx, \"example\", \u0026elasticstack.ElasticsearchMlJobStateArgs{\n\t\t\tJobId:      example.JobId,\n\t\t\tState:      pulumi.String(\"opened\"),\n\t\t\tForce:      pulumi.Bool(false),\n\t\t\tJobTimeout: pulumi.String(\"30s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Example with different configuration options\n\t\t_, err = elasticstack.NewElasticsearchMlJobState(ctx, \"example_with_options\", \u0026elasticstack.ElasticsearchMlJobStateArgs{\n\t\t\tJobId:      example.JobId,\n\t\t\tState:      pulumi.String(\"closed\"),\n\t\t\tForce:      pulumi.Bool(true),\n\t\t\tJobTimeout: pulumi.String(\"2m\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchMlAnomalyDetector;\nimport com.pulumi.elasticstack.ElasticsearchMlAnomalyDetectorArgs;\nimport com.pulumi.elasticstack.ElasticsearchMlJobState;\nimport com.pulumi.elasticstack.ElasticsearchMlJobStateArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // First create an ML anomaly detection job\n        var example = new ElasticsearchMlAnomalyDetector(\"example\", ElasticsearchMlAnomalyDetectorArgs.builder()\n            .jobId(\"example-ml-job\")\n            .description(\"Example anomaly detection job\")\n            .analysisConfig(Map.ofEntries(\n                Map.entry(\"bucketSpan\", \"15m\"),\n                Map.entry(\"detectors\", List.of(Map.ofEntries(\n                    Map.entry(\"function\", \"count\"),\n                    Map.entry(\"detectorDescription\", \"Count detector\")\n                )))\n            ))\n            .dataDescription(Map.ofEntries(\n                Map.entry(\"timeField\", \"@timestamp\"),\n                Map.entry(\"timeFormat\", \"epoch_ms\")\n            ))\n            .build());\n\n        // Manage the state of the ML job - open it\n        var exampleElasticsearchMlJobState = new ElasticsearchMlJobState(\"exampleElasticsearchMlJobState\", ElasticsearchMlJobStateArgs.builder()\n            .jobId(example.jobId())\n            .state(\"opened\")\n            .force(false)\n            .jobTimeout(\"30s\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(example)\n                .build());\n\n        // Example with different configuration options\n        var exampleWithOptions = new ElasticsearchMlJobState(\"exampleWithOptions\", ElasticsearchMlJobStateArgs.builder()\n            .jobId(example.jobId())\n            .state(\"closed\")\n            .force(true)\n            .jobTimeout(\"2m\")\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(example)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # First create an ML anomaly detection job\n  example:\n    type: elasticstack:ElasticsearchMlAnomalyDetector\n    properties:\n      jobId: example-ml-job\n      description: Example anomaly detection job\n      analysisConfig:\n        bucketSpan: 15m\n        detectors:\n          - function: count\n            detectorDescription: Count detector\n      dataDescription:\n        timeField: '@timestamp'\n        timeFormat: epoch_ms\n  # Manage the state of the ML job - open it\n  exampleElasticsearchMlJobState:\n    type: elasticstack:ElasticsearchMlJobState\n    name: example\n    properties:\n      jobId: ${example.jobId}\n      state: opened\n      force: false\n      jobTimeout: 30s\n    options:\n      dependsOn:\n        - ${example}\n  # Example with different configuration options\n  exampleWithOptions:\n    type: elasticstack:ElasticsearchMlJobState\n    name: example_with_options\n    properties:\n      jobId: ${example.jobId}\n      state: closed\n      force: true # Custom timeout\n      jobTimeout: 2m\n    options:\n      dependsOn:\n        - ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateElasticsearchConnection:ElasticsearchMlJobStateElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"force":{"type":"boolean","description":"When closing a job, use to forcefully close it. This method is quicker but can miss important clean up tasks.\n"},"jobId":{"type":"string","description":"Identifier for the anomaly detection job.\n"},"jobTimeout":{"type":"string","description":"Timeout for the operation. Examples: \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"state":{"type":"string","description":"The desired state for the ML job. Valid values are \u003cspan pulumi-lang-nodejs=\"`opened`\" pulumi-lang-dotnet=\"`Opened`\" pulumi-lang-go=\"`opened`\" pulumi-lang-python=\"`opened`\" pulumi-lang-yaml=\"`opened`\" pulumi-lang-java=\"`opened`\"\u003e`opened`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`closed`\" pulumi-lang-dotnet=\"`Closed`\" pulumi-lang-go=\"`closed`\" pulumi-lang-python=\"`closed`\" pulumi-lang-yaml=\"`closed`\" pulumi-lang-java=\"`closed`\"\u003e`closed`\u003c/span\u003e.\n"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateTimeouts:ElasticsearchMlJobStateTimeouts"}},"type":"object","required":["force","jobId","jobTimeout","state"],"inputProperties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateElasticsearchConnection:ElasticsearchMlJobStateElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"force":{"type":"boolean","description":"When closing a job, use to forcefully close it. This method is quicker but can miss important clean up tasks.\n"},"jobId":{"type":"string","description":"Identifier for the anomaly detection job.\n"},"jobTimeout":{"type":"string","description":"Timeout for the operation. Examples: \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"state":{"type":"string","description":"The desired state for the ML job. Valid values are \u003cspan pulumi-lang-nodejs=\"`opened`\" pulumi-lang-dotnet=\"`Opened`\" pulumi-lang-go=\"`opened`\" pulumi-lang-python=\"`opened`\" pulumi-lang-yaml=\"`opened`\" pulumi-lang-java=\"`opened`\"\u003e`opened`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`closed`\" pulumi-lang-dotnet=\"`Closed`\" pulumi-lang-go=\"`closed`\" pulumi-lang-python=\"`closed`\" pulumi-lang-yaml=\"`closed`\" pulumi-lang-java=\"`closed`\"\u003e`closed`\u003c/span\u003e.\n"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateTimeouts:ElasticsearchMlJobStateTimeouts"}},"requiredInputs":["jobId","state"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlJobState resources.\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateElasticsearchConnection:ElasticsearchMlJobStateElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"force":{"type":"boolean","description":"When closing a job, use to forcefully close it. This method is quicker but can miss important clean up tasks.\n"},"jobId":{"type":"string","description":"Identifier for the anomaly detection job.\n"},"jobTimeout":{"type":"string","description":"Timeout for the operation. Examples: \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\"\u003e`5m`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\"\u003e`1h`\u003c/span\u003e. Default is \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"state":{"type":"string","description":"The desired state for the ML job. Valid values are \u003cspan pulumi-lang-nodejs=\"`opened`\" pulumi-lang-dotnet=\"`Opened`\" pulumi-lang-go=\"`opened`\" pulumi-lang-python=\"`opened`\" pulumi-lang-yaml=\"`opened`\" pulumi-lang-java=\"`opened`\"\u003e`opened`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`closed`\" pulumi-lang-dotnet=\"`Closed`\" pulumi-lang-go=\"`closed`\" pulumi-lang-python=\"`closed`\" pulumi-lang-yaml=\"`closed`\" pulumi-lang-java=\"`closed`\"\u003e`closed`\u003c/span\u003e.\n"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateTimeouts:ElasticsearchMlJobStateTimeouts"}},"type":"object"}},"elasticstack:index/elasticsearchScript:ElasticsearchScript":{"description":"Creates or updates a stored script or search template. See the [create stored script API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/create-stored-script-api.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myScript = new elasticstack.ElasticsearchScript(\"my_script\", {\n    scriptId: \"my_script\",\n    lang: \"painless\",\n    source: \"Math.log(_score * 2) + params['my_modifier']\",\n    context: \"score\",\n});\nconst mySearchTemplate = new elasticstack.ElasticsearchScript(\"my_search_template\", {\n    scriptId: \"my_search_template\",\n    lang: \"mustache\",\n    source: JSON.stringify({\n        query: {\n            match: {\n                message: \"{{query_string}}\",\n            },\n        },\n        from: \"{{from}}\",\n        size: \"{{size}}\",\n    }),\n    params: JSON.stringify({\n        query_string: \"My query string\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_script = elasticstack.ElasticsearchScript(\"my_script\",\n    script_id=\"my_script\",\n    lang=\"painless\",\n    source=\"Math.log(_score * 2) + params['my_modifier']\",\n    context=\"score\")\nmy_search_template = elasticstack.ElasticsearchScript(\"my_search_template\",\n    script_id=\"my_search_template\",\n    lang=\"mustache\",\n    source=json.dumps({\n        \"query\": {\n            \"match\": {\n                \"message\": \"{{query_string}}\",\n            },\n        },\n        \"from\": \"{{from}}\",\n        \"size\": \"{{size}}\",\n    }),\n    params=json.dumps({\n        \"query_string\": \"My query string\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myScript = new Elasticstack.ElasticsearchScript(\"my_script\", new()\n    {\n        ScriptId = \"my_script\",\n        Lang = \"painless\",\n        Source = \"Math.log(_score * 2) + params['my_modifier']\",\n        Context = \"score\",\n    });\n\n    var mySearchTemplate = new Elasticstack.ElasticsearchScript(\"my_search_template\", new()\n    {\n        ScriptId = \"my_search_template\",\n        Lang = \"mustache\",\n        Source = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"query\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"match\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"message\"] = \"{{query_string}}\",\n                },\n            },\n            [\"from\"] = \"{{from}}\",\n            [\"size\"] = \"{{size}}\",\n        }),\n        Params = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"query_string\"] = \"My query string\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewElasticsearchScript(ctx, \"my_script\", \u0026elasticstack.ElasticsearchScriptArgs{\n\t\t\tScriptId: pulumi.String(\"my_script\"),\n\t\t\tLang:     pulumi.String(\"painless\"),\n\t\t\tSource:   pulumi.String(\"Math.log(_score * 2) + params['my_modifier']\"),\n\t\t\tContext:  pulumi.String(\"score\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"query\": map[string]interface{}{\n\t\t\t\t\"match\": map[string]interface{}{\n\t\t\t\t\t\"message\": \"{{query_string}}\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"from\": \"{{from}}\",\n\t\t\t\"size\": \"{{size}}\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"query_string\": \"My query string\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = elasticstack.NewElasticsearchScript(ctx, \"my_search_template\", \u0026elasticstack.ElasticsearchScriptArgs{\n\t\t\tScriptId: pulumi.String(\"my_search_template\"),\n\t\t\tLang:     pulumi.String(\"mustache\"),\n\t\t\tSource:   pulumi.String(json0),\n\t\t\tParams:   pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchScript;\nimport com.pulumi.elasticstack.ElasticsearchScriptArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myScript = new ElasticsearchScript(\"myScript\", ElasticsearchScriptArgs.builder()\n            .scriptId(\"my_script\")\n            .lang(\"painless\")\n            .source(\"Math.log(_score * 2) + params['my_modifier']\")\n            .context(\"score\")\n            .build());\n\n        var mySearchTemplate = new ElasticsearchScript(\"mySearchTemplate\", ElasticsearchScriptArgs.builder()\n            .scriptId(\"my_search_template\")\n            .lang(\"mustache\")\n            .source(serializeJson(\n                jsonObject(\n                    jsonProperty(\"query\", jsonObject(\n                        jsonProperty(\"match\", jsonObject(\n                            jsonProperty(\"message\", \"{{query_string}}\")\n                        ))\n                    )),\n                    jsonProperty(\"from\", \"{{from}}\"),\n                    jsonProperty(\"size\", \"{{size}}\")\n                )))\n            .params(serializeJson(\n                jsonObject(\n                    jsonProperty(\"query_string\", \"My query string\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myScript:\n    type: elasticstack:ElasticsearchScript\n    name: my_script\n    properties:\n      scriptId: my_script\n      lang: painless\n      source: Math.log(_score * 2) + params['my_modifier']\n      context: score\n  mySearchTemplate:\n    type: elasticstack:ElasticsearchScript\n    name: my_search_template\n    properties:\n      scriptId: my_search_template\n      lang: mustache\n      source:\n        fn::toJSON:\n          query:\n            match:\n              message: '{{query_string}}'\n          from: '{{from}}'\n          size: '{{size}}'\n      params:\n        fn::toJSON:\n          query_string: My query string\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchScript:ElasticsearchScript my_script \u003ccluster_uuid\u003e/\u003cscript id\u003e\n```\n\n","properties":{"context":{"type":"string","description":"Context in which the script or search template should run.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchScriptElasticsearchConnection:ElasticsearchScriptElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"lang":{"type":"string","description":"Script language. For search templates, use \u003cspan pulumi-lang-nodejs=\"`mustache`\" pulumi-lang-dotnet=\"`Mustache`\" pulumi-lang-go=\"`mustache`\" pulumi-lang-python=\"`mustache`\" pulumi-lang-yaml=\"`mustache`\" pulumi-lang-java=\"`mustache`\"\u003e`mustache`\u003c/span\u003e.\n"},"params":{"type":"string","description":"Parameters for the script or search template.\n"},"scriptId":{"type":"string","description":"Identifier for the stored script. Must be unique within the cluster.\n"},"source":{"type":"string","description":"For scripts, a string containing the script. For search templates, an object containing the search template.\n"}},"type":"object","required":["lang","scriptId","source"],"inputProperties":{"context":{"type":"string","description":"Context in which the script or search template should run.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchScriptElasticsearchConnection:ElasticsearchScriptElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"lang":{"type":"string","description":"Script language. For search templates, use \u003cspan pulumi-lang-nodejs=\"`mustache`\" pulumi-lang-dotnet=\"`Mustache`\" pulumi-lang-go=\"`mustache`\" pulumi-lang-python=\"`mustache`\" pulumi-lang-yaml=\"`mustache`\" pulumi-lang-java=\"`mustache`\"\u003e`mustache`\u003c/span\u003e.\n"},"params":{"type":"string","description":"Parameters for the script or search template.\n"},"scriptId":{"type":"string","description":"Identifier for the stored script. Must be unique within the cluster.\n"},"source":{"type":"string","description":"For scripts, a string containing the script. For search templates, an object containing the search template.\n"}},"requiredInputs":["lang","scriptId","source"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchScript resources.\n","properties":{"context":{"type":"string","description":"Context in which the script or search template should run.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchScriptElasticsearchConnection:ElasticsearchScriptElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"lang":{"type":"string","description":"Script language. For search templates, use \u003cspan pulumi-lang-nodejs=\"`mustache`\" pulumi-lang-dotnet=\"`Mustache`\" pulumi-lang-go=\"`mustache`\" pulumi-lang-python=\"`mustache`\" pulumi-lang-yaml=\"`mustache`\" pulumi-lang-java=\"`mustache`\"\u003e`mustache`\u003c/span\u003e.\n"},"params":{"type":"string","description":"Parameters for the script or search template.\n"},"scriptId":{"type":"string","description":"Identifier for the stored script. Must be unique within the cluster.\n"},"source":{"type":"string","description":"For scripts, a string containing the script. For search templates, an object containing the search template.\n"}},"type":"object"}},"elasticstack:index/elasticsearchSecurityApiKey:ElasticsearchSecurityApiKey":{"description":"Creates an API key for access without requiring basic authentication. Supports both regular API keys and cross-cluster API keys. See the [security API create API key documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-api-key.html) and [create cross-cluster API key documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-create-cross-cluster-api-key.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nexport = async () =\u003e {\n    const apiKey = new elasticstack.ElasticsearchSecurityApiKey(\"api_key\", {\n        name: \"My API key\",\n        roleDescriptors: JSON.stringify({\n            \"role-a\": {\n                cluster: [\"all\"],\n                indices: [{\n                    names: [\"index-a*\"],\n                    privileges: [\"read\"],\n                }],\n            },\n        }),\n        expiration: \"1d\",\n        metadata: JSON.stringify({\n            env: \"testing\",\n            open: false,\n            number: 49,\n        }),\n    });\n    // restriction on a role descriptor for an API key is supported since Elastic 8.9\n    const apiKeyWithRestriction = new elasticstack.ElasticsearchSecurityApiKey(\"api_key_with_restriction\", {\n        name: \"My API key\",\n        roleDescriptors: JSON.stringify({\n            \"role-a\": {\n                cluster: [\"all\"],\n                indices: [{\n                    names: [\"index-a*\"],\n                    privileges: [\"read\"],\n                }],\n                restriction: {\n                    workflows: [\"search_application_query\"],\n                },\n            },\n        }),\n        expiration: \"1d\",\n        metadata: JSON.stringify({\n            env: \"testing\",\n            open: false,\n            number: 49,\n        }),\n    });\n    // Example: Cross-cluster API key\n    const crossClusterKey = new elasticstack.ElasticsearchSecurityApiKey(\"cross_cluster_key\", {\n        name: \"My Cross-Cluster API Key\",\n        type: \"cross_cluster\",\n        access: {\n            replications: [{\n                names: [\"archive-*\"],\n            }],\n        },\n        expiration: \"30d\",\n        metadata: JSON.stringify({\n            description: \"Cross-cluster key for production environment\",\n            environment: \"production\",\n            team: \"platform\",\n        }),\n    });\n    return {\n        apiKey: apiKey,\n        crossClusterApiKey: crossClusterKey,\n    };\n}\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\napi_key = elasticstack.ElasticsearchSecurityApiKey(\"api_key\",\n    name=\"My API key\",\n    role_descriptors=json.dumps({\n        \"role-a\": {\n            \"cluster\": [\"all\"],\n            \"indices\": [{\n                \"names\": [\"index-a*\"],\n                \"privileges\": [\"read\"],\n            }],\n        },\n    }),\n    expiration=\"1d\",\n    metadata=json.dumps({\n        \"env\": \"testing\",\n        \"open\": False,\n        \"number\": 49,\n    }))\n# restriction on a role descriptor for an API key is supported since Elastic 8.9\napi_key_with_restriction = elasticstack.ElasticsearchSecurityApiKey(\"api_key_with_restriction\",\n    name=\"My API key\",\n    role_descriptors=json.dumps({\n        \"role-a\": {\n            \"cluster\": [\"all\"],\n            \"indices\": [{\n                \"names\": [\"index-a*\"],\n                \"privileges\": [\"read\"],\n            }],\n            \"restriction\": {\n                \"workflows\": [\"search_application_query\"],\n            },\n        },\n    }),\n    expiration=\"1d\",\n    metadata=json.dumps({\n        \"env\": \"testing\",\n        \"open\": False,\n        \"number\": 49,\n    }))\npulumi.export(\"apiKey\", api_key)\n# Example: Cross-cluster API key\ncross_cluster_key = elasticstack.ElasticsearchSecurityApiKey(\"cross_cluster_key\",\n    name=\"My Cross-Cluster API Key\",\n    type=\"cross_cluster\",\n    access={\n        \"replications\": [{\n            \"names\": [\"archive-*\"],\n        }],\n    },\n    expiration=\"30d\",\n    metadata=json.dumps({\n        \"description\": \"Cross-cluster key for production environment\",\n        \"environment\": \"production\",\n        \"team\": \"platform\",\n    }))\npulumi.export(\"crossClusterApiKey\", cross_cluster_key)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var apiKey = new Elasticstack.ElasticsearchSecurityApiKey(\"api_key\", new()\n    {\n        Name = \"My API key\",\n        RoleDescriptors = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"role-a\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"cluster\"] = new[]\n                {\n                    \"all\",\n                },\n                [\"indices\"] = new[]\n                {\n                    new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"names\"] = new[]\n                        {\n                            \"index-a*\",\n                        },\n                        [\"privileges\"] = new[]\n                        {\n                            \"read\",\n                        },\n                    },\n                },\n            },\n        }),\n        Expiration = \"1d\",\n        Metadata = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"env\"] = \"testing\",\n            [\"open\"] = false,\n            [\"number\"] = 49,\n        }),\n    });\n\n    // restriction on a role descriptor for an API key is supported since Elastic 8.9\n    var apiKeyWithRestriction = new Elasticstack.ElasticsearchSecurityApiKey(\"api_key_with_restriction\", new()\n    {\n        Name = \"My API key\",\n        RoleDescriptors = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"role-a\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"cluster\"] = new[]\n                {\n                    \"all\",\n                },\n                [\"indices\"] = new[]\n                {\n                    new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"names\"] = new[]\n                        {\n                            \"index-a*\",\n                        },\n                        [\"privileges\"] = new[]\n                        {\n                            \"read\",\n                        },\n                    },\n                },\n                [\"restriction\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"workflows\"] = new[]\n                    {\n                        \"search_application_query\",\n                    },\n                },\n            },\n        }),\n        Expiration = \"1d\",\n        Metadata = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"env\"] = \"testing\",\n            [\"open\"] = false,\n            [\"number\"] = 49,\n        }),\n    });\n\n    // Example: Cross-cluster API key\n    var crossClusterKey = new Elasticstack.ElasticsearchSecurityApiKey(\"cross_cluster_key\", new()\n    {\n        Name = \"My Cross-Cluster API Key\",\n        Type = \"cross_cluster\",\n        Access = new Elasticstack.Inputs.ElasticsearchSecurityApiKeyAccessArgs\n        {\n            Replications = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchSecurityApiKeyAccessReplicationArgs\n                {\n                    Names = new[]\n                    {\n                        \"archive-*\",\n                    },\n                },\n            },\n        },\n        Expiration = \"30d\",\n        Metadata = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"description\"] = \"Cross-cluster key for production environment\",\n            [\"environment\"] = \"production\",\n            [\"team\"] = \"platform\",\n        }),\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"apiKey\"] = apiKey,\n        [\"crossClusterApiKey\"] = crossClusterKey,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"role-a\": map[string]interface{}{\n\t\t\t\t\"cluster\": []string{\n\t\t\t\t\t\"all\",\n\t\t\t\t},\n\t\t\t\t\"indices\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"names\": []string{\n\t\t\t\t\t\t\t\"index-a*\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"privileges\": []string{\n\t\t\t\t\t\t\t\"read\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"env\":    \"testing\",\n\t\t\t\"open\":   false,\n\t\t\t\"number\": 49,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\tapiKey, err := elasticstack.NewElasticsearchSecurityApiKey(ctx, \"api_key\", \u0026elasticstack.ElasticsearchSecurityApiKeyArgs{\n\t\t\tName:            pulumi.String(\"My API key\"),\n\t\t\tRoleDescriptors: pulumi.String(json0),\n\t\t\tExpiration:      pulumi.String(\"1d\"),\n\t\t\tMetadata:        pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON2, err := json.Marshal(map[string]interface{}{\n\t\t\t\"role-a\": map[string]interface{}{\n\t\t\t\t\"cluster\": []string{\n\t\t\t\t\t\"all\",\n\t\t\t\t},\n\t\t\t\t\"indices\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"names\": []string{\n\t\t\t\t\t\t\t\"index-a*\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"privileges\": []string{\n\t\t\t\t\t\t\t\"read\",\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\"restriction\": map[string]interface{}{\n\t\t\t\t\t\"workflows\": []string{\n\t\t\t\t\t\t\"search_application_query\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(map[string]interface{}{\n\t\t\t\"env\":    \"testing\",\n\t\t\t\"open\":   false,\n\t\t\t\"number\": 49,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\t// restriction on a role descriptor for an API key is supported since Elastic 8.9\n\t\t_, err = elasticstack.NewElasticsearchSecurityApiKey(ctx, \"api_key_with_restriction\", \u0026elasticstack.ElasticsearchSecurityApiKeyArgs{\n\t\t\tName:            pulumi.String(\"My API key\"),\n\t\t\tRoleDescriptors: pulumi.String(json2),\n\t\t\tExpiration:      pulumi.String(\"1d\"),\n\t\t\tMetadata:        pulumi.String(json3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"apiKey\", apiKey)\n\t\ttmpJSON4, err := json.Marshal(map[string]interface{}{\n\t\t\t\"description\": \"Cross-cluster key for production environment\",\n\t\t\t\"environment\": \"production\",\n\t\t\t\"team\":        \"platform\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\t// Example: Cross-cluster API key\n\t\tcrossClusterKey, err := elasticstack.NewElasticsearchSecurityApiKey(ctx, \"cross_cluster_key\", \u0026elasticstack.ElasticsearchSecurityApiKeyArgs{\n\t\t\tName: pulumi.String(\"My Cross-Cluster API Key\"),\n\t\t\tType: pulumi.String(\"cross_cluster\"),\n\t\t\tAccess: \u0026elasticstack.ElasticsearchSecurityApiKeyAccessArgs{\n\t\t\t\tReplications: elasticstack.ElasticsearchSecurityApiKeyAccessReplicationArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchSecurityApiKeyAccessReplicationArgs{\n\t\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"archive-*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tExpiration: pulumi.String(\"30d\"),\n\t\t\tMetadata:   pulumi.String(json4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"crossClusterApiKey\", crossClusterKey)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchSecurityApiKey;\nimport com.pulumi.elasticstack.ElasticsearchSecurityApiKeyArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSecurityApiKeyAccessArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var apiKey = new ElasticsearchSecurityApiKey(\"apiKey\", ElasticsearchSecurityApiKeyArgs.builder()\n            .name(\"My API key\")\n            .roleDescriptors(serializeJson(\n                jsonObject(\n                    jsonProperty(\"role-a\", jsonObject(\n                        jsonProperty(\"cluster\", jsonArray(\"all\")),\n                        jsonProperty(\"indices\", jsonArray(jsonObject(\n                            jsonProperty(\"names\", jsonArray(\"index-a*\")),\n                            jsonProperty(\"privileges\", jsonArray(\"read\"))\n                        )))\n                    ))\n                )))\n            .expiration(\"1d\")\n            .metadata(serializeJson(\n                jsonObject(\n                    jsonProperty(\"env\", \"testing\"),\n                    jsonProperty(\"open\", false),\n                    jsonProperty(\"number\", 49)\n                )))\n            .build());\n\n        // restriction on a role descriptor for an API key is supported since Elastic 8.9\n        var apiKeyWithRestriction = new ElasticsearchSecurityApiKey(\"apiKeyWithRestriction\", ElasticsearchSecurityApiKeyArgs.builder()\n            .name(\"My API key\")\n            .roleDescriptors(serializeJson(\n                jsonObject(\n                    jsonProperty(\"role-a\", jsonObject(\n                        jsonProperty(\"cluster\", jsonArray(\"all\")),\n                        jsonProperty(\"indices\", jsonArray(jsonObject(\n                            jsonProperty(\"names\", jsonArray(\"index-a*\")),\n                            jsonProperty(\"privileges\", jsonArray(\"read\"))\n                        ))),\n                        jsonProperty(\"restriction\", jsonObject(\n                            jsonProperty(\"workflows\", jsonArray(\"search_application_query\"))\n                        ))\n                    ))\n                )))\n            .expiration(\"1d\")\n            .metadata(serializeJson(\n                jsonObject(\n                    jsonProperty(\"env\", \"testing\"),\n                    jsonProperty(\"open\", false),\n                    jsonProperty(\"number\", 49)\n                )))\n            .build());\n\n        ctx.export(\"apiKey\", apiKey);\n        // Example: Cross-cluster API key\n        var crossClusterKey = new ElasticsearchSecurityApiKey(\"crossClusterKey\", ElasticsearchSecurityApiKeyArgs.builder()\n            .name(\"My Cross-Cluster API Key\")\n            .type(\"cross_cluster\")\n            .access(ElasticsearchSecurityApiKeyAccessArgs.builder()\n                .replications(ElasticsearchSecurityApiKeyAccessReplicationArgs.builder()\n                    .names(\"archive-*\")\n                    .build())\n                .build())\n            .expiration(\"30d\")\n            .metadata(serializeJson(\n                jsonObject(\n                    jsonProperty(\"description\", \"Cross-cluster key for production environment\"),\n                    jsonProperty(\"environment\", \"production\"),\n                    jsonProperty(\"team\", \"platform\")\n                )))\n            .build());\n\n        ctx.export(\"crossClusterApiKey\", crossClusterKey);\n    }\n}\n```\n```yaml\nresources:\n  apiKey:\n    type: elasticstack:ElasticsearchSecurityApiKey\n    name: api_key\n    properties:\n      name: My API key\n      roleDescriptors:\n        fn::toJSON:\n          role-a:\n            cluster:\n              - all\n            indices:\n              - names:\n                  - index-a*\n                privileges:\n                  - read\n      expiration: 1d\n      metadata:\n        fn::toJSON:\n          env: testing\n          open: false\n          number: 49\n  # restriction on a role descriptor for an API key is supported since Elastic 8.9\n  apiKeyWithRestriction:\n    type: elasticstack:ElasticsearchSecurityApiKey\n    name: api_key_with_restriction\n    properties:\n      name: My API key\n      roleDescriptors:\n        fn::toJSON:\n          role-a:\n            cluster:\n              - all\n            indices:\n              - names:\n                  - index-a*\n                privileges:\n                  - read\n            restriction:\n              workflows:\n                - search_application_query\n      expiration: 1d\n      metadata:\n        fn::toJSON:\n          env: testing\n          open: false\n          number: 49\n  # Example: Cross-cluster API key\n  crossClusterKey:\n    type: elasticstack:ElasticsearchSecurityApiKey\n    name: cross_cluster_key\n    properties:\n      name: My Cross-Cluster API Key\n      type: cross_cluster\n      access:\n        replications:\n          - names:\n              - archive-*\n      expiration: 30d\n      metadata:\n        fn::toJSON:\n          description: Cross-cluster key for production environment\n          environment: production\n          team: platform\noutputs:\n  apiKey: ${apiKey}\n  crossClusterApiKey: ${crossClusterKey}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"access":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyAccess:ElasticsearchSecurityApiKeyAccess","description":"Access configuration for cross-cluster API keys. Only applicable when type is 'cross_cluster'.\n"},"apiKey":{"type":"string","description":"Generated API Key.\n","secret":true},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyElasticsearchConnection:ElasticsearchSecurityApiKeyElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"encoded":{"type":"string","description":"API key credentials which is the Base64-encoding of the UTF-8 representation of the id and\u003cspan pulumi-lang-nodejs=\" apiKey \" pulumi-lang-dotnet=\" ApiKey \" pulumi-lang-go=\" apiKey \" pulumi-lang-python=\" api_key \" pulumi-lang-yaml=\" apiKey \" pulumi-lang-java=\" apiKey \"\u003e api_key \u003c/span\u003ejoined by a colon (:).\n","secret":true},"expiration":{"type":"string","description":"Expiration time for the API key. By default, API keys never expire.\n"},"expirationTimestamp":{"type":"number","description":"Expiration time in milliseconds for the API key. By default, API keys never expire.\n"},"keyId":{"type":"string","description":"Unique id for this API key.\n"},"metadata":{"type":"string","description":"Arbitrary metadata that you want to associate with the API key.\n"},"name":{"type":"string","description":"Specifies the name for this API key.\n"},"roleDescriptors":{"type":"string","description":"Role descriptors for this API key.\n"},"type":{"type":"string","description":"The type of API key. Valid values are 'rest' (default) and 'cross_cluster'. Cross-cluster API keys are used for cross-cluster search and replication.\n"}},"type":"object","required":["apiKey","encoded","expirationTimestamp","keyId","metadata","name","roleDescriptors","type"],"inputProperties":{"access":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyAccess:ElasticsearchSecurityApiKeyAccess","description":"Access configuration for cross-cluster API keys. Only applicable when type is 'cross_cluster'.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyElasticsearchConnection:ElasticsearchSecurityApiKeyElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"expiration":{"type":"string","description":"Expiration time for the API key. By default, API keys never expire.\n"},"metadata":{"type":"string","description":"Arbitrary metadata that you want to associate with the API key.\n"},"name":{"type":"string","description":"Specifies the name for this API key.\n"},"roleDescriptors":{"type":"string","description":"Role descriptors for this API key.\n"},"type":{"type":"string","description":"The type of API key. Valid values are 'rest' (default) and 'cross_cluster'. Cross-cluster API keys are used for cross-cluster search and replication.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecurityApiKey resources.\n","properties":{"access":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyAccess:ElasticsearchSecurityApiKeyAccess","description":"Access configuration for cross-cluster API keys. Only applicable when type is 'cross_cluster'.\n"},"apiKey":{"type":"string","description":"Generated API Key.\n","secret":true},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyElasticsearchConnection:ElasticsearchSecurityApiKeyElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"encoded":{"type":"string","description":"API key credentials which is the Base64-encoding of the UTF-8 representation of the id and\u003cspan pulumi-lang-nodejs=\" apiKey \" pulumi-lang-dotnet=\" ApiKey \" pulumi-lang-go=\" apiKey \" pulumi-lang-python=\" api_key \" pulumi-lang-yaml=\" apiKey \" pulumi-lang-java=\" apiKey \"\u003e api_key \u003c/span\u003ejoined by a colon (:).\n","secret":true},"expiration":{"type":"string","description":"Expiration time for the API key. By default, API keys never expire.\n"},"expirationTimestamp":{"type":"number","description":"Expiration time in milliseconds for the API key. By default, API keys never expire.\n"},"keyId":{"type":"string","description":"Unique id for this API key.\n"},"metadata":{"type":"string","description":"Arbitrary metadata that you want to associate with the API key.\n"},"name":{"type":"string","description":"Specifies the name for this API key.\n"},"roleDescriptors":{"type":"string","description":"Role descriptors for this API key.\n"},"type":{"type":"string","description":"The type of API key. Valid values are 'rest' (default) and 'cross_cluster'. Cross-cluster API keys are used for cross-cluster search and replication.\n"}},"type":"object"}},"elasticstack:index/elasticsearchSecurityRole:ElasticsearchSecurityRole":{"description":"Adds and updates roles in the native realm. See the [role API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nexport = async () =\u003e {\n    const role = new elasticstack.ElasticsearchSecurityRole(\"role\", {\n        name: \"testrole\",\n        description: \"Role for testing\",\n        clusters: [\"all\"],\n        indices: [{\n            names: [\n                \"index1\",\n                \"index2\",\n            ],\n            privileges: [\"all\"],\n        }],\n        applications: [{\n            application: \"myapp\",\n            privileges: [\n                \"admin\",\n                \"read\",\n            ],\n            resources: [\"*\"],\n        }],\n        runAs: [\"other_user\"],\n        metadata: JSON.stringify({\n            version: 1,\n        }),\n    });\n    return {\n        role: role,\n    };\n}\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nrole = elasticstack.ElasticsearchSecurityRole(\"role\",\n    name=\"testrole\",\n    description=\"Role for testing\",\n    clusters=[\"all\"],\n    indices=[{\n        \"names\": [\n            \"index1\",\n            \"index2\",\n        ],\n        \"privileges\": [\"all\"],\n    }],\n    applications=[{\n        \"application\": \"myapp\",\n        \"privileges\": [\n            \"admin\",\n            \"read\",\n        ],\n        \"resources\": [\"*\"],\n    }],\n    run_as=[\"other_user\"],\n    metadata=json.dumps({\n        \"version\": 1,\n    }))\npulumi.export(\"role\", role)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var role = new Elasticstack.ElasticsearchSecurityRole(\"role\", new()\n    {\n        Name = \"testrole\",\n        Description = \"Role for testing\",\n        Clusters = new[]\n        {\n            \"all\",\n        },\n        Indices = new[]\n        {\n            new Elasticstack.Inputs.ElasticsearchSecurityRoleIndexArgs\n            {\n                Names = new[]\n                {\n                    \"index1\",\n                    \"index2\",\n                },\n                Privileges = new[]\n                {\n                    \"all\",\n                },\n            },\n        },\n        Applications = new[]\n        {\n            new Elasticstack.Inputs.ElasticsearchSecurityRoleApplicationArgs\n            {\n                Application = \"myapp\",\n                Privileges = new[]\n                {\n                    \"admin\",\n                    \"read\",\n                },\n                Resources = new[]\n                {\n                    \"*\",\n                },\n            },\n        },\n        RunAs = new[]\n        {\n            \"other_user\",\n        },\n        Metadata = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"version\"] = 1,\n        }),\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"role\"] = role,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"version\": 1,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\trole, err := elasticstack.NewElasticsearchSecurityRole(ctx, \"role\", \u0026elasticstack.ElasticsearchSecurityRoleArgs{\n\t\t\tName:        pulumi.String(\"testrole\"),\n\t\t\tDescription: pulumi.String(\"Role for testing\"),\n\t\t\tClusters: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"all\"),\n\t\t\t},\n\t\t\tIndices: elasticstack.ElasticsearchSecurityRoleIndexArray{\n\t\t\t\t\u0026elasticstack.ElasticsearchSecurityRoleIndexArgs{\n\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"index1\"),\n\t\t\t\t\t\tpulumi.String(\"index2\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"all\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tApplications: elasticstack.ElasticsearchSecurityRoleApplicationArray{\n\t\t\t\t\u0026elasticstack.ElasticsearchSecurityRoleApplicationArgs{\n\t\t\t\t\tApplication: pulumi.String(\"myapp\"),\n\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"admin\"),\n\t\t\t\t\t\tpulumi.String(\"read\"),\n\t\t\t\t\t},\n\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRunAs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"other_user\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"role\", role)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchSecurityRole;\nimport com.pulumi.elasticstack.ElasticsearchSecurityRoleArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSecurityRoleIndexArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSecurityRoleApplicationArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var role = new ElasticsearchSecurityRole(\"role\", ElasticsearchSecurityRoleArgs.builder()\n            .name(\"testrole\")\n            .description(\"Role for testing\")\n            .clusters(\"all\")\n            .indices(ElasticsearchSecurityRoleIndexArgs.builder()\n                .names(                \n                    \"index1\",\n                    \"index2\")\n                .privileges(\"all\")\n                .build())\n            .applications(ElasticsearchSecurityRoleApplicationArgs.builder()\n                .application(\"myapp\")\n                .privileges(                \n                    \"admin\",\n                    \"read\")\n                .resources(\"*\")\n                .build())\n            .runAs(\"other_user\")\n            .metadata(serializeJson(\n                jsonObject(\n                    jsonProperty(\"version\", 1)\n                )))\n            .build());\n\n        ctx.export(\"role\", role);\n    }\n}\n```\n```yaml\nresources:\n  role:\n    type: elasticstack:ElasticsearchSecurityRole\n    properties:\n      name: testrole\n      description: Role for testing\n      clusters:\n        - all\n      indices:\n        - names:\n            - index1\n            - index2\n          privileges:\n            - all\n      applications:\n        - application: myapp\n          privileges:\n            - admin\n            - read\n          resources:\n            - '*'\n      runAs:\n        - other_user\n      metadata:\n        fn::toJSON:\n          version: 1\noutputs:\n  role: ${role}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchSecurityRole:ElasticsearchSecurityRole my_role \u003ccluster_uuid\u003e/\u003crole name\u003e\n```\n\n","properties":{"applications":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleApplication:ElasticsearchSecurityRoleApplication"},"description":"A list of application privilege entries.\n"},"clusters":{"type":"array","items":{"type":"string"},"description":"A list of cluster privileges. These privileges define the cluster level actions that users with this role are able to execute.\n"},"description":{"type":"string","description":"The description of the role.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleElasticsearchConnection:ElasticsearchSecurityRoleElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"global":{"type":"string","description":"An object defining global privileges.\n"},"indices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleIndex:ElasticsearchSecurityRoleIndex"},"description":"A list of indices permissions entries.\n"},"metadata":{"type":"string","description":"Optional meta-data.\n"},"name":{"type":"string","description":"The name of the role.\n"},"remoteIndices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleRemoteIndex:ElasticsearchSecurityRoleRemoteIndex"},"description":"A list of remote indices permissions entries. Remote indices are effective for remote clusters configured with the API key based model. They have no effect for remote clusters configured with the certificate based model.\n"},"runAs":{"type":"array","items":{"type":"string"},"description":"A list of users that the owners of this role can impersonate.\n"}},"type":"object","required":["metadata","name"],"inputProperties":{"applications":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleApplication:ElasticsearchSecurityRoleApplication"},"description":"A list of application privilege entries.\n"},"clusters":{"type":"array","items":{"type":"string"},"description":"A list of cluster privileges. These privileges define the cluster level actions that users with this role are able to execute.\n"},"description":{"type":"string","description":"The description of the role.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleElasticsearchConnection:ElasticsearchSecurityRoleElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"global":{"type":"string","description":"An object defining global privileges.\n"},"indices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleIndex:ElasticsearchSecurityRoleIndex"},"description":"A list of indices permissions entries.\n"},"metadata":{"type":"string","description":"Optional meta-data.\n"},"name":{"type":"string","description":"The name of the role.\n"},"remoteIndices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleRemoteIndex:ElasticsearchSecurityRoleRemoteIndex"},"description":"A list of remote indices permissions entries. Remote indices are effective for remote clusters configured with the API key based model. They have no effect for remote clusters configured with the certificate based model.\n"},"runAs":{"type":"array","items":{"type":"string"},"description":"A list of users that the owners of this role can impersonate.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecurityRole resources.\n","properties":{"applications":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleApplication:ElasticsearchSecurityRoleApplication"},"description":"A list of application privilege entries.\n"},"clusters":{"type":"array","items":{"type":"string"},"description":"A list of cluster privileges. These privileges define the cluster level actions that users with this role are able to execute.\n"},"description":{"type":"string","description":"The description of the role.\n"},"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleElasticsearchConnection:ElasticsearchSecurityRoleElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"global":{"type":"string","description":"An object defining global privileges.\n"},"indices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleIndex:ElasticsearchSecurityRoleIndex"},"description":"A list of indices permissions entries.\n"},"metadata":{"type":"string","description":"Optional meta-data.\n"},"name":{"type":"string","description":"The name of the role.\n"},"remoteIndices":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleRemoteIndex:ElasticsearchSecurityRoleRemoteIndex"},"description":"A list of remote indices permissions entries. Remote indices are effective for remote clusters configured with the API key based model. They have no effect for remote clusters configured with the certificate based model.\n"},"runAs":{"type":"array","items":{"type":"string"},"description":"A list of users that the owners of this role can impersonate.\n"}},"type":"object"}},"elasticstack:index/elasticsearchSecurityRoleMapping:ElasticsearchSecurityRoleMapping":{"description":"Manage role mappings. See the [role mapping API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-role-mapping.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.ElasticsearchSecurityRoleMapping(\"example\", {\n    name: \"test_role_mapping\",\n    enabled: true,\n    roles: [\"admin\"],\n    rules: JSON.stringify({\n        any: [\n            {\n                field: {\n                    username: \"esadmin\",\n                },\n            },\n            {\n                field: {\n                    groups: \"cn=admins,dc=example,dc=com\",\n                },\n            },\n        ],\n    }),\n});\nexport const role = example.name;\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.ElasticsearchSecurityRoleMapping(\"example\",\n    name=\"test_role_mapping\",\n    enabled=True,\n    roles=[\"admin\"],\n    rules=json.dumps({\n        \"any\": [\n            {\n                \"field\": {\n                    \"username\": \"esadmin\",\n                },\n            },\n            {\n                \"field\": {\n                    \"groups\": \"cn=admins,dc=example,dc=com\",\n                },\n            },\n        ],\n    }))\npulumi.export(\"role\", example.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.ElasticsearchSecurityRoleMapping(\"example\", new()\n    {\n        Name = \"test_role_mapping\",\n        Enabled = true,\n        Roles = new[]\n        {\n            \"admin\",\n        },\n        Rules = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"any\"] = new[]\n            {\n                new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"field\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"username\"] = \"esadmin\",\n                    },\n                },\n                new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"field\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"groups\"] = \"cn=admins,dc=example,dc=com\",\n                    },\n                },\n            },\n        }),\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"role\"] = example.Name,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"any\": []interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"field\": map[string]interface{}{\n\t\t\t\t\t\t\"username\": \"esadmin\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"field\": map[string]interface{}{\n\t\t\t\t\t\t\"groups\": \"cn=admins,dc=example,dc=com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texample, err := elasticstack.NewElasticsearchSecurityRoleMapping(ctx, \"example\", \u0026elasticstack.ElasticsearchSecurityRoleMappingArgs{\n\t\t\tName:    pulumi.String(\"test_role_mapping\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"admin\"),\n\t\t\t},\n\t\t\tRules: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"role\", example.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchSecurityRoleMapping;\nimport com.pulumi.elasticstack.ElasticsearchSecurityRoleMappingArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ElasticsearchSecurityRoleMapping(\"example\", ElasticsearchSecurityRoleMappingArgs.builder()\n            .name(\"test_role_mapping\")\n            .enabled(true)\n            .roles(\"admin\")\n            .rules(serializeJson(\n                jsonObject(\n                    jsonProperty(\"any\", jsonArray(\n                        jsonObject(\n                            jsonProperty(\"field\", jsonObject(\n                                jsonProperty(\"username\", \"esadmin\")\n                            ))\n                        ), \n                        jsonObject(\n                            jsonProperty(\"field\", jsonObject(\n                                jsonProperty(\"groups\", \"cn=admins,dc=example,dc=com\")\n                            ))\n                        )\n                    ))\n                )))\n            .build());\n\n        ctx.export(\"role\", example.name());\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:ElasticsearchSecurityRoleMapping\n    properties:\n      name: test_role_mapping\n      enabled: true\n      roles:\n        - admin\n      rules:\n        fn::toJSON:\n          any:\n            - field:\n                username: esadmin\n            - field:\n                groups: cn=admins,dc=example,dc=com\noutputs:\n  role: ${example.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchSecurityRoleMapping:ElasticsearchSecurityRoleMapping my_role_mapping \u003ccluster_uuid\u003e/\u003crole mapping name\u003e\n```\n\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleMappingElasticsearchConnection:ElasticsearchSecurityRoleMappingElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Mappings that have \u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e are ignored when role mapping is performed.\n"},"metadata":{"type":"string","description":"Additional metadata that helps define which roles are assigned to each user. Keys beginning with `_` are reserved for system usage.\n"},"name":{"type":"string","description":"The distinct name that identifies the role mapping, used solely as an identifier.\n"},"roleTemplates":{"type":"string","description":"A list of mustache templates that will be evaluated to determine the roles names that should granted to the users that match the role mapping rules.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"A list of role names that are granted to the users that match the role mapping rules.\n"},"rules":{"type":"string","description":"The rules that determine which users should be matched by the mapping. A rule is a logical condition that is expressed by using a JSON DSL.\n"}},"type":"object","required":["enabled","metadata","name","rules"],"inputProperties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleMappingElasticsearchConnection:ElasticsearchSecurityRoleMappingElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Mappings that have \u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e are ignored when role mapping is performed.\n"},"metadata":{"type":"string","description":"Additional metadata that helps define which roles are assigned to each user. Keys beginning with `_` are reserved for system usage.\n"},"name":{"type":"string","description":"The distinct name that identifies the role mapping, used solely as an identifier.\n"},"roleTemplates":{"type":"string","description":"A list of mustache templates that will be evaluated to determine the roles names that should granted to the users that match the role mapping rules.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"A list of role names that are granted to the users that match the role mapping rules.\n"},"rules":{"type":"string","description":"The rules that determine which users should be matched by the mapping. A rule is a logical condition that is expressed by using a JSON DSL.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecurityRoleMapping resources.\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleMappingElasticsearchConnection:ElasticsearchSecurityRoleMappingElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Mappings that have \u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e are ignored when role mapping is performed.\n"},"metadata":{"type":"string","description":"Additional metadata that helps define which roles are assigned to each user. Keys beginning with `_` are reserved for system usage.\n"},"name":{"type":"string","description":"The distinct name that identifies the role mapping, used solely as an identifier.\n"},"roleTemplates":{"type":"string","description":"A list of mustache templates that will be evaluated to determine the roles names that should granted to the users that match the role mapping rules.\n"},"roles":{"type":"array","items":{"type":"string"},"description":"A list of role names that are granted to the users that match the role mapping rules.\n"},"rules":{"type":"string","description":"The rules that determine which users should be matched by the mapping. A rule is a logical condition that is expressed by using a JSON DSL.\n"}},"type":"object"}},"elasticstack:index/elasticsearchSecuritySystemUser:ElasticsearchSecuritySystemUser":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst kibanaSystem = new elasticstack.ElasticsearchSecuritySystemUser(\"kibana_system\", {\n    username: \"kibana_system\",\n    passwordHash: \"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\",\n    elasticsearchConnections: [{\n        endpoints: [\"http://localhost:9200\"],\n        username: \"elastic\",\n        password: \"changeme\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nkibana_system = elasticstack.ElasticsearchSecuritySystemUser(\"kibana_system\",\n    username=\"kibana_system\",\n    password_hash=\"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\",\n    elasticsearch_connections=[{\n        \"endpoints\": [\"http://localhost:9200\"],\n        \"username\": \"elastic\",\n        \"password\": \"changeme\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kibanaSystem = new Elasticstack.ElasticsearchSecuritySystemUser(\"kibana_system\", new()\n    {\n        Username = \"kibana_system\",\n        PasswordHash = \"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\",\n        ElasticsearchConnections = new[]\n        {\n            new Elasticstack.Inputs.ElasticsearchSecuritySystemUserElasticsearchConnectionArgs\n            {\n                Endpoints = new[]\n                {\n                    \"http://localhost:9200\",\n                },\n                Username = \"elastic\",\n                Password = \"changeme\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewElasticsearchSecuritySystemUser(ctx, \"kibana_system\", \u0026elasticstack.ElasticsearchSecuritySystemUserArgs{\n\t\t\tUsername:     pulumi.String(\"kibana_system\"),\n\t\t\tPasswordHash: pulumi.String(\"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\"),\n\t\t\tElasticsearchConnections: elasticstack.ElasticsearchSecuritySystemUserElasticsearchConnectionArray{\n\t\t\t\t\u0026elasticstack.ElasticsearchSecuritySystemUserElasticsearchConnectionArgs{\n\t\t\t\t\tEndpoints: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"http://localhost:9200\"),\n\t\t\t\t\t},\n\t\t\t\t\tUsername: pulumi.String(\"elastic\"),\n\t\t\t\t\tPassword: pulumi.String(\"changeme\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchSecuritySystemUser;\nimport com.pulumi.elasticstack.ElasticsearchSecuritySystemUserArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSecuritySystemUserElasticsearchConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var kibanaSystem = new ElasticsearchSecuritySystemUser(\"kibanaSystem\", ElasticsearchSecuritySystemUserArgs.builder()\n            .username(\"kibana_system\")\n            .passwordHash(\"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\")\n            .elasticsearchConnections(ElasticsearchSecuritySystemUserElasticsearchConnectionArgs.builder()\n                .endpoints(\"http://localhost:9200\")\n                .username(\"elastic\")\n                .password(\"changeme\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  kibanaSystem:\n    type: elasticstack:ElasticsearchSecuritySystemUser\n    name: kibana_system\n    properties:\n      username: kibana_system\n      passwordHash: $2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\n      elasticsearchConnections:\n        - endpoints:\n            - http://localhost:9200\n          username: elastic\n          password: changeme\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecuritySystemUserElasticsearchConnection:ElasticsearchSecuritySystemUserElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Specifies whether the user is enabled. The default value is true.\n"},"password":{"type":"string","description":"The user's password. Passwords must be at least 6 characters long.\n","secret":true},"passwordHash":{"type":"string","description":"A hash of the user's password. This must be produced using the same hashing algorithm as has been configured for password storage (see the [security settings documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html#hashing-settings)).\n","secret":true},"username":{"type":"string","description":"An identifier for the system user (see the [built-in users documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/built-in-users.html)).\n"}},"type":"object","required":["enabled","username"],"inputProperties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecuritySystemUserElasticsearchConnection:ElasticsearchSecuritySystemUserElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Specifies whether the user is enabled. The default value is true.\n"},"password":{"type":"string","description":"The user's password. Passwords must be at least 6 characters long.\n","secret":true},"passwordHash":{"type":"string","description":"A hash of the user's password. This must be produced using the same hashing algorithm as has been configured for password storage (see the [security settings documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html#hashing-settings)).\n","secret":true},"username":{"type":"string","description":"An identifier for the system user (see the [built-in users documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/built-in-users.html)).\n"}},"requiredInputs":["username"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecuritySystemUser resources.\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecuritySystemUserElasticsearchConnection:ElasticsearchSecuritySystemUserElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"enabled":{"type":"boolean","description":"Specifies whether the user is enabled. The default value is true.\n"},"password":{"type":"string","description":"The user's password. Passwords must be at least 6 characters long.\n","secret":true},"passwordHash":{"type":"string","description":"A hash of the user's password. This must be produced using the same hashing algorithm as has been configured for password storage (see the [security settings documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html#hashing-settings)).\n","secret":true},"username":{"type":"string","description":"An identifier for the system user (see the [built-in users documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/built-in-users.html)).\n"}},"type":"object"}},"elasticstack:index/elasticsearchSecurityUser:ElasticsearchSecurityUser":{"description":"Adds and updates users in the native realm. These users are commonly referred to as native users. See the [Elasticsearch security user API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst user = new elasticstack.ElasticsearchSecurityUser(\"user\", {\n    username: \"testuser\",\n    passwordHash: \"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\",\n    roles: [\"kibana_user\"],\n    metadata: JSON.stringify({\n        env: \"testing\",\n        open: false,\n        number: 49,\n    }),\n    elasticsearchConnections: [{\n        endpoints: [\"http://localhost:9200\"],\n        username: \"elastic\",\n        password: \"changeme\",\n    }],\n});\nconst dev = new elasticstack.ElasticsearchSecurityUser(\"dev\", {\n    username: \"devuser\",\n    password: \"1234567890\",\n    roles: [\"kibana_user\"],\n    metadata: JSON.stringify({\n        env: \"testing\",\n        open: false,\n        number: 49,\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nuser = elasticstack.ElasticsearchSecurityUser(\"user\",\n    username=\"testuser\",\n    password_hash=\"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\",\n    roles=[\"kibana_user\"],\n    metadata=json.dumps({\n        \"env\": \"testing\",\n        \"open\": False,\n        \"number\": 49,\n    }),\n    elasticsearch_connections=[{\n        \"endpoints\": [\"http://localhost:9200\"],\n        \"username\": \"elastic\",\n        \"password\": \"changeme\",\n    }])\ndev = elasticstack.ElasticsearchSecurityUser(\"dev\",\n    username=\"devuser\",\n    password=\"1234567890\",\n    roles=[\"kibana_user\"],\n    metadata=json.dumps({\n        \"env\": \"testing\",\n        \"open\": False,\n        \"number\": 49,\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var user = new Elasticstack.ElasticsearchSecurityUser(\"user\", new()\n    {\n        Username = \"testuser\",\n        PasswordHash = \"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\",\n        Roles = new[]\n        {\n            \"kibana_user\",\n        },\n        Metadata = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"env\"] = \"testing\",\n            [\"open\"] = false,\n            [\"number\"] = 49,\n        }),\n        ElasticsearchConnections = new[]\n        {\n            new Elasticstack.Inputs.ElasticsearchSecurityUserElasticsearchConnectionArgs\n            {\n                Endpoints = new[]\n                {\n                    \"http://localhost:9200\",\n                },\n                Username = \"elastic\",\n                Password = \"changeme\",\n            },\n        },\n    });\n\n    var dev = new Elasticstack.ElasticsearchSecurityUser(\"dev\", new()\n    {\n        Username = \"devuser\",\n        Password = \"1234567890\",\n        Roles = new[]\n        {\n            \"kibana_user\",\n        },\n        Metadata = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"env\"] = \"testing\",\n            [\"open\"] = false,\n            [\"number\"] = 49,\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"env\":    \"testing\",\n\t\t\t\"open\":   false,\n\t\t\t\"number\": 49,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = elasticstack.NewElasticsearchSecurityUser(ctx, \"user\", \u0026elasticstack.ElasticsearchSecurityUserArgs{\n\t\t\tUsername:     pulumi.String(\"testuser\"),\n\t\t\tPasswordHash: pulumi.String(\"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"kibana_user\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.String(json0),\n\t\t\tElasticsearchConnections: elasticstack.ElasticsearchSecurityUserElasticsearchConnectionArray{\n\t\t\t\t\u0026elasticstack.ElasticsearchSecurityUserElasticsearchConnectionArgs{\n\t\t\t\t\tEndpoints: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"http://localhost:9200\"),\n\t\t\t\t\t},\n\t\t\t\t\tUsername: pulumi.String(\"elastic\"),\n\t\t\t\t\tPassword: pulumi.String(\"changeme\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"env\":    \"testing\",\n\t\t\t\"open\":   false,\n\t\t\t\"number\": 49,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = elasticstack.NewElasticsearchSecurityUser(ctx, \"dev\", \u0026elasticstack.ElasticsearchSecurityUserArgs{\n\t\t\tUsername: pulumi.String(\"devuser\"),\n\t\t\tPassword: pulumi.String(\"1234567890\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"kibana_user\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchSecurityUser;\nimport com.pulumi.elasticstack.ElasticsearchSecurityUserArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSecurityUserElasticsearchConnectionArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var user = new ElasticsearchSecurityUser(\"user\", ElasticsearchSecurityUserArgs.builder()\n            .username(\"testuser\")\n            .passwordHash(\"$2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\")\n            .roles(\"kibana_user\")\n            .metadata(serializeJson(\n                jsonObject(\n                    jsonProperty(\"env\", \"testing\"),\n                    jsonProperty(\"open\", false),\n                    jsonProperty(\"number\", 49)\n                )))\n            .elasticsearchConnections(ElasticsearchSecurityUserElasticsearchConnectionArgs.builder()\n                .endpoints(\"http://localhost:9200\")\n                .username(\"elastic\")\n                .password(\"changeme\")\n                .build())\n            .build());\n\n        var dev = new ElasticsearchSecurityUser(\"dev\", ElasticsearchSecurityUserArgs.builder()\n            .username(\"devuser\")\n            .password(\"1234567890\")\n            .roles(\"kibana_user\")\n            .metadata(serializeJson(\n                jsonObject(\n                    jsonProperty(\"env\", \"testing\"),\n                    jsonProperty(\"open\", false),\n                    jsonProperty(\"number\", 49)\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  user:\n    type: elasticstack:ElasticsearchSecurityUser\n    properties:\n      username: testuser\n      passwordHash: $2a$10$rMZe6TdsUwBX/TA8vRDz0OLwKAZeCzXM4jT3tfCjpSTB8HoFuq8xO\n      roles:\n        - kibana_user\n      metadata:\n        fn::toJSON:\n          env: testing\n          open: false\n          number: 49\n      elasticsearchConnections:\n        - endpoints:\n            - http://localhost:9200\n          username: elastic\n          password: changeme\n  dev:\n    type: elasticstack:ElasticsearchSecurityUser\n    properties:\n      username: devuser\n      password: '1234567890'\n      roles:\n        - kibana_user\n      metadata:\n        fn::toJSON:\n          env: testing\n          open: false\n          number: 49\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchSecurityUser:ElasticsearchSecurityUser user \u003ccluster_uuid\u003e/\u003cuser-name\u003e\n```\n\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityUserElasticsearchConnection:ElasticsearchSecurityUserElasticsearchConnection"},"description":"Elasticsearch connection configuration block.","deprecationMessage":"Deprecated"},"email":{"type":"string","description":"The email of the user."},"enabled":{"type":"boolean","description":"Specifies whether the user is enabled. The default value is true."},"fullName":{"type":"string","description":"The full name of the user."},"metadata":{"type":"string","description":"Arbitrary metadata that you want to associate with the user."},"password":{"type":"string","description":"The user's password. Passwords must be at least 6 characters long. Note: Consider using \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`password_wo`\u003c/span\u003e for better security with ephemeral resources.","secret":true},"passwordHash":{"type":"string","description":"A hash of the user's password. This must be produced using the same hashing algorithm as has been configured for password storage (see the [security settings documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html#hashing-settings)).","secret":true},"passwordWo":{"type":"string","secret":true},"passwordWoVersion":{"type":"string","description":"Version identifier for the write-only password. This field is used to trigger updates when the password changes. Required when \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`password_wo`\u003c/span\u003e is set. Typically, you would use a hash of the password or a version identifier from your secret management system."},"roles":{"type":"array","items":{"type":"string"},"description":"A set of roles the user has. The roles determine the user's access permissions.\n"},"username":{"type":"string","description":"An identifier for the user (see the [security API put user documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html#security-api-put-user-path-params) for more details).\n"}},"type":"object","required":["email","enabled","fullName","metadata","roles","username"],"inputProperties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityUserElasticsearchConnection:ElasticsearchSecurityUserElasticsearchConnection"},"description":"Elasticsearch connection configuration block.","deprecationMessage":"Deprecated"},"email":{"type":"string","description":"The email of the user."},"enabled":{"type":"boolean","description":"Specifies whether the user is enabled. The default value is true."},"fullName":{"type":"string","description":"The full name of the user."},"metadata":{"type":"string","description":"Arbitrary metadata that you want to associate with the user."},"password":{"type":"string","description":"The user's password. Passwords must be at least 6 characters long. Note: Consider using \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`password_wo`\u003c/span\u003e for better security with ephemeral resources.","secret":true},"passwordHash":{"type":"string","description":"A hash of the user's password. This must be produced using the same hashing algorithm as has been configured for password storage (see the [security settings documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html#hashing-settings)).","secret":true},"passwordWo":{"type":"string","secret":true},"passwordWoVersion":{"type":"string","description":"Version identifier for the write-only password. This field is used to trigger updates when the password changes. Required when \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`password_wo`\u003c/span\u003e is set. Typically, you would use a hash of the password or a version identifier from your secret management system."},"roles":{"type":"array","items":{"type":"string"},"description":"A set of roles the user has. The roles determine the user's access permissions.\n"},"username":{"type":"string","description":"An identifier for the user (see the [security API put user documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html#security-api-put-user-path-params) for more details).\n"}},"requiredInputs":["roles","username"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecurityUser resources.\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityUserElasticsearchConnection:ElasticsearchSecurityUserElasticsearchConnection"},"description":"Elasticsearch connection configuration block.","deprecationMessage":"Deprecated"},"email":{"type":"string","description":"The email of the user."},"enabled":{"type":"boolean","description":"Specifies whether the user is enabled. The default value is true."},"fullName":{"type":"string","description":"The full name of the user."},"metadata":{"type":"string","description":"Arbitrary metadata that you want to associate with the user."},"password":{"type":"string","description":"The user's password. Passwords must be at least 6 characters long. Note: Consider using \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`password_wo`\u003c/span\u003e for better security with ephemeral resources.","secret":true},"passwordHash":{"type":"string","description":"A hash of the user's password. This must be produced using the same hashing algorithm as has been configured for password storage (see the [security settings documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-settings.html#hashing-settings)).","secret":true},"passwordWo":{"type":"string","secret":true},"passwordWoVersion":{"type":"string","description":"Version identifier for the write-only password. This field is used to trigger updates when the password changes. Required when \u003cspan pulumi-lang-nodejs=\"`passwordWo`\" pulumi-lang-dotnet=\"`PasswordWo`\" pulumi-lang-go=\"`passwordWo`\" pulumi-lang-python=\"`password_wo`\" pulumi-lang-yaml=\"`passwordWo`\" pulumi-lang-java=\"`passwordWo`\"\u003e`password_wo`\u003c/span\u003e is set. Typically, you would use a hash of the password or a version identifier from your secret management system."},"roles":{"type":"array","items":{"type":"string"},"description":"A set of roles the user has. The roles determine the user's access permissions.\n"},"username":{"type":"string","description":"An identifier for the user (see the [security API put user documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-put-user.html#security-api-put-user-path-params) for more details).\n"}},"type":"object"}},"elasticstack:index/elasticsearchSnapshotLifecycle:ElasticsearchSnapshotLifecycle":{"description":"Creates or updates a snapshot lifecycle policy. See the [SLM API policy documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/slm-api-put-policy.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// create a repository for snapshots\nconst repo = new elasticstack.ElasticsearchSnapshotRepository(\"repo\", {\n    name: \"my_snap_repo\",\n    fs: {\n        location: \"/tmp/snapshots\",\n        compress: true,\n        maxRestoreBytesPerSec: \"20mb\",\n    },\n});\n// create a SLM policy and use the above created repository\nconst slmPolicy = new elasticstack.ElasticsearchSnapshotLifecycle(\"slm_policy\", {\n    name: \"my_slm_policy\",\n    schedule: \"0 30 1 * * ?\",\n    snapshotName: \"\u003cdaily-snap-{now/d}\u003e\",\n    repository: repo.name,\n    indices: [\n        \"data-*\",\n        \"important\",\n    ],\n    ignoreUnavailable: false,\n    includeGlobalState: false,\n    expireAfter: \"30d\",\n    minCount: 5,\n    maxCount: 50,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# create a repository for snapshots\nrepo = elasticstack.ElasticsearchSnapshotRepository(\"repo\",\n    name=\"my_snap_repo\",\n    fs={\n        \"location\": \"/tmp/snapshots\",\n        \"compress\": True,\n        \"max_restore_bytes_per_sec\": \"20mb\",\n    })\n# create a SLM policy and use the above created repository\nslm_policy = elasticstack.ElasticsearchSnapshotLifecycle(\"slm_policy\",\n    name=\"my_slm_policy\",\n    schedule=\"0 30 1 * * ?\",\n    snapshot_name=\"\u003cdaily-snap-{now/d}\u003e\",\n    repository=repo.name,\n    indices=[\n        \"data-*\",\n        \"important\",\n    ],\n    ignore_unavailable=False,\n    include_global_state=False,\n    expire_after=\"30d\",\n    min_count=5,\n    max_count=50)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // create a repository for snapshots\n    var repo = new Elasticstack.ElasticsearchSnapshotRepository(\"repo\", new()\n    {\n        Name = \"my_snap_repo\",\n        Fs = new Elasticstack.Inputs.ElasticsearchSnapshotRepositoryFsArgs\n        {\n            Location = \"/tmp/snapshots\",\n            Compress = true,\n            MaxRestoreBytesPerSec = \"20mb\",\n        },\n    });\n\n    // create a SLM policy and use the above created repository\n    var slmPolicy = new Elasticstack.ElasticsearchSnapshotLifecycle(\"slm_policy\", new()\n    {\n        Name = \"my_slm_policy\",\n        Schedule = \"0 30 1 * * ?\",\n        SnapshotName = \"\u003cdaily-snap-{now/d}\u003e\",\n        Repository = repo.Name,\n        Indices = new[]\n        {\n            \"data-*\",\n            \"important\",\n        },\n        IgnoreUnavailable = false,\n        IncludeGlobalState = false,\n        ExpireAfter = \"30d\",\n        MinCount = 5,\n        MaxCount = 50,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// create a repository for snapshots\n\t\trepo, err := elasticstack.NewElasticsearchSnapshotRepository(ctx, \"repo\", \u0026elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_snap_repo\"),\n\t\t\tFs: \u0026elasticstack.ElasticsearchSnapshotRepositoryFsArgs{\n\t\t\t\tLocation:              pulumi.String(\"/tmp/snapshots\"),\n\t\t\t\tCompress:              pulumi.Bool(true),\n\t\t\t\tMaxRestoreBytesPerSec: pulumi.String(\"20mb\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// create a SLM policy and use the above created repository\n\t\t_, err = elasticstack.NewElasticsearchSnapshotLifecycle(ctx, \"slm_policy\", \u0026elasticstack.ElasticsearchSnapshotLifecycleArgs{\n\t\t\tName:         pulumi.String(\"my_slm_policy\"),\n\t\t\tSchedule:     pulumi.String(\"0 30 1 * * ?\"),\n\t\t\tSnapshotName: pulumi.String(\"\u003cdaily-snap-{now/d}\u003e\"),\n\t\t\tRepository:   repo.Name,\n\t\t\tIndices: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"data-*\"),\n\t\t\t\tpulumi.String(\"important\"),\n\t\t\t},\n\t\t\tIgnoreUnavailable:  pulumi.Bool(false),\n\t\t\tIncludeGlobalState: pulumi.Bool(false),\n\t\t\tExpireAfter:        pulumi.String(\"30d\"),\n\t\t\tMinCount:           pulumi.Float64(5),\n\t\t\tMaxCount:           pulumi.Float64(50),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchSnapshotRepository;\nimport com.pulumi.elasticstack.ElasticsearchSnapshotRepositoryArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSnapshotRepositoryFsArgs;\nimport com.pulumi.elasticstack.ElasticsearchSnapshotLifecycle;\nimport com.pulumi.elasticstack.ElasticsearchSnapshotLifecycleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // create a repository for snapshots\n        var repo = new ElasticsearchSnapshotRepository(\"repo\", ElasticsearchSnapshotRepositoryArgs.builder()\n            .name(\"my_snap_repo\")\n            .fs(ElasticsearchSnapshotRepositoryFsArgs.builder()\n                .location(\"/tmp/snapshots\")\n                .compress(true)\n                .maxRestoreBytesPerSec(\"20mb\")\n                .build())\n            .build());\n\n        // create a SLM policy and use the above created repository\n        var slmPolicy = new ElasticsearchSnapshotLifecycle(\"slmPolicy\", ElasticsearchSnapshotLifecycleArgs.builder()\n            .name(\"my_slm_policy\")\n            .schedule(\"0 30 1 * * ?\")\n            .snapshotName(\"\u003cdaily-snap-{now/d}\u003e\")\n            .repository(repo.name())\n            .indices(            \n                \"data-*\",\n                \"important\")\n            .ignoreUnavailable(false)\n            .includeGlobalState(false)\n            .expireAfter(\"30d\")\n            .minCount(5.0)\n            .maxCount(50.0)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # create a repository for snapshots\n  repo:\n    type: elasticstack:ElasticsearchSnapshotRepository\n    properties:\n      name: my_snap_repo\n      fs:\n        location: /tmp/snapshots\n        compress: true\n        maxRestoreBytesPerSec: 20mb\n  # create a SLM policy and use the above created repository\n  slmPolicy:\n    type: elasticstack:ElasticsearchSnapshotLifecycle\n    name: slm_policy\n    properties:\n      name: my_slm_policy\n      schedule: 0 30 1 * * ?\n      snapshotName: \u003cdaily-snap-{now/d}\u003e\n      repository: ${repo.name}\n      indices:\n        - data-*\n        - important\n      ignoreUnavailable: false\n      includeGlobalState: false\n      expireAfter: 30d\n      minCount: 5\n      maxCount: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchSnapshotLifecycle:ElasticsearchSnapshotLifecycle my_policy \u003ccluster_uuid\u003e/\u003cslm policy name\u003e\n```\n\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotLifecycleElasticsearchConnection:ElasticsearchSnapshotLifecycleElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"expandWildcards":{"type":"string","description":"Determines how wildcard patterns in the \u003cspan pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\"\u003e`indices`\u003c/span\u003e parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n"},"expireAfter":{"type":"string","description":"Time period after which a snapshot is considered expired and eligible for deletion.\n"},"featureStates":{"type":"array","items":{"type":"string"},"description":"Feature states to include in the snapshot.\n"},"ignoreUnavailable":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the snapshot fails if any data stream or index in indices is missing or closed. If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the snapshot ignores missing or closed data streams and indices.\n"},"includeGlobalState":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, include the cluster state in the snapshot.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Comma-separated list of data streams and indices to include in the snapshot.\n"},"maxCount":{"type":"number","description":"Maximum number of snapshots to retain, even if the snapshots have not yet expired.\n"},"metadata":{"type":"string","description":"Attaches arbitrary metadata to the snapshot.\n"},"minCount":{"type":"number","description":"Minimum number of snapshots to retain, even if the snapshots have expired.\n"},"name":{"type":"string","description":"ID for the snapshot lifecycle policy you want to create or update.\n"},"partial":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the entire snapshot will fail if one or more indices included in the snapshot do not have all primary shards available.\n"},"repository":{"type":"string","description":"Repository used to store snapshots created by this policy.\n"},"schedule":{"type":"string","description":"Periodic or absolute schedule at which the policy creates snapshots.\n"},"snapshotName":{"type":"string","description":"Name automatically assigned to each snapshot created by the policy.\n"}},"type":"object","required":["featureStates","indices","metadata","name","repository","schedule"],"inputProperties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotLifecycleElasticsearchConnection:ElasticsearchSnapshotLifecycleElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"expandWildcards":{"type":"string","description":"Determines how wildcard patterns in the \u003cspan pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\"\u003e`indices`\u003c/span\u003e parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n"},"expireAfter":{"type":"string","description":"Time period after which a snapshot is considered expired and eligible for deletion.\n"},"featureStates":{"type":"array","items":{"type":"string"},"description":"Feature states to include in the snapshot.\n"},"ignoreUnavailable":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the snapshot fails if any data stream or index in indices is missing or closed. If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the snapshot ignores missing or closed data streams and indices.\n"},"includeGlobalState":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, include the cluster state in the snapshot.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Comma-separated list of data streams and indices to include in the snapshot.\n"},"maxCount":{"type":"number","description":"Maximum number of snapshots to retain, even if the snapshots have not yet expired.\n"},"metadata":{"type":"string","description":"Attaches arbitrary metadata to the snapshot.\n"},"minCount":{"type":"number","description":"Minimum number of snapshots to retain, even if the snapshots have expired.\n"},"name":{"type":"string","description":"ID for the snapshot lifecycle policy you want to create or update.\n"},"partial":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the entire snapshot will fail if one or more indices included in the snapshot do not have all primary shards available.\n"},"repository":{"type":"string","description":"Repository used to store snapshots created by this policy.\n"},"schedule":{"type":"string","description":"Periodic or absolute schedule at which the policy creates snapshots.\n"},"snapshotName":{"type":"string","description":"Name automatically assigned to each snapshot created by the policy.\n"}},"requiredInputs":["repository","schedule"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSnapshotLifecycle resources.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotLifecycleElasticsearchConnection:ElasticsearchSnapshotLifecycleElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"expandWildcards":{"type":"string","description":"Determines how wildcard patterns in the \u003cspan pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\"\u003e`indices`\u003c/span\u003e parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n"},"expireAfter":{"type":"string","description":"Time period after which a snapshot is considered expired and eligible for deletion.\n"},"featureStates":{"type":"array","items":{"type":"string"},"description":"Feature states to include in the snapshot.\n"},"ignoreUnavailable":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the snapshot fails if any data stream or index in indices is missing or closed. If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the snapshot ignores missing or closed data streams and indices.\n"},"includeGlobalState":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, include the cluster state in the snapshot.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Comma-separated list of data streams and indices to include in the snapshot.\n"},"maxCount":{"type":"number","description":"Maximum number of snapshots to retain, even if the snapshots have not yet expired.\n"},"metadata":{"type":"string","description":"Attaches arbitrary metadata to the snapshot.\n"},"minCount":{"type":"number","description":"Minimum number of snapshots to retain, even if the snapshots have expired.\n"},"name":{"type":"string","description":"ID for the snapshot lifecycle policy you want to create or update.\n"},"partial":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the entire snapshot will fail if one or more indices included in the snapshot do not have all primary shards available.\n"},"repository":{"type":"string","description":"Repository used to store snapshots created by this policy.\n"},"schedule":{"type":"string","description":"Periodic or absolute schedule at which the policy creates snapshots.\n"},"snapshotName":{"type":"string","description":"Name automatically assigned to each snapshot created by the policy.\n"}},"type":"object"}},"elasticstack:index/elasticsearchSnapshotRepository:ElasticsearchSnapshotRepository":{"description":"Registers or updates a snapshot repository. See the [put snapshot repository API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/put-snapshot-repo-api.html) and [register repository documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/snapshots-register-repository.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myUrlRepo = new elasticstack.ElasticsearchSnapshotRepository(\"my_url_repo\", {\n    name: \"my_url_repo\",\n    url: {\n        url: \"https://example.com/repo\",\n    },\n});\nconst myFsRepo = new elasticstack.ElasticsearchSnapshotRepository(\"my_fs_repo\", {\n    name: \"my_fs_repo\",\n    fs: {\n        location: \"/tmp\",\n        compress: true,\n        maxRestoreBytesPerSec: \"10mb\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmy_url_repo = elasticstack.ElasticsearchSnapshotRepository(\"my_url_repo\",\n    name=\"my_url_repo\",\n    url={\n        \"url\": \"https://example.com/repo\",\n    })\nmy_fs_repo = elasticstack.ElasticsearchSnapshotRepository(\"my_fs_repo\",\n    name=\"my_fs_repo\",\n    fs={\n        \"location\": \"/tmp\",\n        \"compress\": True,\n        \"max_restore_bytes_per_sec\": \"10mb\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myUrlRepo = new Elasticstack.ElasticsearchSnapshotRepository(\"my_url_repo\", new()\n    {\n        Name = \"my_url_repo\",\n        Url = new Elasticstack.Inputs.ElasticsearchSnapshotRepositoryUrlArgs\n        {\n            Url = \"https://example.com/repo\",\n        },\n    });\n\n    var myFsRepo = new Elasticstack.ElasticsearchSnapshotRepository(\"my_fs_repo\", new()\n    {\n        Name = \"my_fs_repo\",\n        Fs = new Elasticstack.Inputs.ElasticsearchSnapshotRepositoryFsArgs\n        {\n            Location = \"/tmp\",\n            Compress = true,\n            MaxRestoreBytesPerSec = \"10mb\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewElasticsearchSnapshotRepository(ctx, \"my_url_repo\", \u0026elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_url_repo\"),\n\t\t\tUrl: \u0026elasticstack.ElasticsearchSnapshotRepositoryUrlArgs{\n\t\t\t\tUrl: pulumi.String(\"https://example.com/repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchSnapshotRepository(ctx, \"my_fs_repo\", \u0026elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_fs_repo\"),\n\t\t\tFs: \u0026elasticstack.ElasticsearchSnapshotRepositoryFsArgs{\n\t\t\t\tLocation:              pulumi.String(\"/tmp\"),\n\t\t\t\tCompress:              pulumi.Bool(true),\n\t\t\t\tMaxRestoreBytesPerSec: pulumi.String(\"10mb\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchSnapshotRepository;\nimport com.pulumi.elasticstack.ElasticsearchSnapshotRepositoryArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSnapshotRepositoryUrlArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSnapshotRepositoryFsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myUrlRepo = new ElasticsearchSnapshotRepository(\"myUrlRepo\", ElasticsearchSnapshotRepositoryArgs.builder()\n            .name(\"my_url_repo\")\n            .url(ElasticsearchSnapshotRepositoryUrlArgs.builder()\n                .url(\"https://example.com/repo\")\n                .build())\n            .build());\n\n        var myFsRepo = new ElasticsearchSnapshotRepository(\"myFsRepo\", ElasticsearchSnapshotRepositoryArgs.builder()\n            .name(\"my_fs_repo\")\n            .fs(ElasticsearchSnapshotRepositoryFsArgs.builder()\n                .location(\"/tmp\")\n                .compress(true)\n                .maxRestoreBytesPerSec(\"10mb\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myUrlRepo:\n    type: elasticstack:ElasticsearchSnapshotRepository\n    name: my_url_repo\n    properties:\n      name: my_url_repo\n      url:\n        url: https://example.com/repo\n  myFsRepo:\n    type: elasticstack:ElasticsearchSnapshotRepository\n    name: my_fs_repo\n    properties:\n      name: my_fs_repo\n      fs:\n        location: /tmp\n        compress: true\n        maxRestoreBytesPerSec: 10mb\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchSnapshotRepository:ElasticsearchSnapshotRepository my_repository \u003ccluster_uuid\u003e/\u003crepository name\u003e\n```\n\n","properties":{"azure":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryAzure:ElasticsearchSnapshotRepositoryAzure","description":"Support for using Azure Blob storage as a repository for Snapshot/Restore. See the [repository Azure plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-azure.html) for more details.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryElasticsearchConnection:ElasticsearchSnapshotRepositoryElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"fs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryFs:ElasticsearchSnapshotRepositoryFs","description":"Shared filesystem repository. Repositories of this type use a shared filesystem to store snapshots. This filesystem must be accessible to all master and data nodes in the cluster.\n"},"gcs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryGcs:ElasticsearchSnapshotRepositoryGcs","description":"Support for using the Google Cloud Storage service as a repository for Snapshot/Restore. See the [repository GCS plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-gcs.html) for more details.\n"},"hdfs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryHdfs:ElasticsearchSnapshotRepositoryHdfs","description":"Support for using HDFS File System as a repository for Snapshot/Restore. See the [repository HDFS plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-hdfs.html) for more details.\n"},"name":{"type":"string","description":"Name of the snapshot repository to register or update.\n"},"s3":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryS3:ElasticsearchSnapshotRepositoryS3","description":"Support for using AWS S3 as a repository for Snapshot/Restore. See the [repository S3 plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-s3-repository.html) for more details.\n"},"url":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryUrl:ElasticsearchSnapshotRepositoryUrl","description":"URL repository. Repositories of this type are read-only for the cluster. This means the cluster can retrieve or restore snapshots from the repository but cannot write or create snapshots in it.\n"},"verify":{"type":"boolean","description":"If true, the request verifies the repository is functional on all master and data nodes in the cluster.\n"}},"type":"object","required":["name"],"inputProperties":{"azure":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryAzure:ElasticsearchSnapshotRepositoryAzure","description":"Support for using Azure Blob storage as a repository for Snapshot/Restore. See the [repository Azure plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-azure.html) for more details.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryElasticsearchConnection:ElasticsearchSnapshotRepositoryElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"fs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryFs:ElasticsearchSnapshotRepositoryFs","description":"Shared filesystem repository. Repositories of this type use a shared filesystem to store snapshots. This filesystem must be accessible to all master and data nodes in the cluster.\n"},"gcs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryGcs:ElasticsearchSnapshotRepositoryGcs","description":"Support for using the Google Cloud Storage service as a repository for Snapshot/Restore. See the [repository GCS plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-gcs.html) for more details.\n"},"hdfs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryHdfs:ElasticsearchSnapshotRepositoryHdfs","description":"Support for using HDFS File System as a repository for Snapshot/Restore. See the [repository HDFS plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-hdfs.html) for more details.\n"},"name":{"type":"string","description":"Name of the snapshot repository to register or update.\n"},"s3":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryS3:ElasticsearchSnapshotRepositoryS3","description":"Support for using AWS S3 as a repository for Snapshot/Restore. See the [repository S3 plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-s3-repository.html) for more details.\n"},"url":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryUrl:ElasticsearchSnapshotRepositoryUrl","description":"URL repository. Repositories of this type are read-only for the cluster. This means the cluster can retrieve or restore snapshots from the repository but cannot write or create snapshots in it.\n"},"verify":{"type":"boolean","description":"If true, the request verifies the repository is functional on all master and data nodes in the cluster.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSnapshotRepository resources.\n","properties":{"azure":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryAzure:ElasticsearchSnapshotRepositoryAzure","description":"Support for using Azure Blob storage as a repository for Snapshot/Restore. See the [repository Azure plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-azure.html) for more details.\n"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryElasticsearchConnection:ElasticsearchSnapshotRepositoryElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"fs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryFs:ElasticsearchSnapshotRepositoryFs","description":"Shared filesystem repository. Repositories of this type use a shared filesystem to store snapshots. This filesystem must be accessible to all master and data nodes in the cluster.\n"},"gcs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryGcs:ElasticsearchSnapshotRepositoryGcs","description":"Support for using the Google Cloud Storage service as a repository for Snapshot/Restore. See the [repository GCS plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-gcs.html) for more details.\n"},"hdfs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryHdfs:ElasticsearchSnapshotRepositoryHdfs","description":"Support for using HDFS File System as a repository for Snapshot/Restore. See the [repository HDFS plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-hdfs.html) for more details.\n"},"name":{"type":"string","description":"Name of the snapshot repository to register or update.\n"},"s3":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryS3:ElasticsearchSnapshotRepositoryS3","description":"Support for using AWS S3 as a repository for Snapshot/Restore. See the [repository S3 plugin documentation](https://www.elastic.co/guide/en/elasticsearch/plugins/current/repository-s3-repository.html) for more details.\n"},"url":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryUrl:ElasticsearchSnapshotRepositoryUrl","description":"URL repository. Repositories of this type are read-only for the cluster. This means the cluster can retrieve or restore snapshots from the repository but cannot write or create snapshots in it.\n"},"verify":{"type":"boolean","description":"If true, the request verifies the repository is functional on all master and data nodes in the cluster.\n"}},"type":"object"}},"elasticstack:index/elasticsearchTransform:ElasticsearchTransform":{"description":"Manages Elasticsearch transforms. See the [transforms documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/transforms.html) for more details.\n\n**NOTE:** Some transform settings require a minimum Elasticsearch version. Such settings will be ignored when applied to versions below the required one (a warning will be issued in the logs).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst transformWithPivot = new elasticstack.ElasticsearchTransform(\"transform_with_pivot\", {\n    name: \"transform-pivot\",\n    description: \"A meaningful description\",\n    source: {\n        indices: [\"names_or_patterns_for_input_index\"],\n    },\n    destination: {\n        index: \"destination_index_for_transform\",\n        aliases: [\n            {\n                alias: \"test_alias_1\",\n                moveOnCreation: true,\n            },\n            {\n                alias: \"test_alias_2\",\n                moveOnCreation: false,\n            },\n        ],\n    },\n    pivot: JSON.stringify({\n        group_by: {\n            customer_id: {\n                terms: {\n                    field: \"customer_id\",\n                    missing_bucket: true,\n                },\n            },\n        },\n        aggregations: {\n            max_price: {\n                max: {\n                    field: \"taxful_total_price\",\n                },\n            },\n        },\n    }),\n    frequency: \"5m\",\n    retentionPolicy: {\n        time: {\n            field: \"order_date\",\n            maxAge: \"30d\",\n        },\n    },\n    sync: {\n        time: {\n            field: \"order_date\",\n            delay: \"10s\",\n        },\n    },\n    maxPageSearchSize: 2000,\n    enabled: false,\n    deferValidation: false,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\ntransform_with_pivot = elasticstack.ElasticsearchTransform(\"transform_with_pivot\",\n    name=\"transform-pivot\",\n    description=\"A meaningful description\",\n    source={\n        \"indices\": [\"names_or_patterns_for_input_index\"],\n    },\n    destination={\n        \"index\": \"destination_index_for_transform\",\n        \"aliases\": [\n            {\n                \"alias\": \"test_alias_1\",\n                \"move_on_creation\": True,\n            },\n            {\n                \"alias\": \"test_alias_2\",\n                \"move_on_creation\": False,\n            },\n        ],\n    },\n    pivot=json.dumps({\n        \"group_by\": {\n            \"customer_id\": {\n                \"terms\": {\n                    \"field\": \"customer_id\",\n                    \"missing_bucket\": True,\n                },\n            },\n        },\n        \"aggregations\": {\n            \"max_price\": {\n                \"max\": {\n                    \"field\": \"taxful_total_price\",\n                },\n            },\n        },\n    }),\n    frequency=\"5m\",\n    retention_policy={\n        \"time\": {\n            \"field\": \"order_date\",\n            \"max_age\": \"30d\",\n        },\n    },\n    sync={\n        \"time\": {\n            \"field\": \"order_date\",\n            \"delay\": \"10s\",\n        },\n    },\n    max_page_search_size=2000,\n    enabled=False,\n    defer_validation=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var transformWithPivot = new Elasticstack.ElasticsearchTransform(\"transform_with_pivot\", new()\n    {\n        Name = \"transform-pivot\",\n        Description = \"A meaningful description\",\n        Source = new Elasticstack.Inputs.ElasticsearchTransformSourceArgs\n        {\n            Indices = new[]\n            {\n                \"names_or_patterns_for_input_index\",\n            },\n        },\n        Destination = new Elasticstack.Inputs.ElasticsearchTransformDestinationArgs\n        {\n            Index = \"destination_index_for_transform\",\n            Aliases = new[]\n            {\n                new Elasticstack.Inputs.ElasticsearchTransformDestinationAliasArgs\n                {\n                    Alias = \"test_alias_1\",\n                    MoveOnCreation = true,\n                },\n                new Elasticstack.Inputs.ElasticsearchTransformDestinationAliasArgs\n                {\n                    Alias = \"test_alias_2\",\n                    MoveOnCreation = false,\n                },\n            },\n        },\n        Pivot = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"group_by\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"customer_id\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"terms\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"field\"] = \"customer_id\",\n                        [\"missing_bucket\"] = true,\n                    },\n                },\n            },\n            [\"aggregations\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"max_price\"] = new Dictionary\u003cstring, object?\u003e\n                {\n                    [\"max\"] = new Dictionary\u003cstring, object?\u003e\n                    {\n                        [\"field\"] = \"taxful_total_price\",\n                    },\n                },\n            },\n        }),\n        Frequency = \"5m\",\n        RetentionPolicy = new Elasticstack.Inputs.ElasticsearchTransformRetentionPolicyArgs\n        {\n            Time = new Elasticstack.Inputs.ElasticsearchTransformRetentionPolicyTimeArgs\n            {\n                Field = \"order_date\",\n                MaxAge = \"30d\",\n            },\n        },\n        Sync = new Elasticstack.Inputs.ElasticsearchTransformSyncArgs\n        {\n            Time = new Elasticstack.Inputs.ElasticsearchTransformSyncTimeArgs\n            {\n                Field = \"order_date\",\n                Delay = \"10s\",\n            },\n        },\n        MaxPageSearchSize = 2000,\n        Enabled = false,\n        DeferValidation = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"group_by\": map[string]interface{}{\n\t\t\t\t\"customer_id\": map[string]interface{}{\n\t\t\t\t\t\"terms\": map[string]interface{}{\n\t\t\t\t\t\t\"field\":          \"customer_id\",\n\t\t\t\t\t\t\"missing_bucket\": true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"aggregations\": map[string]interface{}{\n\t\t\t\t\"max_price\": map[string]interface{}{\n\t\t\t\t\t\"max\": map[string]interface{}{\n\t\t\t\t\t\t\"field\": \"taxful_total_price\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = elasticstack.NewElasticsearchTransform(ctx, \"transform_with_pivot\", \u0026elasticstack.ElasticsearchTransformArgs{\n\t\t\tName:        pulumi.String(\"transform-pivot\"),\n\t\t\tDescription: pulumi.String(\"A meaningful description\"),\n\t\t\tSource: \u0026elasticstack.ElasticsearchTransformSourceArgs{\n\t\t\t\tIndices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"names_or_patterns_for_input_index\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestination: \u0026elasticstack.ElasticsearchTransformDestinationArgs{\n\t\t\t\tIndex: pulumi.String(\"destination_index_for_transform\"),\n\t\t\t\tAliases: elasticstack.ElasticsearchTransformDestinationAliasArray{\n\t\t\t\t\t\u0026elasticstack.ElasticsearchTransformDestinationAliasArgs{\n\t\t\t\t\t\tAlias:          pulumi.String(\"test_alias_1\"),\n\t\t\t\t\t\tMoveOnCreation: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026elasticstack.ElasticsearchTransformDestinationAliasArgs{\n\t\t\t\t\t\tAlias:          pulumi.String(\"test_alias_2\"),\n\t\t\t\t\t\tMoveOnCreation: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPivot:     pulumi.String(json0),\n\t\t\tFrequency: pulumi.String(\"5m\"),\n\t\t\tRetentionPolicy: \u0026elasticstack.ElasticsearchTransformRetentionPolicyArgs{\n\t\t\t\tTime: \u0026elasticstack.ElasticsearchTransformRetentionPolicyTimeArgs{\n\t\t\t\t\tField:  pulumi.String(\"order_date\"),\n\t\t\t\t\tMaxAge: pulumi.String(\"30d\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSync: \u0026elasticstack.ElasticsearchTransformSyncArgs{\n\t\t\t\tTime: \u0026elasticstack.ElasticsearchTransformSyncTimeArgs{\n\t\t\t\t\tField: pulumi.String(\"order_date\"),\n\t\t\t\t\tDelay: pulumi.String(\"10s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaxPageSearchSize: pulumi.Float64(2000),\n\t\t\tEnabled:           pulumi.Bool(false),\n\t\t\tDeferValidation:   pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchTransform;\nimport com.pulumi.elasticstack.ElasticsearchTransformArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchTransformSourceArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchTransformDestinationArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchTransformRetentionPolicyArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchTransformRetentionPolicyTimeArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchTransformSyncArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchTransformSyncTimeArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var transformWithPivot = new ElasticsearchTransform(\"transformWithPivot\", ElasticsearchTransformArgs.builder()\n            .name(\"transform-pivot\")\n            .description(\"A meaningful description\")\n            .source(ElasticsearchTransformSourceArgs.builder()\n                .indices(\"names_or_patterns_for_input_index\")\n                .build())\n            .destination(ElasticsearchTransformDestinationArgs.builder()\n                .index(\"destination_index_for_transform\")\n                .aliases(                \n                    ElasticsearchTransformDestinationAliasArgs.builder()\n                        .alias(\"test_alias_1\")\n                        .moveOnCreation(true)\n                        .build(),\n                    ElasticsearchTransformDestinationAliasArgs.builder()\n                        .alias(\"test_alias_2\")\n                        .moveOnCreation(false)\n                        .build())\n                .build())\n            .pivot(serializeJson(\n                jsonObject(\n                    jsonProperty(\"group_by\", jsonObject(\n                        jsonProperty(\"customer_id\", jsonObject(\n                            jsonProperty(\"terms\", jsonObject(\n                                jsonProperty(\"field\", \"customer_id\"),\n                                jsonProperty(\"missing_bucket\", true)\n                            ))\n                        ))\n                    )),\n                    jsonProperty(\"aggregations\", jsonObject(\n                        jsonProperty(\"max_price\", jsonObject(\n                            jsonProperty(\"max\", jsonObject(\n                                jsonProperty(\"field\", \"taxful_total_price\")\n                            ))\n                        ))\n                    ))\n                )))\n            .frequency(\"5m\")\n            .retentionPolicy(ElasticsearchTransformRetentionPolicyArgs.builder()\n                .time(ElasticsearchTransformRetentionPolicyTimeArgs.builder()\n                    .field(\"order_date\")\n                    .maxAge(\"30d\")\n                    .build())\n                .build())\n            .sync(ElasticsearchTransformSyncArgs.builder()\n                .time(ElasticsearchTransformSyncTimeArgs.builder()\n                    .field(\"order_date\")\n                    .delay(\"10s\")\n                    .build())\n                .build())\n            .maxPageSearchSize(2000.0)\n            .enabled(false)\n            .deferValidation(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  transformWithPivot:\n    type: elasticstack:ElasticsearchTransform\n    name: transform_with_pivot\n    properties:\n      name: transform-pivot\n      description: A meaningful description\n      source:\n        indices:\n          - names_or_patterns_for_input_index\n      destination:\n        index: destination_index_for_transform\n        aliases:\n          - alias: test_alias_1\n            moveOnCreation: true\n          - alias: test_alias_2\n            moveOnCreation: false\n      pivot:\n        fn::toJSON:\n          group_by:\n            customer_id:\n              terms:\n                field: customer_id\n                missing_bucket: true\n          aggregations:\n            max_price:\n              max:\n                field: taxful_total_price\n      frequency: 5m\n      retentionPolicy:\n        time:\n          field: order_date\n          maxAge: 30d\n      sync:\n        time:\n          field: order_date\n          delay: 10s\n      maxPageSearchSize: 2000\n      enabled: false\n      deferValidation: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchTransform:ElasticsearchTransform my_new_transform \u003ccluster_uuid\u003e/\u003ctransform_name\u003e\n```\n\n","properties":{"alignCheckpoints":{"type":"boolean","description":"Specifies whether the transform checkpoint ranges should be optimized for performance.\n"},"datesAsEpochMillis":{"type":"boolean","description":"Defines if dates in the output should be written as ISO formatted string (default) or as millis since epoch.\n"},"deduceMappings":{"type":"boolean","description":"Specifies whether the transform should deduce the destination index mappings from the transform config.\n"},"deferValidation":{"type":"boolean","description":"When true, deferrable validations are not run upon creation, but rather when the transform is started. This behavior may be desired if the source index does not exist until after the transform is created. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e\n"},"description":{"type":"string","description":"Free text description of the transform.\n"},"destination":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformDestination:ElasticsearchTransformDestination","description":"The destination for the transform.\n"},"docsPerSecond":{"type":"number","description":"Specifies a limit on the number of input documents per second. Default (unset) value disables throttling.\n"},"enabled":{"type":"boolean","description":"Controls whether the transform should be started or stopped. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (stopped).\n"},"frequency":{"type":"string","description":"The interval between checks for changes in the source indices when the transform is running continuously. Defaults to \u003cspan pulumi-lang-nodejs=\"`1m`\" pulumi-lang-dotnet=\"`1m`\" pulumi-lang-go=\"`1m`\" pulumi-lang-python=\"`1m`\" pulumi-lang-yaml=\"`1m`\" pulumi-lang-java=\"`1m`\"\u003e`1m`\u003c/span\u003e.\n"},"latest":{"type":"string","description":"The latest method transforms the data by finding the latest document for each unique key. JSON definition expected. Either 'pivot' or 'latest' must be present.\n"},"maxPageSearchSize":{"type":"number","description":"Defines the initial page size to use for the composite aggregation for each checkpoint. Default is 500.\n"},"metadata":{"type":"string","description":"Defines optional transform metadata.\n"},"name":{"type":"string","description":"Name of the transform you wish to create.\n"},"numFailureRetries":{"type":"number","description":"Defines the number of retries on a recoverable failure before the transform task is marked as failed. The default value is the cluster-level setting num*transform*failure_retries.\n"},"pivot":{"type":"string","description":"The pivot method transforms the data by aggregating and grouping it. JSON definition expected. Either 'pivot' or 'latest' must be present.\n"},"retentionPolicy":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformRetentionPolicy:ElasticsearchTransformRetentionPolicy","description":"Defines a retention policy for the transform.\n"},"source":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformSource:ElasticsearchTransformSource","description":"The source of the data for the transform.\n"},"sync":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformSync:ElasticsearchTransformSync","description":"Defines the properties transforms require to run continuously.\n"},"timeout":{"type":"string","description":"Period to wait for a response from Elasticsearch when performing any management operation. If no response is received before the timeout expires, the operation fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"unattended":{"type":"boolean","description":"In unattended mode, the transform retries indefinitely in case of an error which means the transform never fails.\n"}},"type":"object","required":["destination","name","source"],"inputProperties":{"alignCheckpoints":{"type":"boolean","description":"Specifies whether the transform checkpoint ranges should be optimized for performance.\n"},"datesAsEpochMillis":{"type":"boolean","description":"Defines if dates in the output should be written as ISO formatted string (default) or as millis since epoch.\n"},"deduceMappings":{"type":"boolean","description":"Specifies whether the transform should deduce the destination index mappings from the transform config.\n"},"deferValidation":{"type":"boolean","description":"When true, deferrable validations are not run upon creation, but rather when the transform is started. This behavior may be desired if the source index does not exist until after the transform is created. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e\n"},"description":{"type":"string","description":"Free text description of the transform.\n"},"destination":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformDestination:ElasticsearchTransformDestination","description":"The destination for the transform.\n"},"docsPerSecond":{"type":"number","description":"Specifies a limit on the number of input documents per second. Default (unset) value disables throttling.\n"},"enabled":{"type":"boolean","description":"Controls whether the transform should be started or stopped. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (stopped).\n"},"frequency":{"type":"string","description":"The interval between checks for changes in the source indices when the transform is running continuously. Defaults to \u003cspan pulumi-lang-nodejs=\"`1m`\" pulumi-lang-dotnet=\"`1m`\" pulumi-lang-go=\"`1m`\" pulumi-lang-python=\"`1m`\" pulumi-lang-yaml=\"`1m`\" pulumi-lang-java=\"`1m`\"\u003e`1m`\u003c/span\u003e.\n"},"latest":{"type":"string","description":"The latest method transforms the data by finding the latest document for each unique key. JSON definition expected. Either 'pivot' or 'latest' must be present.\n"},"maxPageSearchSize":{"type":"number","description":"Defines the initial page size to use for the composite aggregation for each checkpoint. Default is 500.\n"},"metadata":{"type":"string","description":"Defines optional transform metadata.\n"},"name":{"type":"string","description":"Name of the transform you wish to create.\n"},"numFailureRetries":{"type":"number","description":"Defines the number of retries on a recoverable failure before the transform task is marked as failed. The default value is the cluster-level setting num*transform*failure_retries.\n"},"pivot":{"type":"string","description":"The pivot method transforms the data by aggregating and grouping it. JSON definition expected. Either 'pivot' or 'latest' must be present.\n"},"retentionPolicy":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformRetentionPolicy:ElasticsearchTransformRetentionPolicy","description":"Defines a retention policy for the transform.\n"},"source":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformSource:ElasticsearchTransformSource","description":"The source of the data for the transform.\n"},"sync":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformSync:ElasticsearchTransformSync","description":"Defines the properties transforms require to run continuously.\n"},"timeout":{"type":"string","description":"Period to wait for a response from Elasticsearch when performing any management operation. If no response is received before the timeout expires, the operation fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"unattended":{"type":"boolean","description":"In unattended mode, the transform retries indefinitely in case of an error which means the transform never fails.\n"}},"requiredInputs":["destination","source"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchTransform resources.\n","properties":{"alignCheckpoints":{"type":"boolean","description":"Specifies whether the transform checkpoint ranges should be optimized for performance.\n"},"datesAsEpochMillis":{"type":"boolean","description":"Defines if dates in the output should be written as ISO formatted string (default) or as millis since epoch.\n"},"deduceMappings":{"type":"boolean","description":"Specifies whether the transform should deduce the destination index mappings from the transform config.\n"},"deferValidation":{"type":"boolean","description":"When true, deferrable validations are not run upon creation, but rather when the transform is started. This behavior may be desired if the source index does not exist until after the transform is created. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e\n"},"description":{"type":"string","description":"Free text description of the transform.\n"},"destination":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformDestination:ElasticsearchTransformDestination","description":"The destination for the transform.\n"},"docsPerSecond":{"type":"number","description":"Specifies a limit on the number of input documents per second. Default (unset) value disables throttling.\n"},"enabled":{"type":"boolean","description":"Controls whether the transform should be started or stopped. Default is \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e (stopped).\n"},"frequency":{"type":"string","description":"The interval between checks for changes in the source indices when the transform is running continuously. Defaults to \u003cspan pulumi-lang-nodejs=\"`1m`\" pulumi-lang-dotnet=\"`1m`\" pulumi-lang-go=\"`1m`\" pulumi-lang-python=\"`1m`\" pulumi-lang-yaml=\"`1m`\" pulumi-lang-java=\"`1m`\"\u003e`1m`\u003c/span\u003e.\n"},"latest":{"type":"string","description":"The latest method transforms the data by finding the latest document for each unique key. JSON definition expected. Either 'pivot' or 'latest' must be present.\n"},"maxPageSearchSize":{"type":"number","description":"Defines the initial page size to use for the composite aggregation for each checkpoint. Default is 500.\n"},"metadata":{"type":"string","description":"Defines optional transform metadata.\n"},"name":{"type":"string","description":"Name of the transform you wish to create.\n"},"numFailureRetries":{"type":"number","description":"Defines the number of retries on a recoverable failure before the transform task is marked as failed. The default value is the cluster-level setting num*transform*failure_retries.\n"},"pivot":{"type":"string","description":"The pivot method transforms the data by aggregating and grouping it. JSON definition expected. Either 'pivot' or 'latest' must be present.\n"},"retentionPolicy":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformRetentionPolicy:ElasticsearchTransformRetentionPolicy","description":"Defines a retention policy for the transform.\n"},"source":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformSource:ElasticsearchTransformSource","description":"The source of the data for the transform.\n"},"sync":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformSync:ElasticsearchTransformSync","description":"Defines the properties transforms require to run continuously.\n"},"timeout":{"type":"string","description":"Period to wait for a response from Elasticsearch when performing any management operation. If no response is received before the timeout expires, the operation fails and returns an error. Defaults to \u003cspan pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\"\u003e`30s`\u003c/span\u003e.\n"},"unattended":{"type":"boolean","description":"In unattended mode, the transform retries indefinitely in case of an error which means the transform never fails.\n"}},"type":"object"}},"elasticstack:index/elasticsearchWatch:ElasticsearchWatch":{"description":"Manage Watches. See the [Watcher API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.ElasticsearchWatch(\"example\", {\n    watchId: \"test_watch\",\n    active: true,\n    trigger: JSON.stringify({\n        schedule: {\n            cron: \"0 0/1 * * * ?\",\n        },\n    }),\n    input: JSON.stringify({\n        none: {},\n    }),\n    condition: JSON.stringify({\n        always: {},\n    }),\n    actions: JSON.stringify({}),\n    metadata: JSON.stringify({\n        example_key: \"example_value\",\n    }),\n    transform: JSON.stringify({\n        script: \"return [ 'time' : ctx.trigger.scheduled_time ]\",\n    }),\n    throttlePeriodInMillis: 10000,\n});\nexport const watch = example.watchId;\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.ElasticsearchWatch(\"example\",\n    watch_id=\"test_watch\",\n    active=True,\n    trigger=json.dumps({\n        \"schedule\": {\n            \"cron\": \"0 0/1 * * * ?\",\n        },\n    }),\n    input=json.dumps({\n        \"none\": {},\n    }),\n    condition=json.dumps({\n        \"always\": {},\n    }),\n    actions=json.dumps({}),\n    metadata=json.dumps({\n        \"example_key\": \"example_value\",\n    }),\n    transform=json.dumps({\n        \"script\": \"return [ 'time' : ctx.trigger.scheduled_time ]\",\n    }),\n    throttle_period_in_millis=10000)\npulumi.export(\"watch\", example.watch_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.ElasticsearchWatch(\"example\", new()\n    {\n        WatchId = \"test_watch\",\n        Active = true,\n        Trigger = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"schedule\"] = new Dictionary\u003cstring, object?\u003e\n            {\n                [\"cron\"] = \"0 0/1 * * * ?\",\n            },\n        }),\n        Input = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"none\"] = new Dictionary\u003cstring, object?\u003e\n            {\n            },\n        }),\n        Condition = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"always\"] = new Dictionary\u003cstring, object?\u003e\n            {\n            },\n        }),\n        Actions = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n        }),\n        Metadata = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"example_key\"] = \"example_value\",\n        }),\n        Transform = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"script\"] = \"return [ 'time' : ctx.trigger.scheduled_time ]\",\n        }),\n        ThrottlePeriodInMillis = 10000,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"watch\"] = example.WatchId,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"schedule\": map[string]interface{}{\n\t\t\t\t\"cron\": \"0 0/1 * * * ?\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"none\": map[string]interface{}{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal(map[string]interface{}{\n\t\t\t\"always\": map[string]interface{}{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(map[string]interface{}{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal(map[string]interface{}{\n\t\t\t\"example_key\": \"example_value\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal(map[string]interface{}{\n\t\t\t\"script\": \"return [ 'time' : ctx.trigger.scheduled_time ]\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson5 := string(tmpJSON5)\n\t\texample, err := elasticstack.NewElasticsearchWatch(ctx, \"example\", \u0026elasticstack.ElasticsearchWatchArgs{\n\t\t\tWatchId:                pulumi.String(\"test_watch\"),\n\t\t\tActive:                 pulumi.Bool(true),\n\t\t\tTrigger:                pulumi.String(json0),\n\t\t\tInput:                  pulumi.String(json1),\n\t\t\tCondition:              pulumi.String(json2),\n\t\t\tActions:                pulumi.String(json3),\n\t\t\tMetadata:               pulumi.String(json4),\n\t\t\tTransform:              pulumi.String(json5),\n\t\t\tThrottlePeriodInMillis: pulumi.Float64(10000),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"watch\", example.WatchId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchWatch;\nimport com.pulumi.elasticstack.ElasticsearchWatchArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new ElasticsearchWatch(\"example\", ElasticsearchWatchArgs.builder()\n            .watchId(\"test_watch\")\n            .active(true)\n            .trigger(serializeJson(\n                jsonObject(\n                    jsonProperty(\"schedule\", jsonObject(\n                        jsonProperty(\"cron\", \"0 0/1 * * * ?\")\n                    ))\n                )))\n            .input(serializeJson(\n                jsonObject(\n                    jsonProperty(\"none\", jsonObject(\n\n                    ))\n                )))\n            .condition(serializeJson(\n                jsonObject(\n                    jsonProperty(\"always\", jsonObject(\n\n                    ))\n                )))\n            .actions(serializeJson(\n                jsonObject(\n\n                )))\n            .metadata(serializeJson(\n                jsonObject(\n                    jsonProperty(\"example_key\", \"example_value\")\n                )))\n            .transform(serializeJson(\n                jsonObject(\n                    jsonProperty(\"script\", \"return [ 'time' : ctx.trigger.scheduled_time ]\")\n                )))\n            .throttlePeriodInMillis(10000.0)\n            .build());\n\n        ctx.export(\"watch\", example.watchId());\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:ElasticsearchWatch\n    properties:\n      watchId: test_watch\n      active: true\n      trigger:\n        fn::toJSON:\n          schedule:\n            cron: 0 0/1 * * * ?\n      input:\n        fn::toJSON:\n          none: {}\n      condition:\n        fn::toJSON:\n          always: {}\n      actions:\n        fn::toJSON: {}\n      metadata:\n        fn::toJSON:\n          example_key: example_value\n      transform:\n        fn::toJSON:\n          script: 'return [ ''time'' : ctx.trigger.scheduled_time ]'\n      throttlePeriodInMillis: 10000\noutputs:\n  watch: ${example.watchId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchWatch:ElasticsearchWatch watch_id \u003ccluster_uuid\u003e/\u003cwatch ID\u003e\n```\n\n","properties":{"actions":{"type":"string","description":"The list of actions that will be run if the condition matches.\n"},"active":{"type":"boolean","description":"Defines whether the watch is active or inactive by default. The default value is true, which means the watch is active by default.\n"},"condition":{"type":"string","description":"The condition that defines if the actions should be run.\n"},"input":{"type":"string","description":"The input that defines the input that loads the data for the watch.\n"},"metadata":{"type":"string","description":"Metadata json that will be copied into the history entries.\n"},"throttlePeriodInMillis":{"type":"number","description":"Minimum time in milliseconds between actions being run. Defaults to 5000.\n"},"transform":{"type":"string","description":"Processes the watch payload to prepare it for the watch actions.\n"},"trigger":{"type":"string","description":"The trigger that defines when the watch should run.\n"},"watchId":{"type":"string","description":"Identifier for the watch.\n"}},"type":"object","required":["trigger","watchId"],"inputProperties":{"actions":{"type":"string","description":"The list of actions that will be run if the condition matches.\n"},"active":{"type":"boolean","description":"Defines whether the watch is active or inactive by default. The default value is true, which means the watch is active by default.\n"},"condition":{"type":"string","description":"The condition that defines if the actions should be run.\n"},"input":{"type":"string","description":"The input that defines the input that loads the data for the watch.\n"},"metadata":{"type":"string","description":"Metadata json that will be copied into the history entries.\n"},"throttlePeriodInMillis":{"type":"number","description":"Minimum time in milliseconds between actions being run. Defaults to 5000.\n"},"transform":{"type":"string","description":"Processes the watch payload to prepare it for the watch actions.\n"},"trigger":{"type":"string","description":"The trigger that defines when the watch should run.\n"},"watchId":{"type":"string","description":"Identifier for the watch.\n"}},"requiredInputs":["trigger","watchId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchWatch resources.\n","properties":{"actions":{"type":"string","description":"The list of actions that will be run if the condition matches.\n"},"active":{"type":"boolean","description":"Defines whether the watch is active or inactive by default. The default value is true, which means the watch is active by default.\n"},"condition":{"type":"string","description":"The condition that defines if the actions should be run.\n"},"input":{"type":"string","description":"The input that defines the input that loads the data for the watch.\n"},"metadata":{"type":"string","description":"Metadata json that will be copied into the history entries.\n"},"throttlePeriodInMillis":{"type":"number","description":"Minimum time in milliseconds between actions being run. Defaults to 5000.\n"},"transform":{"type":"string","description":"Processes the watch payload to prepare it for the watch actions.\n"},"trigger":{"type":"string","description":"The trigger that defines when the watch should run.\n"},"watchId":{"type":"string","description":"Identifier for the watch.\n"}},"type":"object"}},"elasticstack:index/fleetAgentPolicy:FleetAgentPolicy":{"description":"Creates a new Fleet Agent Policy. See https://www.elastic.co/guide/en/fleet/current/agent-policy.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst testPolicy = new elasticstack.FleetAgentPolicy(\"test_policy\", {\n    name: \"Test Policy\",\n    namespace: \"default\",\n    description: \"Test Agent Policy\",\n    sysMonitoring: true,\n    monitorLogs: true,\n    monitorMetrics: true,\n    spaceIds: [\"default\"],\n    hostNameFormat: \"hostname\",\n    globalDataTags: {\n        first_tag: {\n            stringValue: \"tag_value\",\n        },\n        second_tag: {\n            numberValue: 1.2,\n        },\n    },\n    advancedMonitoringOptions: {\n        httpMonitoringEndpoint: {\n            enabled: true,\n            host: \"localhost\",\n            port: 6791,\n            bufferEnabled: false,\n            pprofEnabled: false,\n        },\n        diagnostics: {\n            rateLimits: {\n                interval: \"5m\",\n                burst: 3,\n            },\n            fileUploader: {\n                initDuration: \"2s\",\n                backoffDuration: \"2m\",\n                maxRetries: 5,\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntest_policy = elasticstack.FleetAgentPolicy(\"test_policy\",\n    name=\"Test Policy\",\n    namespace=\"default\",\n    description=\"Test Agent Policy\",\n    sys_monitoring=True,\n    monitor_logs=True,\n    monitor_metrics=True,\n    space_ids=[\"default\"],\n    host_name_format=\"hostname\",\n    global_data_tags={\n        \"first_tag\": {\n            \"string_value\": \"tag_value\",\n        },\n        \"second_tag\": {\n            \"number_value\": 1.2,\n        },\n    },\n    advanced_monitoring_options={\n        \"http_monitoring_endpoint\": {\n            \"enabled\": True,\n            \"host\": \"localhost\",\n            \"port\": 6791,\n            \"buffer_enabled\": False,\n            \"pprof_enabled\": False,\n        },\n        \"diagnostics\": {\n            \"rate_limits\": {\n                \"interval\": \"5m\",\n                \"burst\": 3,\n            },\n            \"file_uploader\": {\n                \"init_duration\": \"2s\",\n                \"backoff_duration\": \"2m\",\n                \"max_retries\": 5,\n            },\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testPolicy = new Elasticstack.FleetAgentPolicy(\"test_policy\", new()\n    {\n        Name = \"Test Policy\",\n        Namespace = \"default\",\n        Description = \"Test Agent Policy\",\n        SysMonitoring = true,\n        MonitorLogs = true,\n        MonitorMetrics = true,\n        SpaceIds = new[]\n        {\n            \"default\",\n        },\n        HostNameFormat = \"hostname\",\n        GlobalDataTags = \n        {\n            { \"first_tag\", new Elasticstack.Inputs.FleetAgentPolicyGlobalDataTagsArgs\n            {\n                StringValue = \"tag_value\",\n            } },\n            { \"second_tag\", new Elasticstack.Inputs.FleetAgentPolicyGlobalDataTagsArgs\n            {\n                NumberValue = 1.2,\n            } },\n        },\n        AdvancedMonitoringOptions = new Elasticstack.Inputs.FleetAgentPolicyAdvancedMonitoringOptionsArgs\n        {\n            HttpMonitoringEndpoint = new Elasticstack.Inputs.FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpointArgs\n            {\n                Enabled = true,\n                Host = \"localhost\",\n                Port = 6791,\n                BufferEnabled = false,\n                PprofEnabled = false,\n            },\n            Diagnostics = new Elasticstack.Inputs.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsArgs\n            {\n                RateLimits = new Elasticstack.Inputs.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimitsArgs\n                {\n                    Interval = \"5m\",\n                    Burst = 3,\n                },\n                FileUploader = new Elasticstack.Inputs.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploaderArgs\n                {\n                    InitDuration = \"2s\",\n                    BackoffDuration = \"2m\",\n                    MaxRetries = 5,\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewFleetAgentPolicy(ctx, \"test_policy\", \u0026elasticstack.FleetAgentPolicyArgs{\n\t\t\tName:           pulumi.String(\"Test Policy\"),\n\t\t\tNamespace:      pulumi.String(\"default\"),\n\t\t\tDescription:    pulumi.String(\"Test Agent Policy\"),\n\t\t\tSysMonitoring:  pulumi.Bool(true),\n\t\t\tMonitorLogs:    pulumi.Bool(true),\n\t\t\tMonitorMetrics: pulumi.Bool(true),\n\t\t\tSpaceIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"default\"),\n\t\t\t},\n\t\t\tHostNameFormat: pulumi.String(\"hostname\"),\n\t\t\tGlobalDataTags: elasticstack.FleetAgentPolicyGlobalDataTagsMap{\n\t\t\t\t\"first_tag\": \u0026elasticstack.FleetAgentPolicyGlobalDataTagsArgs{\n\t\t\t\t\tStringValue: pulumi.String(\"tag_value\"),\n\t\t\t\t},\n\t\t\t\t\"second_tag\": \u0026elasticstack.FleetAgentPolicyGlobalDataTagsArgs{\n\t\t\t\t\tNumberValue: pulumi.Float64(1.2),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedMonitoringOptions: \u0026elasticstack.FleetAgentPolicyAdvancedMonitoringOptionsArgs{\n\t\t\t\tHttpMonitoringEndpoint: \u0026elasticstack.FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpointArgs{\n\t\t\t\t\tEnabled:       pulumi.Bool(true),\n\t\t\t\t\tHost:          pulumi.String(\"localhost\"),\n\t\t\t\t\tPort:          pulumi.Float64(6791),\n\t\t\t\t\tBufferEnabled: pulumi.Bool(false),\n\t\t\t\t\tPprofEnabled:  pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tDiagnostics: \u0026elasticstack.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsArgs{\n\t\t\t\t\tRateLimits: \u0026elasticstack.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimitsArgs{\n\t\t\t\t\t\tInterval: pulumi.String(\"5m\"),\n\t\t\t\t\t\tBurst:    pulumi.Float64(3),\n\t\t\t\t\t},\n\t\t\t\t\tFileUploader: \u0026elasticstack.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploaderArgs{\n\t\t\t\t\t\tInitDuration:    pulumi.String(\"2s\"),\n\t\t\t\t\t\tBackoffDuration: pulumi.String(\"2m\"),\n\t\t\t\t\t\tMaxRetries:      pulumi.Float64(5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.FleetAgentPolicy;\nimport com.pulumi.elasticstack.FleetAgentPolicyArgs;\nimport com.pulumi.elasticstack.inputs.FleetAgentPolicyAdvancedMonitoringOptionsArgs;\nimport com.pulumi.elasticstack.inputs.FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpointArgs;\nimport com.pulumi.elasticstack.inputs.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsArgs;\nimport com.pulumi.elasticstack.inputs.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimitsArgs;\nimport com.pulumi.elasticstack.inputs.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploaderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testPolicy = new FleetAgentPolicy(\"testPolicy\", FleetAgentPolicyArgs.builder()\n            .name(\"Test Policy\")\n            .namespace(\"default\")\n            .description(\"Test Agent Policy\")\n            .sysMonitoring(true)\n            .monitorLogs(true)\n            .monitorMetrics(true)\n            .spaceIds(\"default\")\n            .hostNameFormat(\"hostname\")\n            .globalDataTags(Map.ofEntries(\n                Map.entry(\"first_tag\", FleetAgentPolicyGlobalDataTagsArgs.builder()\n                    .stringValue(\"tag_value\")\n                    .build()),\n                Map.entry(\"second_tag\", FleetAgentPolicyGlobalDataTagsArgs.builder()\n                    .numberValue(1.2)\n                    .build())\n            ))\n            .advancedMonitoringOptions(FleetAgentPolicyAdvancedMonitoringOptionsArgs.builder()\n                .httpMonitoringEndpoint(FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpointArgs.builder()\n                    .enabled(true)\n                    .host(\"localhost\")\n                    .port(6791.0)\n                    .bufferEnabled(false)\n                    .pprofEnabled(false)\n                    .build())\n                .diagnostics(FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsArgs.builder()\n                    .rateLimits(FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimitsArgs.builder()\n                        .interval(\"5m\")\n                        .burst(3.0)\n                        .build())\n                    .fileUploader(FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploaderArgs.builder()\n                        .initDuration(\"2s\")\n                        .backoffDuration(\"2m\")\n                        .maxRetries(5.0)\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testPolicy:\n    type: elasticstack:FleetAgentPolicy\n    name: test_policy\n    properties:\n      name: Test Policy\n      namespace: default\n      description: Test Agent Policy\n      sysMonitoring: true\n      monitorLogs: true\n      monitorMetrics: true\n      spaceIds:\n        - default\n      hostNameFormat: hostname\n      globalDataTags:\n        first_tag:\n          stringValue: tag_value\n        second_tag:\n          numberValue: 1.2\n      advancedMonitoringOptions:\n        httpMonitoringEndpoint:\n          enabled: true\n          host: localhost\n          port: 6791\n          bufferEnabled: false\n          pprofEnabled: false\n        diagnostics:\n          rateLimits:\n            interval: 5m\n            burst: 3\n          fileUploader:\n            initDuration: 2s\n            backoffDuration: 2m\n            maxRetries: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/fleetAgentPolicy:FleetAgentPolicy my_policy \u003cspace_id\u003e/\u003cfleet_agent_policy_id\u003e\n```\n\n","properties":{"advancedMonitoringOptions":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedMonitoringOptions:FleetAgentPolicyAdvancedMonitoringOptions","description":"Advanced monitoring options for the agent policy. Includes HTTP monitoring endpoint configuration and diagnostic settings.\n"},"advancedSettings":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedSettings:FleetAgentPolicyAdvancedSettings","description":"Advanced agent settings for logging, resource limits, and downloads. These settings configure the behavior of Elastic Agents enrolled in this policy.\n"},"dataOutputId":{"type":"string","description":"The identifier for the data output.\n"},"description":{"type":"string","description":"The description of the agent policy.\n"},"downloadSourceId":{"type":"string","description":"The identifier for the Elastic Agent binary download server.\n"},"fleetServerHostId":{"type":"string","description":"The identifier for the Fleet server host.\n"},"globalDataTags":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyGlobalDataTags:FleetAgentPolicyGlobalDataTags"},"description":"User-defined data tags to apply to all inputs. Values can be strings (string*value) or numbers (number*value) but not both. Example -- key1 = {string*value = value1}, key2 = {number*value = 42}\n"},"hostNameFormat":{"type":"string","description":"Determines the format of the host.name field in events. Can be 'hostname' (short hostname, e.g., 'myhost') or 'fqdn' (fully qualified domain name, e.g., 'myhost.example.com'). Defaults to 'hostname'.\n"},"inactivityTimeout":{"type":"string","description":"The inactivity timeout for the agent policy. If an agent does not report within this time period, it will be considered inactive. Supports duration strings (e.g., '30s', '2m', '1h').\n"},"monitorLogs":{"type":"boolean","description":"Enable collection of agent logs.\n"},"monitorMetrics":{"type":"boolean","description":"Enable collection of agent metrics.\n"},"monitoringOutputId":{"type":"string","description":"The identifier for monitoring output.\n"},"name":{"type":"string","description":"The name of the agent policy.\n"},"namespace":{"type":"string","description":"The namespace of the agent policy.\n"},"policyId":{"type":"string","description":"Unique identifier of the agent policy.\n"},"requiredVersions":{"type":"object","additionalProperties":{"type":"number"},"description":"Map of agent versions to target percentages for automatic upgrade. The key is the target version and the value is the percentage of agents to upgrade to that version.\n"},"skipDestroy":{"type":"boolean"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs that this agent policy should be available in. When not specified, defaults to [\"default\"]. Note: The order of space IDs does not matter as this is a set.\n"},"supportsAgentless":{"type":"boolean","description":"Set to true to enable agentless data collection.\n"},"sysMonitoring":{"type":"boolean","description":"Enable collection of system logs and metrics.\n"},"unenrollmentTimeout":{"type":"string","description":"The unenrollment timeout for the agent policy. If an agent is inactive for this period, it will be automatically unenrolled. Supports duration strings (e.g., '30s', '2m', '1h').\n"}},"type":"object","required":["advancedMonitoringOptions","advancedSettings","globalDataTags","hostNameFormat","inactivityTimeout","monitorLogs","monitorMetrics","name","namespace","policyId","requiredVersions","spaceIds","unenrollmentTimeout"],"inputProperties":{"advancedMonitoringOptions":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedMonitoringOptions:FleetAgentPolicyAdvancedMonitoringOptions","description":"Advanced monitoring options for the agent policy. Includes HTTP monitoring endpoint configuration and diagnostic settings.\n"},"advancedSettings":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedSettings:FleetAgentPolicyAdvancedSettings","description":"Advanced agent settings for logging, resource limits, and downloads. These settings configure the behavior of Elastic Agents enrolled in this policy.\n"},"dataOutputId":{"type":"string","description":"The identifier for the data output.\n"},"description":{"type":"string","description":"The description of the agent policy.\n"},"downloadSourceId":{"type":"string","description":"The identifier for the Elastic Agent binary download server.\n"},"fleetServerHostId":{"type":"string","description":"The identifier for the Fleet server host.\n"},"globalDataTags":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyGlobalDataTags:FleetAgentPolicyGlobalDataTags"},"description":"User-defined data tags to apply to all inputs. Values can be strings (string*value) or numbers (number*value) but not both. Example -- key1 = {string*value = value1}, key2 = {number*value = 42}\n"},"hostNameFormat":{"type":"string","description":"Determines the format of the host.name field in events. Can be 'hostname' (short hostname, e.g., 'myhost') or 'fqdn' (fully qualified domain name, e.g., 'myhost.example.com'). Defaults to 'hostname'.\n"},"inactivityTimeout":{"type":"string","description":"The inactivity timeout for the agent policy. If an agent does not report within this time period, it will be considered inactive. Supports duration strings (e.g., '30s', '2m', '1h').\n"},"monitorLogs":{"type":"boolean","description":"Enable collection of agent logs.\n"},"monitorMetrics":{"type":"boolean","description":"Enable collection of agent metrics.\n"},"monitoringOutputId":{"type":"string","description":"The identifier for monitoring output.\n"},"name":{"type":"string","description":"The name of the agent policy.\n"},"namespace":{"type":"string","description":"The namespace of the agent policy.\n"},"policyId":{"type":"string","description":"Unique identifier of the agent policy.\n"},"requiredVersions":{"type":"object","additionalProperties":{"type":"number"},"description":"Map of agent versions to target percentages for automatic upgrade. The key is the target version and the value is the percentage of agents to upgrade to that version.\n"},"skipDestroy":{"type":"boolean"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs that this agent policy should be available in. When not specified, defaults to [\"default\"]. Note: The order of space IDs does not matter as this is a set.\n"},"supportsAgentless":{"type":"boolean","description":"Set to true to enable agentless data collection.\n"},"sysMonitoring":{"type":"boolean","description":"Enable collection of system logs and metrics.\n"},"unenrollmentTimeout":{"type":"string","description":"The unenrollment timeout for the agent policy. If an agent is inactive for this period, it will be automatically unenrolled. Supports duration strings (e.g., '30s', '2m', '1h').\n"}},"requiredInputs":["namespace"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetAgentPolicy resources.\n","properties":{"advancedMonitoringOptions":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedMonitoringOptions:FleetAgentPolicyAdvancedMonitoringOptions","description":"Advanced monitoring options for the agent policy. Includes HTTP monitoring endpoint configuration and diagnostic settings.\n"},"advancedSettings":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyAdvancedSettings:FleetAgentPolicyAdvancedSettings","description":"Advanced agent settings for logging, resource limits, and downloads. These settings configure the behavior of Elastic Agents enrolled in this policy.\n"},"dataOutputId":{"type":"string","description":"The identifier for the data output.\n"},"description":{"type":"string","description":"The description of the agent policy.\n"},"downloadSourceId":{"type":"string","description":"The identifier for the Elastic Agent binary download server.\n"},"fleetServerHostId":{"type":"string","description":"The identifier for the Fleet server host.\n"},"globalDataTags":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyGlobalDataTags:FleetAgentPolicyGlobalDataTags"},"description":"User-defined data tags to apply to all inputs. Values can be strings (string*value) or numbers (number*value) but not both. Example -- key1 = {string*value = value1}, key2 = {number*value = 42}\n"},"hostNameFormat":{"type":"string","description":"Determines the format of the host.name field in events. Can be 'hostname' (short hostname, e.g., 'myhost') or 'fqdn' (fully qualified domain name, e.g., 'myhost.example.com'). Defaults to 'hostname'.\n"},"inactivityTimeout":{"type":"string","description":"The inactivity timeout for the agent policy. If an agent does not report within this time period, it will be considered inactive. Supports duration strings (e.g., '30s', '2m', '1h').\n"},"monitorLogs":{"type":"boolean","description":"Enable collection of agent logs.\n"},"monitorMetrics":{"type":"boolean","description":"Enable collection of agent metrics.\n"},"monitoringOutputId":{"type":"string","description":"The identifier for monitoring output.\n"},"name":{"type":"string","description":"The name of the agent policy.\n"},"namespace":{"type":"string","description":"The namespace of the agent policy.\n"},"policyId":{"type":"string","description":"Unique identifier of the agent policy.\n"},"requiredVersions":{"type":"object","additionalProperties":{"type":"number"},"description":"Map of agent versions to target percentages for automatic upgrade. The key is the target version and the value is the percentage of agents to upgrade to that version.\n"},"skipDestroy":{"type":"boolean"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs that this agent policy should be available in. When not specified, defaults to [\"default\"]. Note: The order of space IDs does not matter as this is a set.\n"},"supportsAgentless":{"type":"boolean","description":"Set to true to enable agentless data collection.\n"},"sysMonitoring":{"type":"boolean","description":"Enable collection of system logs and metrics.\n"},"unenrollmentTimeout":{"type":"string","description":"The unenrollment timeout for the agent policy. If an agent is inactive for this period, it will be automatically unenrolled. Supports duration strings (e.g., '30s', '2m', '1h').\n"}},"type":"object"}},"elasticstack:index/fleetIntegration:FleetIntegration":{"description":"Installs or uninstalls a Fleet integration package. The Kibana Fleet UI can be\nused to view available packages. Additional information for managing integration\npackages can be found [here](https://www.elastic.co/guide/en/fleet/current/install-uninstall-integration-assets.html).\n\nTo prevent the package from being uninstalled when the resource is destroyed,\nset \u003cspan pulumi-lang-nodejs=\"`skipDestroy`\" pulumi-lang-dotnet=\"`SkipDestroy`\" pulumi-lang-go=\"`skipDestroy`\" pulumi-lang-python=\"`skip_destroy`\" pulumi-lang-yaml=\"`skipDestroy`\" pulumi-lang-java=\"`skipDestroy`\"\u003e`skip_destroy`\u003c/span\u003e to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n\n## Example Usage\n\n### Basic usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst testIntegration = new elasticstack.FleetIntegration(\"test_integration\", {\n    name: \"tcp\",\n    version: \"1.16.0\",\n    force: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntest_integration = elasticstack.FleetIntegration(\"test_integration\",\n    name=\"tcp\",\n    version=\"1.16.0\",\n    force=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testIntegration = new Elasticstack.FleetIntegration(\"test_integration\", new()\n    {\n        Name = \"tcp\",\n        Version = \"1.16.0\",\n        Force = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewFleetIntegration(ctx, \"test_integration\", \u0026elasticstack.FleetIntegrationArgs{\n\t\t\tName:    pulumi.String(\"tcp\"),\n\t\t\tVersion: pulumi.String(\"1.16.0\"),\n\t\t\tForce:   pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.FleetIntegration;\nimport com.pulumi.elasticstack.FleetIntegrationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testIntegration = new FleetIntegration(\"testIntegration\", FleetIntegrationArgs.builder()\n            .name(\"tcp\")\n            .version(\"1.16.0\")\n            .force(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testIntegration:\n    type: elasticstack:FleetIntegration\n    name: test_integration\n    properties:\n      name: tcp\n      version: 1.16.0\n      force: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Tracking the latest version\n\nAn integration can track the latest available version by utilizing the \u003cspan pulumi-lang-nodejs=\"`elasticstack.FleetIntegration`\" pulumi-lang-dotnet=\"`elasticstack.FleetIntegration`\" pulumi-lang-go=\"`FleetIntegration`\" pulumi-lang-python=\"`FleetIntegration`\" pulumi-lang-yaml=\"`elasticstack.FleetIntegration`\" pulumi-lang-java=\"`elasticstack.FleetIntegration`\"\u003e`elasticstack.FleetIntegration`\u003c/span\u003e data source. \nThe data source will retrieve the latest available version of the specified integration package, which can then be \npassed to the \u003cspan pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\"\u003e`version`\u003c/span\u003e attribute of the \u003cspan pulumi-lang-nodejs=\"`elasticstack.FleetIntegration`\" pulumi-lang-dotnet=\"`elasticstack.FleetIntegration`\" pulumi-lang-go=\"`FleetIntegration`\" pulumi-lang-python=\"`FleetIntegration`\" pulumi-lang-yaml=\"`elasticstack.FleetIntegration`\" pulumi-lang-java=\"`elasticstack.FleetIntegration`\"\u003e`elasticstack.FleetIntegration`\u003c/span\u003e resource. \n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst tcp = elasticstack.getFleetIntegration({\n    name: \"tcp\",\n});\nconst testIntegration = new elasticstack.FleetIntegration(\"test_integration\", {\n    name: \"tcp\",\n    version: tcp.then(tcp =\u003e tcp.version),\n    force: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntcp = elasticstack.get_fleet_integration(name=\"tcp\")\ntest_integration = elasticstack.FleetIntegration(\"test_integration\",\n    name=\"tcp\",\n    version=tcp.version,\n    force=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tcp = Elasticstack.GetFleetIntegration.Invoke(new()\n    {\n        Name = \"tcp\",\n    });\n\n    var testIntegration = new Elasticstack.FleetIntegration(\"test_integration\", new()\n    {\n        Name = \"tcp\",\n        Version = tcp.Apply(getFleetIntegrationResult =\u003e getFleetIntegrationResult.Version),\n        Force = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttcp, err := elasticstack.LookupFleetIntegration(ctx, \u0026elasticstack.LookupFleetIntegrationArgs{\n\t\t\tName: \"tcp\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewFleetIntegration(ctx, \"test_integration\", \u0026elasticstack.FleetIntegrationArgs{\n\t\t\tName:    pulumi.String(\"tcp\"),\n\t\t\tVersion: pulumi.String(tcp.Version),\n\t\t\tForce:   pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetFleetIntegrationArgs;\nimport com.pulumi.elasticstack.FleetIntegration;\nimport com.pulumi.elasticstack.FleetIntegrationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var tcp = ElasticstackFunctions.getFleetIntegration(GetFleetIntegrationArgs.builder()\n            .name(\"tcp\")\n            .build());\n\n        var testIntegration = new FleetIntegration(\"testIntegration\", FleetIntegrationArgs.builder()\n            .name(\"tcp\")\n            .version(tcp.version())\n            .force(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testIntegration:\n    type: elasticstack:FleetIntegration\n    name: test_integration\n    properties:\n      name: tcp\n      version: ${tcp.version}\n      force: true\nvariables:\n  tcp:\n    fn::invoke:\n      function: elasticstack:getFleetIntegration\n      arguments:\n        name: tcp\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"force":{"type":"boolean","description":"Set to true to force the requested action.\n"},"ignoreConstraints":{"type":"boolean","description":"Set to true to ignore constraint errors during package installation.\n"},"ignoreMappingUpdateErrors":{"type":"boolean","description":"Set to true to ignore mapping update errors during package installation.\n"},"name":{"type":"string","description":"The integration package name.\n"},"prerelease":{"type":"boolean","description":"Set to true to allow installation of prerelease (beta, non-GA) packages.\n"},"skipDataStreamRollover":{"type":"boolean","description":"Set to true to skip data stream rollover during package installation.\n"},"skipDestroy":{"type":"boolean"},"spaceId":{"type":"string","description":"The Kibana space ID where this integration package should be installed.\n"},"version":{"type":"string","description":"The integration package version.\n"}},"type":"object","required":["name","spaceId","version"],"inputProperties":{"force":{"type":"boolean","description":"Set to true to force the requested action.\n"},"ignoreConstraints":{"type":"boolean","description":"Set to true to ignore constraint errors during package installation.\n"},"ignoreMappingUpdateErrors":{"type":"boolean","description":"Set to true to ignore mapping update errors during package installation.\n"},"name":{"type":"string","description":"The integration package name.\n"},"prerelease":{"type":"boolean","description":"Set to true to allow installation of prerelease (beta, non-GA) packages.\n"},"skipDataStreamRollover":{"type":"boolean","description":"Set to true to skip data stream rollover during package installation.\n"},"skipDestroy":{"type":"boolean"},"spaceId":{"type":"string","description":"The Kibana space ID where this integration package should be installed.\n"},"version":{"type":"string","description":"The integration package version.\n"}},"requiredInputs":["version"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetIntegration resources.\n","properties":{"force":{"type":"boolean","description":"Set to true to force the requested action.\n"},"ignoreConstraints":{"type":"boolean","description":"Set to true to ignore constraint errors during package installation.\n"},"ignoreMappingUpdateErrors":{"type":"boolean","description":"Set to true to ignore mapping update errors during package installation.\n"},"name":{"type":"string","description":"The integration package name.\n"},"prerelease":{"type":"boolean","description":"Set to true to allow installation of prerelease (beta, non-GA) packages.\n"},"skipDataStreamRollover":{"type":"boolean","description":"Set to true to skip data stream rollover during package installation.\n"},"skipDestroy":{"type":"boolean"},"spaceId":{"type":"string","description":"The Kibana space ID where this integration package should be installed.\n"},"version":{"type":"string","description":"The integration package version.\n"}},"type":"object"}},"elasticstack:index/fleetIntegrationPolicy:FleetIntegrationPolicy":{"description":"Creates or updates a Fleet Integration Policy.\n\nThe [Kibana Fleet UI](https://www.elastic.co/guide/en/fleet/current/add-integration-to-policy.html)\ncan be used as a reference for what data needs to be provided. Instead of saving\na new integration configuration, the API request can be previewed, showing what\nvalues need to be provided for inputs and their streams.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// The integration to use.\nconst sampleFleetIntegration = new elasticstack.FleetIntegration(\"sample\", {\n    name: \"tcp\",\n    version: \"1.16.0\",\n    force: true,\n});\n// An agent policy to hold the integration policy.\nconst sampleFleetAgentPolicy = new elasticstack.FleetAgentPolicy(\"sample\", {\n    name: \"Sample Agent Policy\",\n    namespace: \"default\",\n    description: \"A sample agent policy\",\n    monitorLogs: true,\n    monitorMetrics: true,\n    skipDestroy: false,\n});\n// The associated enrollment token.\nconst sample = elasticstack.getFleetEnrollmentTokensOutput({\n    policyId: sampleFleetAgentPolicy.policyId,\n});\n// The integration policy.\nconst sampleFleetIntegrationPolicy = new elasticstack.FleetIntegrationPolicy(\"sample\", {\n    name: \"Sample Integration Policy\",\n    namespace: \"default\",\n    description: \"A sample integration policy\",\n    agentPolicyId: sampleFleetAgentPolicy.policyId,\n    integrationName: sampleFleetIntegration.name,\n    integrationVersion: sampleFleetIntegration.version,\n    inputs: {\n        \"tcp-tcp\": {\n            enabled: true,\n            streams: {\n                \"tcp.generic\": {\n                    enabled: true,\n                    vars: JSON.stringify({\n                        listen_address: \"localhost\",\n                        listen_port: 8080,\n                        \"data_stream.dataset\": \"tcp.generic\",\n                        tags: [],\n                        syslog_options: `field: message\n#format: auto\n#timezone: Local\n`,\n                        ssl: `#certificate: |\n#    -----BEGIN CERTIFICATE-----\n#    ...\n#    -----END CERTIFICATE-----\n#key: |\n#    -----BEGIN PRIVATE KEY-----\n#    ...\n#    -----END PRIVATE KEY-----\n`,\n                        custom: \"\",\n                    }),\n                },\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# The integration to use.\nsample_fleet_integration = elasticstack.FleetIntegration(\"sample\",\n    name=\"tcp\",\n    version=\"1.16.0\",\n    force=True)\n# An agent policy to hold the integration policy.\nsample_fleet_agent_policy = elasticstack.FleetAgentPolicy(\"sample\",\n    name=\"Sample Agent Policy\",\n    namespace=\"default\",\n    description=\"A sample agent policy\",\n    monitor_logs=True,\n    monitor_metrics=True,\n    skip_destroy=False)\n# The associated enrollment token.\nsample = elasticstack.get_fleet_enrollment_tokens_output(policy_id=sample_fleet_agent_policy.policy_id)\n# The integration policy.\nsample_fleet_integration_policy = elasticstack.FleetIntegrationPolicy(\"sample\",\n    name=\"Sample Integration Policy\",\n    namespace=\"default\",\n    description=\"A sample integration policy\",\n    agent_policy_id=sample_fleet_agent_policy.policy_id,\n    integration_name=sample_fleet_integration.name,\n    integration_version=sample_fleet_integration.version,\n    inputs={\n        \"tcp-tcp\": {\n            \"enabled\": True,\n            \"streams\": {\n                \"tcp.generic\": {\n                    \"enabled\": True,\n                    \"vars\": json.dumps({\n                        \"listen_address\": \"localhost\",\n                        \"listen_port\": 8080,\n                        \"data_stream.dataset\": \"tcp.generic\",\n                        \"tags\": [],\n                        \"syslog_options\": \"\"\"field: message\n#format: auto\n#timezone: Local\n\"\"\",\n                        \"ssl\": \"\"\"#certificate: |\n#    -----BEGIN CERTIFICATE-----\n#    ...\n#    -----END CERTIFICATE-----\n#key: |\n#    -----BEGIN PRIVATE KEY-----\n#    ...\n#    -----END PRIVATE KEY-----\n\"\"\",\n                        \"custom\": \"\",\n                    }),\n                },\n            },\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // The integration to use.\n    var sampleFleetIntegration = new Elasticstack.FleetIntegration(\"sample\", new()\n    {\n        Name = \"tcp\",\n        Version = \"1.16.0\",\n        Force = true,\n    });\n\n    // An agent policy to hold the integration policy.\n    var sampleFleetAgentPolicy = new Elasticstack.FleetAgentPolicy(\"sample\", new()\n    {\n        Name = \"Sample Agent Policy\",\n        Namespace = \"default\",\n        Description = \"A sample agent policy\",\n        MonitorLogs = true,\n        MonitorMetrics = true,\n        SkipDestroy = false,\n    });\n\n    // The associated enrollment token.\n    var sample = Elasticstack.GetFleetEnrollmentTokens.Invoke(new()\n    {\n        PolicyId = sampleFleetAgentPolicy.PolicyId,\n    });\n\n    // The integration policy.\n    var sampleFleetIntegrationPolicy = new Elasticstack.FleetIntegrationPolicy(\"sample\", new()\n    {\n        Name = \"Sample Integration Policy\",\n        Namespace = \"default\",\n        Description = \"A sample integration policy\",\n        AgentPolicyId = sampleFleetAgentPolicy.PolicyId,\n        IntegrationName = sampleFleetIntegration.Name,\n        IntegrationVersion = sampleFleetIntegration.Version,\n        Inputs = \n        {\n            { \"tcp-tcp\", new Elasticstack.Inputs.FleetIntegrationPolicyInputsArgs\n            {\n                Enabled = true,\n                Streams = \n                {\n                    { \"tcp.generic\", new Elasticstack.Inputs.FleetIntegrationPolicyInputsStreamsArgs\n                    {\n                        Enabled = true,\n                        Vars = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n                        {\n                            [\"listen_address\"] = \"localhost\",\n                            [\"listen_port\"] = 8080,\n                            [\"data_stream.dataset\"] = \"tcp.generic\",\n                            [\"tags\"] = new[]\n                            {\n                            },\n                            [\"syslog_options\"] = @\"field: message\n#format: auto\n#timezone: Local\n\",\n                            [\"ssl\"] = @\"#certificate: |\n#    -----BEGIN CERTIFICATE-----\n#    ...\n#    -----END CERTIFICATE-----\n#key: |\n#    -----BEGIN PRIVATE KEY-----\n#    ...\n#    -----END PRIVATE KEY-----\n\",\n                            [\"custom\"] = \"\",\n                        }),\n                    } },\n                },\n            } },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// The integration to use.\n\t\tsampleFleetIntegration, err := elasticstack.NewFleetIntegration(ctx, \"sample\", \u0026elasticstack.FleetIntegrationArgs{\n\t\t\tName:    pulumi.String(\"tcp\"),\n\t\t\tVersion: pulumi.String(\"1.16.0\"),\n\t\t\tForce:   pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// An agent policy to hold the integration policy.\n\t\tsampleFleetAgentPolicy, err := elasticstack.NewFleetAgentPolicy(ctx, \"sample\", \u0026elasticstack.FleetAgentPolicyArgs{\n\t\t\tName:           pulumi.String(\"Sample Agent Policy\"),\n\t\t\tNamespace:      pulumi.String(\"default\"),\n\t\t\tDescription:    pulumi.String(\"A sample agent policy\"),\n\t\t\tMonitorLogs:    pulumi.Bool(true),\n\t\t\tMonitorMetrics: pulumi.Bool(true),\n\t\t\tSkipDestroy:    pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The associated enrollment token.\n\t\t_ = elasticstack.GetFleetEnrollmentTokensOutput(ctx, elasticstack.GetFleetEnrollmentTokensOutputArgs{\n\t\t\tPolicyId: sampleFleetAgentPolicy.PolicyId,\n\t\t}, nil)\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"listen_address\":      \"localhost\",\n\t\t\t\"listen_port\":         8080,\n\t\t\t\"data_stream.dataset\": \"tcp.generic\",\n\t\t\t\"tags\":                []interface{}{},\n\t\t\t\"syslog_options\":      \"field: message\\n#format: auto\\n#timezone: Local\\n\",\n\t\t\t\"ssl\": `#certificate: |\n#    -----BEGIN CERTIFICATE-----\n#    ...\n#    -----END CERTIFICATE-----\n#key: |\n#    -----BEGIN PRIVATE KEY-----\n#    ...\n#    -----END PRIVATE KEY-----\n`,\n\t\t\t\"custom\": \"\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// The integration policy.\n\t\t_, err = elasticstack.NewFleetIntegrationPolicy(ctx, \"sample\", \u0026elasticstack.FleetIntegrationPolicyArgs{\n\t\t\tName:               pulumi.String(\"Sample Integration Policy\"),\n\t\t\tNamespace:          pulumi.String(\"default\"),\n\t\t\tDescription:        pulumi.String(\"A sample integration policy\"),\n\t\t\tAgentPolicyId:      sampleFleetAgentPolicy.PolicyId,\n\t\t\tIntegrationName:    sampleFleetIntegration.Name,\n\t\t\tIntegrationVersion: sampleFleetIntegration.Version,\n\t\t\tInputs: elasticstack.FleetIntegrationPolicyInputsMap{\n\t\t\t\t\"tcp-tcp\": \u0026elasticstack.FleetIntegrationPolicyInputsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tStreams: elasticstack.FleetIntegrationPolicyInputsStreamsMap{\n\t\t\t\t\t\t\"tcp.generic\": \u0026elasticstack.FleetIntegrationPolicyInputsStreamsArgs{\n\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tVars:    pulumi.String(json0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.FleetIntegration;\nimport com.pulumi.elasticstack.FleetIntegrationArgs;\nimport com.pulumi.elasticstack.FleetAgentPolicy;\nimport com.pulumi.elasticstack.FleetAgentPolicyArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetFleetEnrollmentTokensArgs;\nimport com.pulumi.elasticstack.FleetIntegrationPolicy;\nimport com.pulumi.elasticstack.FleetIntegrationPolicyArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // The integration to use.\n        var sampleFleetIntegration = new FleetIntegration(\"sampleFleetIntegration\", FleetIntegrationArgs.builder()\n            .name(\"tcp\")\n            .version(\"1.16.0\")\n            .force(true)\n            .build());\n\n        // An agent policy to hold the integration policy.\n        var sampleFleetAgentPolicy = new FleetAgentPolicy(\"sampleFleetAgentPolicy\", FleetAgentPolicyArgs.builder()\n            .name(\"Sample Agent Policy\")\n            .namespace(\"default\")\n            .description(\"A sample agent policy\")\n            .monitorLogs(true)\n            .monitorMetrics(true)\n            .skipDestroy(false)\n            .build());\n\n        // The associated enrollment token.\n        final var sample = ElasticstackFunctions.getFleetEnrollmentTokens(GetFleetEnrollmentTokensArgs.builder()\n            .policyId(sampleFleetAgentPolicy.policyId())\n            .build());\n\n        // The integration policy.\n        var sampleFleetIntegrationPolicy = new FleetIntegrationPolicy(\"sampleFleetIntegrationPolicy\", FleetIntegrationPolicyArgs.builder()\n            .name(\"Sample Integration Policy\")\n            .namespace(\"default\")\n            .description(\"A sample integration policy\")\n            .agentPolicyId(sampleFleetAgentPolicy.policyId())\n            .integrationName(sampleFleetIntegration.name())\n            .integrationVersion(sampleFleetIntegration.version())\n            .inputs(Map.of(\"tcp-tcp\", FleetIntegrationPolicyInputsArgs.builder()\n                .enabled(true)\n                .streams(Map.of(\"tcp.generic\", FleetIntegrationPolicyInputsStreamsArgs.builder()\n                    .enabled(true)\n                    .vars(serializeJson(\n                        jsonObject(\n                            jsonProperty(\"listen_address\", \"localhost\"),\n                            jsonProperty(\"listen_port\", 8080),\n                            jsonProperty(\"data_stream.dataset\", \"tcp.generic\"),\n                            jsonProperty(\"tags\", jsonArray(\n                            )),\n                            jsonProperty(\"syslog_options\", \"\"\"\nfield: message\n#format: auto\n#timezone: Local\n                            \"\"\"),\n                            jsonProperty(\"ssl\", \"\"\"\n#certificate: |\n#    -----BEGIN CERTIFICATE-----\n#    ...\n#    -----END CERTIFICATE-----\n#key: |\n#    -----BEGIN PRIVATE KEY-----\n#    ...\n#    -----END PRIVATE KEY-----\n                            \"\"\"),\n                            jsonProperty(\"custom\", \"\")\n                        )))\n                    .build()))\n                .build()))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # The integration to use.\n  sampleFleetIntegration:\n    type: elasticstack:FleetIntegration\n    name: sample\n    properties:\n      name: tcp\n      version: 1.16.0\n      force: true\n  # An agent policy to hold the integration policy.\n  sampleFleetAgentPolicy:\n    type: elasticstack:FleetAgentPolicy\n    name: sample\n    properties:\n      name: Sample Agent Policy\n      namespace: default\n      description: A sample agent policy\n      monitorLogs: true\n      monitorMetrics: true\n      skipDestroy: false\n  # The integration policy.\n  sampleFleetIntegrationPolicy:\n    type: elasticstack:FleetIntegrationPolicy\n    name: sample\n    properties:\n      name: Sample Integration Policy\n      namespace: default\n      description: A sample integration policy\n      agentPolicyId: ${sampleFleetAgentPolicy.policyId}\n      integrationName: ${sampleFleetIntegration.name}\n      integrationVersion: ${sampleFleetIntegration.version}\n      inputs:\n        tcp-tcp:\n          enabled: true\n          streams:\n            tcp.generic:\n              enabled: true\n              vars:\n                fn::toJSON:\n                  listen_address: localhost\n                  listen_port: 8080\n                  data_stream.dataset: tcp.generic\n                  tags: []\n                  syslog_options: |\n                    field: message\n                    #format: auto\n                    #timezone: Local\n                  ssl: |\n                    #certificate: |\n                    #    -----BEGIN CERTIFICATE-----\n                    #    ...\n                    #    -----END CERTIFICATE-----\n                    #key: |\n                    #    -----BEGIN PRIVATE KEY-----\n                    #    ...\n                    #    -----END PRIVATE KEY-----\n                  custom: \"\"\nvariables:\n  # The associated enrollment token.\n  sample:\n    fn::invoke:\n      function: elasticstack:getFleetEnrollmentTokens\n      arguments:\n        policyId: ${sampleFleetAgentPolicy.policyId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/fleetIntegrationPolicy:FleetIntegrationPolicy my_policy \u003cfleet_integration_policy_id\u003e\n```\n\n","properties":{"agentPolicyId":{"type":"string","description":"ID of the agent policy.\n"},"agentPolicyIds":{"type":"array","items":{"type":"string"},"description":"List of agent policy IDs.\n"},"description":{"type":"string","description":"The description of the integration policy.\n"},"enabled":{"type":"boolean","description":"Enable the integration policy.\n"},"force":{"type":"boolean","description":"Force operations, such as creation and deletion, to occur.\n"},"inputs":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputs:FleetIntegrationPolicyInputs"},"description":"Integration inputs mapped by input ID.\n"},"integrationName":{"type":"string","description":"The name of the integration package.\n"},"integrationVersion":{"type":"string","description":"The version of the integration package.\n"},"name":{"type":"string","description":"The name of the integration policy.\n"},"namespace":{"type":"string","description":"The namespace of the integration policy.\n"},"outputId":{"type":"string","description":"The ID of the output to send data to. When not specified, the default output of the agent policy will be used.\n"},"policyId":{"type":"string","description":"Unique identifier of the integration policy.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this integration policy is available. When set, must match the\u003cspan pulumi-lang-nodejs=\" spaceIds \" pulumi-lang-dotnet=\" SpaceIds \" pulumi-lang-go=\" spaceIds \" pulumi-lang-python=\" space_ids \" pulumi-lang-yaml=\" spaceIds \" pulumi-lang-java=\" spaceIds \"\u003e space_ids \u003c/span\u003eof the referenced agent policy. If not set, will be inherited from the agent policy. Note: The order of space IDs does not matter as this is a set.\n"},"varsJson":{"type":"string","description":"Integration-level variables as JSON. Variables vary depending on the integration package.\n","secret":true}},"type":"object","required":["enabled","inputs","integrationName","integrationVersion","name","namespace","policyId","spaceIds","varsJson"],"inputProperties":{"agentPolicyId":{"type":"string","description":"ID of the agent policy.\n"},"agentPolicyIds":{"type":"array","items":{"type":"string"},"description":"List of agent policy IDs.\n"},"description":{"type":"string","description":"The description of the integration policy.\n"},"enabled":{"type":"boolean","description":"Enable the integration policy.\n"},"force":{"type":"boolean","description":"Force operations, such as creation and deletion, to occur.\n"},"inputs":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputs:FleetIntegrationPolicyInputs"},"description":"Integration inputs mapped by input ID.\n"},"integrationName":{"type":"string","description":"The name of the integration package.\n"},"integrationVersion":{"type":"string","description":"The version of the integration package.\n"},"name":{"type":"string","description":"The name of the integration policy.\n"},"namespace":{"type":"string","description":"The namespace of the integration policy.\n"},"outputId":{"type":"string","description":"The ID of the output to send data to. When not specified, the default output of the agent policy will be used.\n"},"policyId":{"type":"string","description":"Unique identifier of the integration policy.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this integration policy is available. When set, must match the\u003cspan pulumi-lang-nodejs=\" spaceIds \" pulumi-lang-dotnet=\" SpaceIds \" pulumi-lang-go=\" spaceIds \" pulumi-lang-python=\" space_ids \" pulumi-lang-yaml=\" spaceIds \" pulumi-lang-java=\" spaceIds \"\u003e space_ids \u003c/span\u003eof the referenced agent policy. If not set, will be inherited from the agent policy. Note: The order of space IDs does not matter as this is a set.\n"},"varsJson":{"type":"string","description":"Integration-level variables as JSON. Variables vary depending on the integration package.\n","secret":true}},"requiredInputs":["integrationName","integrationVersion","namespace"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetIntegrationPolicy resources.\n","properties":{"agentPolicyId":{"type":"string","description":"ID of the agent policy.\n"},"agentPolicyIds":{"type":"array","items":{"type":"string"},"description":"List of agent policy IDs.\n"},"description":{"type":"string","description":"The description of the integration policy.\n"},"enabled":{"type":"boolean","description":"Enable the integration policy.\n"},"force":{"type":"boolean","description":"Force operations, such as creation and deletion, to occur.\n"},"inputs":{"type":"object","additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputs:FleetIntegrationPolicyInputs"},"description":"Integration inputs mapped by input ID.\n"},"integrationName":{"type":"string","description":"The name of the integration package.\n"},"integrationVersion":{"type":"string","description":"The version of the integration package.\n"},"name":{"type":"string","description":"The name of the integration policy.\n"},"namespace":{"type":"string","description":"The namespace of the integration policy.\n"},"outputId":{"type":"string","description":"The ID of the output to send data to. When not specified, the default output of the agent policy will be used.\n"},"policyId":{"type":"string","description":"Unique identifier of the integration policy.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this integration policy is available. When set, must match the\u003cspan pulumi-lang-nodejs=\" spaceIds \" pulumi-lang-dotnet=\" SpaceIds \" pulumi-lang-go=\" spaceIds \" pulumi-lang-python=\" space_ids \" pulumi-lang-yaml=\" spaceIds \" pulumi-lang-java=\" spaceIds \"\u003e space_ids \u003c/span\u003eof the referenced agent policy. If not set, will be inherited from the agent policy. Note: The order of space IDs does not matter as this is a set.\n"},"varsJson":{"type":"string","description":"Integration-level variables as JSON. Variables vary depending on the integration package.\n","secret":true}},"type":"object"}},"elasticstack:index/fleetOutput:FleetOutput":{"description":"Creates a new Fleet Output.\n\n## Example Usage\n\n### Basic Kafka output\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Basic Kafka Fleet Output\nconst kafkaBasic = new elasticstack.FleetOutput(\"kafka_basic\", {\n    name: \"Basic Kafka Output\",\n    outputId: \"kafka-basic-output\",\n    type: \"kafka\",\n    defaultIntegrations: false,\n    defaultMonitoring: false,\n    hosts: [\"kafka:9092\"],\n    kafka: {\n        authType: \"user_pass\",\n        username: \"kafka_user\",\n        password: \"kafka_password\",\n        topic: \"elastic-beats\",\n        partition: \"hash\",\n        compression: \"gzip\",\n        requiredAcks: 1,\n        headers: [{\n            key: \"environment\",\n            value: \"production\",\n        }],\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Basic Kafka Fleet Output\nkafka_basic = elasticstack.FleetOutput(\"kafka_basic\",\n    name=\"Basic Kafka Output\",\n    output_id=\"kafka-basic-output\",\n    type=\"kafka\",\n    default_integrations=False,\n    default_monitoring=False,\n    hosts=[\"kafka:9092\"],\n    kafka={\n        \"auth_type\": \"user_pass\",\n        \"username\": \"kafka_user\",\n        \"password\": \"kafka_password\",\n        \"topic\": \"elastic-beats\",\n        \"partition\": \"hash\",\n        \"compression\": \"gzip\",\n        \"required_acks\": 1,\n        \"headers\": [{\n            \"key\": \"environment\",\n            \"value\": \"production\",\n        }],\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic Kafka Fleet Output\n    var kafkaBasic = new Elasticstack.FleetOutput(\"kafka_basic\", new()\n    {\n        Name = \"Basic Kafka Output\",\n        OutputId = \"kafka-basic-output\",\n        Type = \"kafka\",\n        DefaultIntegrations = false,\n        DefaultMonitoring = false,\n        Hosts = new[]\n        {\n            \"kafka:9092\",\n        },\n        Kafka = new Elasticstack.Inputs.FleetOutputKafkaArgs\n        {\n            AuthType = \"user_pass\",\n            Username = \"kafka_user\",\n            Password = \"kafka_password\",\n            Topic = \"elastic-beats\",\n            Partition = \"hash\",\n            Compression = \"gzip\",\n            RequiredAcks = 1,\n            Headers = new[]\n            {\n                new Elasticstack.Inputs.FleetOutputKafkaHeaderArgs\n                {\n                    Key = \"environment\",\n                    Value = \"production\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic Kafka Fleet Output\n\t\t_, err := elasticstack.NewFleetOutput(ctx, \"kafka_basic\", \u0026elasticstack.FleetOutputArgs{\n\t\t\tName:                pulumi.String(\"Basic Kafka Output\"),\n\t\t\tOutputId:            pulumi.String(\"kafka-basic-output\"),\n\t\t\tType:                pulumi.String(\"kafka\"),\n\t\t\tDefaultIntegrations: pulumi.Bool(false),\n\t\t\tDefaultMonitoring:   pulumi.Bool(false),\n\t\t\tHosts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"kafka:9092\"),\n\t\t\t},\n\t\t\tKafka: \u0026elasticstack.FleetOutputKafkaArgs{\n\t\t\t\tAuthType:     pulumi.String(\"user_pass\"),\n\t\t\t\tUsername:     pulumi.String(\"kafka_user\"),\n\t\t\t\tPassword:     pulumi.String(\"kafka_password\"),\n\t\t\t\tTopic:        pulumi.String(\"elastic-beats\"),\n\t\t\t\tPartition:    pulumi.String(\"hash\"),\n\t\t\t\tCompression:  pulumi.String(\"gzip\"),\n\t\t\t\tRequiredAcks: pulumi.Float64(1),\n\t\t\t\tHeaders: elasticstack.FleetOutputKafkaHeaderArray{\n\t\t\t\t\t\u0026elasticstack.FleetOutputKafkaHeaderArgs{\n\t\t\t\t\t\tKey:   pulumi.String(\"environment\"),\n\t\t\t\t\t\tValue: pulumi.String(\"production\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.FleetOutput;\nimport com.pulumi.elasticstack.FleetOutputArgs;\nimport com.pulumi.elasticstack.inputs.FleetOutputKafkaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic Kafka Fleet Output\n        var kafkaBasic = new FleetOutput(\"kafkaBasic\", FleetOutputArgs.builder()\n            .name(\"Basic Kafka Output\")\n            .outputId(\"kafka-basic-output\")\n            .type(\"kafka\")\n            .defaultIntegrations(false)\n            .defaultMonitoring(false)\n            .hosts(\"kafka:9092\")\n            .kafka(FleetOutputKafkaArgs.builder()\n                .authType(\"user_pass\")\n                .username(\"kafka_user\")\n                .password(\"kafka_password\")\n                .topic(\"elastic-beats\")\n                .partition(\"hash\")\n                .compression(\"gzip\")\n                .requiredAcks(1.0)\n                .headers(FleetOutputKafkaHeaderArgs.builder()\n                    .key(\"environment\")\n                    .value(\"production\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic Kafka Fleet Output\n  kafkaBasic:\n    type: elasticstack:FleetOutput\n    name: kafka_basic\n    properties:\n      name: Basic Kafka Output\n      outputId: kafka-basic-output\n      type: kafka\n      defaultIntegrations: false\n      defaultMonitoring: false\n      hosts:\n        - kafka:9092\n      kafka:\n        authType: user_pass\n        username: kafka_user\n        password: kafka_password\n        topic: elastic-beats\n        partition: hash\n        compression: gzip\n        requiredAcks: 1\n        headers:\n          - key: environment\n            value: production\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/fleetOutput:FleetOutput my_output \u003cfleet_output_id\u003e\n```\n\n","properties":{"caSha256":{"type":"string","description":"Fingerprint of the Elasticsearch CA certificate.\n"},"caTrustedFingerprint":{"type":"string","description":"Fingerprint of trusted CA.\n"},"configYaml":{"type":"string","description":"Advanced YAML configuration. YAML settings here will be added to the output section of each agent policy.\n","secret":true},"defaultIntegrations":{"type":"boolean","description":"Make this output the default for agent integrations.\n"},"defaultMonitoring":{"type":"boolean","description":"Make this output the default for agent monitoring.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of hosts.\n"},"kafka":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafka:FleetOutputKafka","description":"Kafka-specific configuration.\n"},"name":{"type":"string","description":"The name of the output.\n"},"outputId":{"type":"string","description":"Unique identifier of the output.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this output is available. When set, the output will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n"},"ssl":{"$ref":"#/types/elasticstack:index%2FFleetOutputSsl:FleetOutputSsl","description":"SSL configuration.\n"},"type":{"type":"string","description":"The output type.\n"}},"type":"object","required":["defaultIntegrations","defaultMonitoring","hosts","name","outputId","spaceIds","type"],"inputProperties":{"caSha256":{"type":"string","description":"Fingerprint of the Elasticsearch CA certificate.\n"},"caTrustedFingerprint":{"type":"string","description":"Fingerprint of trusted CA.\n"},"configYaml":{"type":"string","description":"Advanced YAML configuration. YAML settings here will be added to the output section of each agent policy.\n","secret":true},"defaultIntegrations":{"type":"boolean","description":"Make this output the default for agent integrations.\n"},"defaultMonitoring":{"type":"boolean","description":"Make this output the default for agent monitoring.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of hosts.\n"},"kafka":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafka:FleetOutputKafka","description":"Kafka-specific configuration.\n"},"name":{"type":"string","description":"The name of the output.\n"},"outputId":{"type":"string","description":"Unique identifier of the output.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this output is available. When set, the output will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n"},"ssl":{"$ref":"#/types/elasticstack:index%2FFleetOutputSsl:FleetOutputSsl","description":"SSL configuration.\n"},"type":{"type":"string","description":"The output type.\n"}},"requiredInputs":["hosts","type"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetOutput resources.\n","properties":{"caSha256":{"type":"string","description":"Fingerprint of the Elasticsearch CA certificate.\n"},"caTrustedFingerprint":{"type":"string","description":"Fingerprint of trusted CA.\n"},"configYaml":{"type":"string","description":"Advanced YAML configuration. YAML settings here will be added to the output section of each agent policy.\n","secret":true},"defaultIntegrations":{"type":"boolean","description":"Make this output the default for agent integrations.\n"},"defaultMonitoring":{"type":"boolean","description":"Make this output the default for agent monitoring.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of hosts.\n"},"kafka":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafka:FleetOutputKafka","description":"Kafka-specific configuration.\n"},"name":{"type":"string","description":"The name of the output.\n"},"outputId":{"type":"string","description":"Unique identifier of the output.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this output is available. When set, the output will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n"},"ssl":{"$ref":"#/types/elasticstack:index%2FFleetOutputSsl:FleetOutputSsl","description":"SSL configuration.\n"},"type":{"type":"string","description":"The output type.\n"}},"type":"object"}},"elasticstack:index/fleetServerHost:FleetServerHost":{"description":"Creates a new Fleet Server Host.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst testHost = new elasticstack.FleetServerHost(\"test_host\", {\n    name: \"Test Host\",\n    \"default\": false,\n    hosts: [\"https://fleet-server:8220\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntest_host = elasticstack.FleetServerHost(\"test_host\",\n    name=\"Test Host\",\n    default=False,\n    hosts=[\"https://fleet-server:8220\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testHost = new Elasticstack.FleetServerHost(\"test_host\", new()\n    {\n        Name = \"Test Host\",\n        Default = false,\n        Hosts = new[]\n        {\n            \"https://fleet-server:8220\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewFleetServerHost(ctx, \"test_host\", \u0026elasticstack.FleetServerHostArgs{\n\t\t\tName:    pulumi.String(\"Test Host\"),\n\t\t\tDefault: pulumi.Bool(false),\n\t\t\tHosts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://fleet-server:8220\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.FleetServerHost;\nimport com.pulumi.elasticstack.FleetServerHostArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testHost = new FleetServerHost(\"testHost\", FleetServerHostArgs.builder()\n            .name(\"Test Host\")\n            .default_(false)\n            .hosts(\"https://fleet-server:8220\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testHost:\n    type: elasticstack:FleetServerHost\n    name: test_host\n    properties:\n      name: Test Host\n      default: false\n      hosts:\n        - https://fleet-server:8220\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/fleetServerHost:FleetServerHost my_host \u003cfleet_server_host_id\u003e\n```\n\n","properties":{"default":{"type":"boolean","description":"Set as default.\n"},"hostId":{"type":"string","description":"Unique identifier of the Fleet server host.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of hosts.\n"},"name":{"type":"string","description":"The name of the Fleet server host.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this server host is available. When set, the server host will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n"}},"type":"object","required":["hostId","hosts","name","spaceIds"],"inputProperties":{"default":{"type":"boolean","description":"Set as default.\n"},"hostId":{"type":"string","description":"Unique identifier of the Fleet server host.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of hosts.\n"},"name":{"type":"string","description":"The name of the Fleet server host.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this server host is available. When set, the server host will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n"}},"requiredInputs":["hosts"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetServerHost resources.\n","properties":{"default":{"type":"boolean","description":"Set as default.\n"},"hostId":{"type":"string","description":"Unique identifier of the Fleet server host.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of hosts.\n"},"name":{"type":"string","description":"The name of the Fleet server host.\n"},"spaceIds":{"type":"array","items":{"type":"string"},"description":"The Kibana space IDs where this server host is available. When set, the server host will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n"}},"type":"object"}},"elasticstack:index/kibanaActionConnector:KibanaActionConnector":{"description":"Creates a Kibana action connector. See https://www.elastic.co/guide/en/kibana/current/action-types.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.KibanaActionConnector(\"example\", {\n    name: \"%s\",\n    config: JSON.stringify({\n        index: \".kibana\",\n        refresh: true,\n    }),\n    connectorTypeId: \".index\",\n});\nconst pagerduty_connector = new elasticstack.KibanaActionConnector(\"pagerduty-connector\", {\n    name: \"pagerduty\",\n    connectorTypeId: \".pagerduty\",\n    config: JSON.stringify({\n        apiUrl: \"https://events.pagerduty.com/v2/enqueue\",\n    }),\n    secrets: JSON.stringify({\n        routingKey: kibana.integrationKey,\n    }),\n});\nconst slack_connector = new elasticstack.KibanaActionConnector(\"slack-connector\", {\n    name: \"slack\",\n    connectorTypeId: \".slack\",\n    secrets: JSON.stringify({\n        webhookUrl: \"\u003cyour-webhookUrl\u003e\",\n    }),\n});\nconst slack_api_connector = new elasticstack.KibanaActionConnector(\"slack-api-connector\", {\n    name: \"slack\",\n    connectorTypeId: \".slack_api\",\n    secrets: JSON.stringify({\n        token: \"\u003cyour-token\u003e\",\n    }),\n});\nconst bedrock_connector = new elasticstack.KibanaActionConnector(\"bedrock-connector\", {\n    name: \"aws-bedrock\",\n    connectorTypeId: \".bedrock\",\n    config: JSON.stringify({\n        apiUrl: \"https://bedrock-runtime.us-east-1.amazonaws.com\",\n        defaultModel: \"anthropic.claude-v2\",\n    }),\n    secrets: JSON.stringify({\n        accessKey: \"\u003cyour-aws-access-key\u003e\",\n        secret: \"\u003cyour-aws-secret-key\u003e\",\n    }),\n});\nconst genai_openai_connector = new elasticstack.KibanaActionConnector(\"genai-openai-connector\", {\n    name: \"openai\",\n    connectorTypeId: \".gen-ai\",\n    config: JSON.stringify({\n        apiProvider: \"OpenAI\",\n        apiUrl: \"https://api.openai.com/v1\",\n        defaultModel: \"gpt-4\",\n    }),\n    secrets: JSON.stringify({\n        apiKey: \"\u003cyour-openai-api-key\u003e\",\n    }),\n});\nconst genai_azure_connector = new elasticstack.KibanaActionConnector(\"genai-azure-connector\", {\n    name: \"azure-openai\",\n    connectorTypeId: \".gen-ai\",\n    config: JSON.stringify({\n        apiProvider: \"Azure OpenAI\",\n        apiUrl: \"https://my-resource.openai.azure.com/openai/deployments/my-deployment\",\n    }),\n    secrets: JSON.stringify({\n        apiKey: \"\u003cyour-azure-api-key\u003e\",\n    }),\n});\nconst webhook = new elasticstack.KibanaActionConnector(\"webhook\", {\n    name: \"webhook\",\n    connectorTypeId: \".webhook\",\n    config: JSON.stringify({\n        url: \"\u003cyour-webhookUrl\u003e\",\n        authType: \"webhook-authentication-basic\",\n        hasAuth: true,\n        method: \"post\",\n    }),\n    secrets: JSON.stringify({\n        user: \"\u003cyour-user\u003e\",\n        password: \"\u003cyour-password\u003e\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.KibanaActionConnector(\"example\",\n    name=\"%s\",\n    config=json.dumps({\n        \"index\": \".kibana\",\n        \"refresh\": True,\n    }),\n    connector_type_id=\".index\")\npagerduty_connector = elasticstack.KibanaActionConnector(\"pagerduty-connector\",\n    name=\"pagerduty\",\n    connector_type_id=\".pagerduty\",\n    config=json.dumps({\n        \"apiUrl\": \"https://events.pagerduty.com/v2/enqueue\",\n    }),\n    secrets=json.dumps({\n        \"routingKey\": kibana[\"integrationKey\"],\n    }))\nslack_connector = elasticstack.KibanaActionConnector(\"slack-connector\",\n    name=\"slack\",\n    connector_type_id=\".slack\",\n    secrets=json.dumps({\n        \"webhookUrl\": \"\u003cyour-webhookUrl\u003e\",\n    }))\nslack_api_connector = elasticstack.KibanaActionConnector(\"slack-api-connector\",\n    name=\"slack\",\n    connector_type_id=\".slack_api\",\n    secrets=json.dumps({\n        \"token\": \"\u003cyour-token\u003e\",\n    }))\nbedrock_connector = elasticstack.KibanaActionConnector(\"bedrock-connector\",\n    name=\"aws-bedrock\",\n    connector_type_id=\".bedrock\",\n    config=json.dumps({\n        \"apiUrl\": \"https://bedrock-runtime.us-east-1.amazonaws.com\",\n        \"defaultModel\": \"anthropic.claude-v2\",\n    }),\n    secrets=json.dumps({\n        \"accessKey\": \"\u003cyour-aws-access-key\u003e\",\n        \"secret\": \"\u003cyour-aws-secret-key\u003e\",\n    }))\ngenai_openai_connector = elasticstack.KibanaActionConnector(\"genai-openai-connector\",\n    name=\"openai\",\n    connector_type_id=\".gen-ai\",\n    config=json.dumps({\n        \"apiProvider\": \"OpenAI\",\n        \"apiUrl\": \"https://api.openai.com/v1\",\n        \"defaultModel\": \"gpt-4\",\n    }),\n    secrets=json.dumps({\n        \"apiKey\": \"\u003cyour-openai-api-key\u003e\",\n    }))\ngenai_azure_connector = elasticstack.KibanaActionConnector(\"genai-azure-connector\",\n    name=\"azure-openai\",\n    connector_type_id=\".gen-ai\",\n    config=json.dumps({\n        \"apiProvider\": \"Azure OpenAI\",\n        \"apiUrl\": \"https://my-resource.openai.azure.com/openai/deployments/my-deployment\",\n    }),\n    secrets=json.dumps({\n        \"apiKey\": \"\u003cyour-azure-api-key\u003e\",\n    }))\nwebhook = elasticstack.KibanaActionConnector(\"webhook\",\n    name=\"webhook\",\n    connector_type_id=\".webhook\",\n    config=json.dumps({\n        \"url\": \"\u003cyour-webhookUrl\u003e\",\n        \"authType\": \"webhook-authentication-basic\",\n        \"hasAuth\": True,\n        \"method\": \"post\",\n    }),\n    secrets=json.dumps({\n        \"user\": \"\u003cyour-user\u003e\",\n        \"password\": \"\u003cyour-password\u003e\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.KibanaActionConnector(\"example\", new()\n    {\n        Name = \"%s\",\n        Config = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"index\"] = \".kibana\",\n            [\"refresh\"] = true,\n        }),\n        ConnectorTypeId = \".index\",\n    });\n\n    var pagerduty_connector = new Elasticstack.KibanaActionConnector(\"pagerduty-connector\", new()\n    {\n        Name = \"pagerduty\",\n        ConnectorTypeId = \".pagerduty\",\n        Config = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"apiUrl\"] = \"https://events.pagerduty.com/v2/enqueue\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"routingKey\"] = kibana.IntegrationKey,\n        }),\n    });\n\n    var slack_connector = new Elasticstack.KibanaActionConnector(\"slack-connector\", new()\n    {\n        Name = \"slack\",\n        ConnectorTypeId = \".slack\",\n        Secrets = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"webhookUrl\"] = \"\u003cyour-webhookUrl\u003e\",\n        }),\n    });\n\n    var slack_api_connector = new Elasticstack.KibanaActionConnector(\"slack-api-connector\", new()\n    {\n        Name = \"slack\",\n        ConnectorTypeId = \".slack_api\",\n        Secrets = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"token\"] = \"\u003cyour-token\u003e\",\n        }),\n    });\n\n    var bedrock_connector = new Elasticstack.KibanaActionConnector(\"bedrock-connector\", new()\n    {\n        Name = \"aws-bedrock\",\n        ConnectorTypeId = \".bedrock\",\n        Config = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"apiUrl\"] = \"https://bedrock-runtime.us-east-1.amazonaws.com\",\n            [\"defaultModel\"] = \"anthropic.claude-v2\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"accessKey\"] = \"\u003cyour-aws-access-key\u003e\",\n            [\"secret\"] = \"\u003cyour-aws-secret-key\u003e\",\n        }),\n    });\n\n    var genai_openai_connector = new Elasticstack.KibanaActionConnector(\"genai-openai-connector\", new()\n    {\n        Name = \"openai\",\n        ConnectorTypeId = \".gen-ai\",\n        Config = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"apiProvider\"] = \"OpenAI\",\n            [\"apiUrl\"] = \"https://api.openai.com/v1\",\n            [\"defaultModel\"] = \"gpt-4\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"apiKey\"] = \"\u003cyour-openai-api-key\u003e\",\n        }),\n    });\n\n    var genai_azure_connector = new Elasticstack.KibanaActionConnector(\"genai-azure-connector\", new()\n    {\n        Name = \"azure-openai\",\n        ConnectorTypeId = \".gen-ai\",\n        Config = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"apiProvider\"] = \"Azure OpenAI\",\n            [\"apiUrl\"] = \"https://my-resource.openai.azure.com/openai/deployments/my-deployment\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"apiKey\"] = \"\u003cyour-azure-api-key\u003e\",\n        }),\n    });\n\n    var webhook = new Elasticstack.KibanaActionConnector(\"webhook\", new()\n    {\n        Name = \"webhook\",\n        ConnectorTypeId = \".webhook\",\n        Config = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"url\"] = \"\u003cyour-webhookUrl\u003e\",\n            [\"authType\"] = \"webhook-authentication-basic\",\n            [\"hasAuth\"] = true,\n            [\"method\"] = \"post\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"user\"] = \"\u003cyour-user\u003e\",\n            [\"password\"] = \"\u003cyour-password\u003e\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"index\":   \".kibana\",\n\t\t\t\"refresh\": true,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = elasticstack.NewKibanaActionConnector(ctx, \"example\", \u0026elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"%s\"),\n\t\t\tConfig:          pulumi.String(json0),\n\t\t\tConnectorTypeId: pulumi.String(\".index\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"apiUrl\": \"https://events.pagerduty.com/v2/enqueue\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal(map[string]interface{}{\n\t\t\t\"routingKey\": kibana.IntegrationKey,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\t_, err = elasticstack.NewKibanaActionConnector(ctx, \"pagerduty-connector\", \u0026elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"pagerduty\"),\n\t\t\tConnectorTypeId: pulumi.String(\".pagerduty\"),\n\t\t\tConfig:          pulumi.String(json1),\n\t\t\tSecrets:         pulumi.String(json2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON3, err := json.Marshal(map[string]interface{}{\n\t\t\t\"webhookUrl\": \"\u003cyour-webhookUrl\u003e\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\t_, err = elasticstack.NewKibanaActionConnector(ctx, \"slack-connector\", \u0026elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"slack\"),\n\t\t\tConnectorTypeId: pulumi.String(\".slack\"),\n\t\t\tSecrets:         pulumi.String(json3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON4, err := json.Marshal(map[string]interface{}{\n\t\t\t\"token\": \"\u003cyour-token\u003e\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\t_, err = elasticstack.NewKibanaActionConnector(ctx, \"slack-api-connector\", \u0026elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"slack\"),\n\t\t\tConnectorTypeId: pulumi.String(\".slack_api\"),\n\t\t\tSecrets:         pulumi.String(json4),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON5, err := json.Marshal(map[string]interface{}{\n\t\t\t\"apiUrl\":       \"https://bedrock-runtime.us-east-1.amazonaws.com\",\n\t\t\t\"defaultModel\": \"anthropic.claude-v2\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson5 := string(tmpJSON5)\n\t\ttmpJSON6, err := json.Marshal(map[string]interface{}{\n\t\t\t\"accessKey\": \"\u003cyour-aws-access-key\u003e\",\n\t\t\t\"secret\":    \"\u003cyour-aws-secret-key\u003e\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson6 := string(tmpJSON6)\n\t\t_, err = elasticstack.NewKibanaActionConnector(ctx, \"bedrock-connector\", \u0026elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"aws-bedrock\"),\n\t\t\tConnectorTypeId: pulumi.String(\".bedrock\"),\n\t\t\tConfig:          pulumi.String(json5),\n\t\t\tSecrets:         pulumi.String(json6),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON7, err := json.Marshal(map[string]interface{}{\n\t\t\t\"apiProvider\":  \"OpenAI\",\n\t\t\t\"apiUrl\":       \"https://api.openai.com/v1\",\n\t\t\t\"defaultModel\": \"gpt-4\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson7 := string(tmpJSON7)\n\t\ttmpJSON8, err := json.Marshal(map[string]interface{}{\n\t\t\t\"apiKey\": \"\u003cyour-openai-api-key\u003e\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson8 := string(tmpJSON8)\n\t\t_, err = elasticstack.NewKibanaActionConnector(ctx, \"genai-openai-connector\", \u0026elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"openai\"),\n\t\t\tConnectorTypeId: pulumi.String(\".gen-ai\"),\n\t\t\tConfig:          pulumi.String(json7),\n\t\t\tSecrets:         pulumi.String(json8),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON9, err := json.Marshal(map[string]interface{}{\n\t\t\t\"apiProvider\": \"Azure OpenAI\",\n\t\t\t\"apiUrl\":      \"https://my-resource.openai.azure.com/openai/deployments/my-deployment\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson9 := string(tmpJSON9)\n\t\ttmpJSON10, err := json.Marshal(map[string]interface{}{\n\t\t\t\"apiKey\": \"\u003cyour-azure-api-key\u003e\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson10 := string(tmpJSON10)\n\t\t_, err = elasticstack.NewKibanaActionConnector(ctx, \"genai-azure-connector\", \u0026elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"azure-openai\"),\n\t\t\tConnectorTypeId: pulumi.String(\".gen-ai\"),\n\t\t\tConfig:          pulumi.String(json9),\n\t\t\tSecrets:         pulumi.String(json10),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON11, err := json.Marshal(map[string]interface{}{\n\t\t\t\"url\":      \"\u003cyour-webhookUrl\u003e\",\n\t\t\t\"authType\": \"webhook-authentication-basic\",\n\t\t\t\"hasAuth\":  true,\n\t\t\t\"method\":   \"post\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson11 := string(tmpJSON11)\n\t\ttmpJSON12, err := json.Marshal(map[string]interface{}{\n\t\t\t\"user\":     \"\u003cyour-user\u003e\",\n\t\t\t\"password\": \"\u003cyour-password\u003e\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson12 := string(tmpJSON12)\n\t\t_, err = elasticstack.NewKibanaActionConnector(ctx, \"webhook\", \u0026elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"webhook\"),\n\t\t\tConnectorTypeId: pulumi.String(\".webhook\"),\n\t\t\tConfig:          pulumi.String(json11),\n\t\t\tSecrets:         pulumi.String(json12),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaActionConnector;\nimport com.pulumi.elasticstack.KibanaActionConnectorArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KibanaActionConnector(\"example\", KibanaActionConnectorArgs.builder()\n            .name(\"%s\")\n            .config(serializeJson(\n                jsonObject(\n                    jsonProperty(\"index\", \".kibana\"),\n                    jsonProperty(\"refresh\", true)\n                )))\n            .connectorTypeId(\".index\")\n            .build());\n\n        var pagerduty_connector = new KibanaActionConnector(\"pagerduty-connector\", KibanaActionConnectorArgs.builder()\n            .name(\"pagerduty\")\n            .connectorTypeId(\".pagerduty\")\n            .config(serializeJson(\n                jsonObject(\n                    jsonProperty(\"apiUrl\", \"https://events.pagerduty.com/v2/enqueue\")\n                )))\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"routingKey\", kibana.integrationKey())\n                )))\n            .build());\n\n        var slack_connector = new KibanaActionConnector(\"slack-connector\", KibanaActionConnectorArgs.builder()\n            .name(\"slack\")\n            .connectorTypeId(\".slack\")\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"webhookUrl\", \"\u003cyour-webhookUrl\u003e\")\n                )))\n            .build());\n\n        var slack_api_connector = new KibanaActionConnector(\"slack-api-connector\", KibanaActionConnectorArgs.builder()\n            .name(\"slack\")\n            .connectorTypeId(\".slack_api\")\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"token\", \"\u003cyour-token\u003e\")\n                )))\n            .build());\n\n        var bedrock_connector = new KibanaActionConnector(\"bedrock-connector\", KibanaActionConnectorArgs.builder()\n            .name(\"aws-bedrock\")\n            .connectorTypeId(\".bedrock\")\n            .config(serializeJson(\n                jsonObject(\n                    jsonProperty(\"apiUrl\", \"https://bedrock-runtime.us-east-1.amazonaws.com\"),\n                    jsonProperty(\"defaultModel\", \"anthropic.claude-v2\")\n                )))\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"accessKey\", \"\u003cyour-aws-access-key\u003e\"),\n                    jsonProperty(\"secret\", \"\u003cyour-aws-secret-key\u003e\")\n                )))\n            .build());\n\n        var genai_openai_connector = new KibanaActionConnector(\"genai-openai-connector\", KibanaActionConnectorArgs.builder()\n            .name(\"openai\")\n            .connectorTypeId(\".gen-ai\")\n            .config(serializeJson(\n                jsonObject(\n                    jsonProperty(\"apiProvider\", \"OpenAI\"),\n                    jsonProperty(\"apiUrl\", \"https://api.openai.com/v1\"),\n                    jsonProperty(\"defaultModel\", \"gpt-4\")\n                )))\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"apiKey\", \"\u003cyour-openai-api-key\u003e\")\n                )))\n            .build());\n\n        var genai_azure_connector = new KibanaActionConnector(\"genai-azure-connector\", KibanaActionConnectorArgs.builder()\n            .name(\"azure-openai\")\n            .connectorTypeId(\".gen-ai\")\n            .config(serializeJson(\n                jsonObject(\n                    jsonProperty(\"apiProvider\", \"Azure OpenAI\"),\n                    jsonProperty(\"apiUrl\", \"https://my-resource.openai.azure.com/openai/deployments/my-deployment\")\n                )))\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"apiKey\", \"\u003cyour-azure-api-key\u003e\")\n                )))\n            .build());\n\n        var webhook = new KibanaActionConnector(\"webhook\", KibanaActionConnectorArgs.builder()\n            .name(\"webhook\")\n            .connectorTypeId(\".webhook\")\n            .config(serializeJson(\n                jsonObject(\n                    jsonProperty(\"url\", \"\u003cyour-webhookUrl\u003e\"),\n                    jsonProperty(\"authType\", \"webhook-authentication-basic\"),\n                    jsonProperty(\"hasAuth\", true),\n                    jsonProperty(\"method\", \"post\")\n                )))\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"user\", \"\u003cyour-user\u003e\"),\n                    jsonProperty(\"password\", \"\u003cyour-password\u003e\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: '%s'\n      config:\n        fn::toJSON:\n          index: .kibana\n          refresh: true\n      connectorTypeId: .index\n  pagerduty-connector:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: pagerduty\n      connectorTypeId: .pagerduty\n      config:\n        fn::toJSON:\n          apiUrl: https://events.pagerduty.com/v2/enqueue\n      secrets:\n        fn::toJSON:\n          routingKey: ${kibana.integrationKey}\n  slack-connector:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: slack\n      connectorTypeId: .slack\n      secrets:\n        fn::toJSON:\n          webhookUrl: \u003cyour-webhookUrl\u003e\n  slack-api-connector:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: slack\n      connectorTypeId: .slack_api\n      secrets:\n        fn::toJSON:\n          token: \u003cyour-token\u003e\n  bedrock-connector:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: aws-bedrock\n      connectorTypeId: .bedrock\n      config:\n        fn::toJSON:\n          apiUrl: https://bedrock-runtime.us-east-1.amazonaws.com\n          defaultModel: anthropic.claude-v2\n      secrets:\n        fn::toJSON:\n          accessKey: \u003cyour-aws-access-key\u003e\n          secret: \u003cyour-aws-secret-key\u003e\n  genai-openai-connector:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: openai\n      connectorTypeId: .gen-ai\n      config:\n        fn::toJSON:\n          apiProvider: OpenAI\n          apiUrl: https://api.openai.com/v1\n          defaultModel: gpt-4\n      secrets:\n        fn::toJSON:\n          apiKey: \u003cyour-openai-api-key\u003e\n  genai-azure-connector:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: azure-openai\n      connectorTypeId: .gen-ai\n      config:\n        fn::toJSON:\n          apiProvider: Azure OpenAI\n          apiUrl: https://my-resource.openai.azure.com/openai/deployments/my-deployment\n      secrets:\n        fn::toJSON:\n          apiKey: \u003cyour-azure-api-key\u003e\n  webhook:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: webhook\n      connectorTypeId: .webhook\n      config:\n        fn::toJSON:\n          url: \u003cyour-webhookUrl\u003e\n          authType: webhook-authentication-basic\n          hasAuth: true\n          method: post\n      secrets:\n        fn::toJSON:\n          user: \u003cyour-user\u003e\n          password: \u003cyour-password\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaActionConnector:KibanaActionConnector my_connector \u003cspace id\u003e/\u003cconnector id\u003e\n```\n\n","properties":{"config":{"type":"string","description":"The configuration for the connector. Configuration properties vary depending on the connector type.\n"},"connectorId":{"type":"string","description":"A UUID v1 or v4 to use instead of a randomly generated ID."},"connectorTypeId":{"type":"string","description":"The ID of the connector type, e.g. `.index`.\n"},"isDeprecated":{"type":"boolean","description":"Indicates whether the connector type is deprecated."},"isMissingSecrets":{"type":"boolean","description":"Indicates whether secrets are missing for the connector."},"isPreconfigured":{"type":"boolean","description":"Indicates whether it is a preconfigured connector."},"kibanaConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaActionConnectorKibanaConnection:KibanaActionConnectorKibanaConnection"},"description":"Kibana connection configuration block."},"name":{"type":"string","description":"The name of the connector. While this name does not have to be unique, a distinctive name can help you identify a connector.\n"},"secrets":{"type":"string","description":"The secrets configuration for the connector. Secrets configuration properties vary depending on the connector type.","secret":true},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used."}},"type":"object","required":["config","connectorId","connectorTypeId","isDeprecated","isMissingSecrets","isPreconfigured","name","spaceId"],"inputProperties":{"config":{"type":"string","description":"The configuration for the connector. Configuration properties vary depending on the connector type.\n"},"connectorId":{"type":"string","description":"A UUID v1 or v4 to use instead of a randomly generated ID."},"connectorTypeId":{"type":"string","description":"The ID of the connector type, e.g. `.index`.\n"},"kibanaConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaActionConnectorKibanaConnection:KibanaActionConnectorKibanaConnection"},"description":"Kibana connection configuration block."},"name":{"type":"string","description":"The name of the connector. While this name does not have to be unique, a distinctive name can help you identify a connector.\n"},"secrets":{"type":"string","description":"The secrets configuration for the connector. Secrets configuration properties vary depending on the connector type.","secret":true},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used."}},"requiredInputs":["connectorTypeId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaActionConnector resources.\n","properties":{"config":{"type":"string","description":"The configuration for the connector. Configuration properties vary depending on the connector type.\n"},"connectorId":{"type":"string","description":"A UUID v1 or v4 to use instead of a randomly generated ID."},"connectorTypeId":{"type":"string","description":"The ID of the connector type, e.g. `.index`.\n"},"isDeprecated":{"type":"boolean","description":"Indicates whether the connector type is deprecated."},"isMissingSecrets":{"type":"boolean","description":"Indicates whether secrets are missing for the connector."},"isPreconfigured":{"type":"boolean","description":"Indicates whether it is a preconfigured connector."},"kibanaConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaActionConnectorKibanaConnection:KibanaActionConnectorKibanaConnection"},"description":"Kibana connection configuration block."},"name":{"type":"string","description":"The name of the connector. While this name does not have to be unique, a distinctive name can help you identify a connector.\n"},"secrets":{"type":"string","description":"The secrets configuration for the connector. Secrets configuration properties vary depending on the connector type.","secret":true},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used."}},"type":"object"}},"elasticstack:index/kibanaAlertingRule:KibanaAlertingRule":{"description":"Creates a Kibana rule. See the [create rule API documentation](https://www.elastic.co/guide/en/kibana/master/create-rule-api.html) for more details.\n\n**NOTE:** \u003cspan pulumi-lang-nodejs=\"`apiKey`\" pulumi-lang-dotnet=\"`ApiKey`\" pulumi-lang-go=\"`apiKey`\" pulumi-lang-python=\"`api_key`\" pulumi-lang-yaml=\"`apiKey`\" pulumi-lang-java=\"`apiKey`\"\u003e`api_key`\u003c/span\u003e authentication is only supported for alerting rule resources from version 8.8.0 of the Elastic stack. Using an \u003cspan pulumi-lang-nodejs=\"`apiKey`\" pulumi-lang-dotnet=\"`ApiKey`\" pulumi-lang-go=\"`apiKey`\" pulumi-lang-python=\"`api_key`\" pulumi-lang-yaml=\"`apiKey`\" pulumi-lang-java=\"`apiKey`\"\u003e`api_key`\u003c/span\u003e will result in an error message like:\n\n```\nCould not create API key - Unsupported scheme \"ApiKey\" for granting API Key\n```\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.KibanaAlertingRule(\"example\", {\n    name: \"%s\",\n    consumer: \"alerts\",\n    notifyWhen: \"onActiveAlert\",\n    params: JSON.stringify({\n        aggType: \"avg\",\n        groupBy: \"top\",\n        termSize: 10,\n        timeWindowSize: 10,\n        timeWindowUnit: \"s\",\n        threshold: [10],\n        thresholdComparator: \"\u003e\",\n        index: [\"test-index\"],\n        timeField: \"@timestamp\",\n        aggField: \"version\",\n        termField: \"name\",\n    }),\n    ruleTypeId: \".index-threshold\",\n    interval: \"1m\",\n    enabled: true,\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.KibanaAlertingRule(\"example\",\n    name=\"%s\",\n    consumer=\"alerts\",\n    notify_when=\"onActiveAlert\",\n    params=json.dumps({\n        \"aggType\": \"avg\",\n        \"groupBy\": \"top\",\n        \"termSize\": 10,\n        \"timeWindowSize\": 10,\n        \"timeWindowUnit\": \"s\",\n        \"threshold\": [10],\n        \"thresholdComparator\": \"\u003e\",\n        \"index\": [\"test-index\"],\n        \"timeField\": \"@timestamp\",\n        \"aggField\": \"version\",\n        \"termField\": \"name\",\n    }),\n    rule_type_id=\".index-threshold\",\n    interval=\"1m\",\n    enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.KibanaAlertingRule(\"example\", new()\n    {\n        Name = \"%s\",\n        Consumer = \"alerts\",\n        NotifyWhen = \"onActiveAlert\",\n        Params = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"aggType\"] = \"avg\",\n            [\"groupBy\"] = \"top\",\n            [\"termSize\"] = 10,\n            [\"timeWindowSize\"] = 10,\n            [\"timeWindowUnit\"] = \"s\",\n            [\"threshold\"] = new[]\n            {\n                10,\n            },\n            [\"thresholdComparator\"] = \"\u003e\",\n            [\"index\"] = new[]\n            {\n                \"test-index\",\n            },\n            [\"timeField\"] = \"@timestamp\",\n            [\"aggField\"] = \"version\",\n            [\"termField\"] = \"name\",\n        }),\n        RuleTypeId = \".index-threshold\",\n        Interval = \"1m\",\n        Enabled = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"aggType\":        \"avg\",\n\t\t\t\"groupBy\":        \"top\",\n\t\t\t\"termSize\":       10,\n\t\t\t\"timeWindowSize\": 10,\n\t\t\t\"timeWindowUnit\": \"s\",\n\t\t\t\"threshold\": []float64{\n\t\t\t\t10,\n\t\t\t},\n\t\t\t\"thresholdComparator\": \"\u003e\",\n\t\t\t\"index\": []string{\n\t\t\t\t\"test-index\",\n\t\t\t},\n\t\t\t\"timeField\": \"@timestamp\",\n\t\t\t\"aggField\":  \"version\",\n\t\t\t\"termField\": \"name\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = elasticstack.NewKibanaAlertingRule(ctx, \"example\", \u0026elasticstack.KibanaAlertingRuleArgs{\n\t\t\tName:       pulumi.String(\"%s\"),\n\t\t\tConsumer:   pulumi.String(\"alerts\"),\n\t\t\tNotifyWhen: pulumi.String(\"onActiveAlert\"),\n\t\t\tParams:     pulumi.String(json0),\n\t\t\tRuleTypeId: pulumi.String(\".index-threshold\"),\n\t\t\tInterval:   pulumi.String(\"1m\"),\n\t\t\tEnabled:    pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaAlertingRule;\nimport com.pulumi.elasticstack.KibanaAlertingRuleArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KibanaAlertingRule(\"example\", KibanaAlertingRuleArgs.builder()\n            .name(\"%s\")\n            .consumer(\"alerts\")\n            .notifyWhen(\"onActiveAlert\")\n            .params(serializeJson(\n                jsonObject(\n                    jsonProperty(\"aggType\", \"avg\"),\n                    jsonProperty(\"groupBy\", \"top\"),\n                    jsonProperty(\"termSize\", 10),\n                    jsonProperty(\"timeWindowSize\", 10),\n                    jsonProperty(\"timeWindowUnit\", \"s\"),\n                    jsonProperty(\"threshold\", jsonArray(10)),\n                    jsonProperty(\"thresholdComparator\", \"\u003e\"),\n                    jsonProperty(\"index\", jsonArray(\"test-index\")),\n                    jsonProperty(\"timeField\", \"@timestamp\"),\n                    jsonProperty(\"aggField\", \"version\"),\n                    jsonProperty(\"termField\", \"name\")\n                )))\n            .ruleTypeId(\".index-threshold\")\n            .interval(\"1m\")\n            .enabled(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:KibanaAlertingRule\n    properties:\n      name: '%s'\n      consumer: alerts\n      notifyWhen: onActiveAlert\n      params:\n        fn::toJSON:\n          aggType: avg\n          groupBy: top\n          termSize: 10\n          timeWindowSize: 10\n          timeWindowUnit: s\n          threshold:\n            - 10\n          thresholdComparator: '\u003e'\n          index:\n            - test-index\n          timeField: '@timestamp'\n          aggField: version\n          termField: name\n      ruleTypeId: .index-threshold\n      interval: 1m\n      enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaAlertingRule:KibanaAlertingRule my_rule \u003cspace id\u003e/\u003crule id\u003e\n```\n\n","properties":{"actions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleAction:KibanaAlertingRuleAction"},"description":"An action that runs under defined conditions.\n"},"alertDelay":{"type":"number","description":"A number that indicates how many consecutive runs need to meet the rule conditions for an alert to occur.\n"},"consumer":{"type":"string","description":"The name of the application or feature that owns the rule.\n"},"enabled":{"type":"boolean","description":"Indicates if you want to run the rule on an interval basis.\n"},"interval":{"type":"string","description":"The check interval, which specifies how frequently the rule conditions are checked. The interval must be specified in seconds, minutes, hours or days.\n"},"lastExecutionDate":{"type":"string","description":"Date of the last execution of this rule.\n"},"lastExecutionStatus":{"type":"string","description":"Status of the last execution of this rule.\n"},"name":{"type":"string","description":"The name of the rule. While this name does not have to be unique, a distinctive name can help you identify a rule.\n"},"notifyWhen":{"type":"string","description":"Required until v8.6.0. Deprecated in v8.13.0. Use the \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e property in the action \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e object instead. Defines how often alerts generate actions. Valid values include: `onActionGroupChange`: Actions run when the alert status changes; `onActiveAlert`: Actions run when the alert becomes active and at each check interval while the rule conditions are met; `onThrottleInterval`: Actions run when the alert becomes active and at the interval specified in the throttle property while the rule conditions are met. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e values.\n"},"params":{"type":"string","description":"The rule parameters, which differ for each rule type.\n"},"ruleId":{"type":"string","description":"The identifier for the rule. Until Kibana version 8.17.0 this should be a UUID v1 or v4, for later versions any format can be used. If it is omitted, an ID is randomly generated.\n"},"ruleTypeId":{"type":"string","description":"The ID of the rule type that you want to call when the rule is scheduled to run. For more information about the valid values, list the rule types using [Get rule types API](https://www.elastic.co/guide/en/kibana/master/list-rule-types-api.html) or refer to the [Rule types documentation](https://www.elastic.co/guide/en/kibana/master/rule-types.html).\n"},"scheduledTaskId":{"type":"string","description":"ID of the scheduled task that will execute the alert.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tag names that are applied to the rule.\n"},"throttle":{"type":"string","description":"Deprecated in 8.13.0. Defines how often an alert generates repeated actions. This custom action interval must be specified in seconds, minutes, hours, or days. For example, 10m or 1h. This property is applicable only if \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e is `onThrottleInterval`. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific \u003cspan pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\"\u003e`throttle`\u003c/span\u003e values.\n"}},"type":"object","required":["alertDelay","consumer","enabled","interval","lastExecutionDate","lastExecutionStatus","name","notifyWhen","params","ruleId","ruleTypeId","scheduledTaskId","spaceId"],"inputProperties":{"actions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleAction:KibanaAlertingRuleAction"},"description":"An action that runs under defined conditions.\n"},"alertDelay":{"type":"number","description":"A number that indicates how many consecutive runs need to meet the rule conditions for an alert to occur.\n"},"consumer":{"type":"string","description":"The name of the application or feature that owns the rule.\n"},"enabled":{"type":"boolean","description":"Indicates if you want to run the rule on an interval basis.\n"},"interval":{"type":"string","description":"The check interval, which specifies how frequently the rule conditions are checked. The interval must be specified in seconds, minutes, hours or days.\n"},"name":{"type":"string","description":"The name of the rule. While this name does not have to be unique, a distinctive name can help you identify a rule.\n"},"notifyWhen":{"type":"string","description":"Required until v8.6.0. Deprecated in v8.13.0. Use the \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e property in the action \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e object instead. Defines how often alerts generate actions. Valid values include: `onActionGroupChange`: Actions run when the alert status changes; `onActiveAlert`: Actions run when the alert becomes active and at each check interval while the rule conditions are met; `onThrottleInterval`: Actions run when the alert becomes active and at the interval specified in the throttle property while the rule conditions are met. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e values.\n"},"params":{"type":"string","description":"The rule parameters, which differ for each rule type.\n"},"ruleId":{"type":"string","description":"The identifier for the rule. Until Kibana version 8.17.0 this should be a UUID v1 or v4, for later versions any format can be used. If it is omitted, an ID is randomly generated.\n"},"ruleTypeId":{"type":"string","description":"The ID of the rule type that you want to call when the rule is scheduled to run. For more information about the valid values, list the rule types using [Get rule types API](https://www.elastic.co/guide/en/kibana/master/list-rule-types-api.html) or refer to the [Rule types documentation](https://www.elastic.co/guide/en/kibana/master/rule-types.html).\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tag names that are applied to the rule.\n"},"throttle":{"type":"string","description":"Deprecated in 8.13.0. Defines how often an alert generates repeated actions. This custom action interval must be specified in seconds, minutes, hours, or days. For example, 10m or 1h. This property is applicable only if \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e is `onThrottleInterval`. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific \u003cspan pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\"\u003e`throttle`\u003c/span\u003e values.\n"}},"requiredInputs":["consumer","interval","params","ruleTypeId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaAlertingRule resources.\n","properties":{"actions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleAction:KibanaAlertingRuleAction"},"description":"An action that runs under defined conditions.\n"},"alertDelay":{"type":"number","description":"A number that indicates how many consecutive runs need to meet the rule conditions for an alert to occur.\n"},"consumer":{"type":"string","description":"The name of the application or feature that owns the rule.\n"},"enabled":{"type":"boolean","description":"Indicates if you want to run the rule on an interval basis.\n"},"interval":{"type":"string","description":"The check interval, which specifies how frequently the rule conditions are checked. The interval must be specified in seconds, minutes, hours or days.\n"},"lastExecutionDate":{"type":"string","description":"Date of the last execution of this rule.\n"},"lastExecutionStatus":{"type":"string","description":"Status of the last execution of this rule.\n"},"name":{"type":"string","description":"The name of the rule. While this name does not have to be unique, a distinctive name can help you identify a rule.\n"},"notifyWhen":{"type":"string","description":"Required until v8.6.0. Deprecated in v8.13.0. Use the \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e property in the action \u003cspan pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\"\u003e`frequency`\u003c/span\u003e object instead. Defines how often alerts generate actions. Valid values include: `onActionGroupChange`: Actions run when the alert status changes; `onActiveAlert`: Actions run when the alert becomes active and at each check interval while the rule conditions are met; `onThrottleInterval`: Actions run when the alert becomes active and at the interval specified in the throttle property while the rule conditions are met. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e values.\n"},"params":{"type":"string","description":"The rule parameters, which differ for each rule type.\n"},"ruleId":{"type":"string","description":"The identifier for the rule. Until Kibana version 8.17.0 this should be a UUID v1 or v4, for later versions any format can be used. If it is omitted, an ID is randomly generated.\n"},"ruleTypeId":{"type":"string","description":"The ID of the rule type that you want to call when the rule is scheduled to run. For more information about the valid values, list the rule types using [Get rule types API](https://www.elastic.co/guide/en/kibana/master/list-rule-types-api.html) or refer to the [Rule types documentation](https://www.elastic.co/guide/en/kibana/master/rule-types.html).\n"},"scheduledTaskId":{"type":"string","description":"ID of the scheduled task that will execute the alert.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tag names that are applied to the rule.\n"},"throttle":{"type":"string","description":"Deprecated in 8.13.0. Defines how often an alert generates repeated actions. This custom action interval must be specified in seconds, minutes, hours, or days. For example, 10m or 1h. This property is applicable only if \u003cspan pulumi-lang-nodejs=\"`notifyWhen`\" pulumi-lang-dotnet=\"`NotifyWhen`\" pulumi-lang-go=\"`notifyWhen`\" pulumi-lang-python=\"`notify_when`\" pulumi-lang-yaml=\"`notifyWhen`\" pulumi-lang-java=\"`notifyWhen`\"\u003e`notify_when`\u003c/span\u003e is `onThrottleInterval`. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific \u003cspan pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\"\u003e`throttle`\u003c/span\u003e values.\n"}},"type":"object"}},"elasticstack:index/kibanaDataView:KibanaDataView":{"description":"Manages Kibana [data views](https://www.elastic.co/guide/en/kibana/current/data-views-api.html)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myDataView = new elasticstack.KibanaDataView(\"my_data_view\", {dataView: {\n    name: \"logs-*\",\n    title: \"logs-*\",\n    timeFieldName: \"@timestamp\",\n    namespaces: [\"backend\"],\n}});\nconst customFieldsDataView = new elasticstack.KibanaDataView(\"custom_fields_data_view\", {dataView: {\n    name: \"custom-data-view\",\n    id: \"custom-data-view\",\n    title: \"logs-*\",\n    timeFieldName: \"@timestamp\",\n    namespaces: [\"default\"],\n    fieldFormats: {\n        \"host.uptime\": {\n            id: \"duration\",\n            params: {\n                inputFormat: \"hours\",\n                outputFormat: \"humanizePrecise\",\n                outputPrecision: 2,\n                includeSpaceWithSuffix: true,\n                useShortSuffix: true,\n            },\n        },\n        \"user.last_password_change\": {\n            id: \"relative_date\",\n            params: {},\n        },\n        \"user.last_login\": {\n            id: \"date\",\n            params: {\n                pattern: \"MMM D, YYYY @ HH:mm:ss.SSS\",\n                timezone: \"America/New_York\",\n            },\n        },\n        \"user.is_active\": {\n            id: \"boolean\",\n            params: {},\n        },\n        \"user.status\": {\n            id: \"color\",\n            params: {\n                fieldType: \"string\",\n                colors: [{\n                    range: \"-Infinity:Infinity\",\n                    regex: \"inactive*\",\n                    text: \"#000000\",\n                    background: \"#ffffff\",\n                }],\n            },\n        },\n        \"user.message\": {\n            id: \"truncate\",\n            params: {\n                fieldLength: 10,\n            },\n        },\n        \"host.name\": {\n            id: \"string\",\n            params: {\n                transform: \"upper\",\n            },\n        },\n        \"response.code\": {\n            id: \"static_lookup\",\n            params: {\n                lookupEntries: [\n                    {\n                        key: \"200\",\n                        value: \"OK\",\n                    },\n                    {\n                        key: \"404\",\n                        value: \"Not Found\",\n                    },\n                ],\n                unknownKeyValue: \"Unknown\",\n            },\n        },\n        \"url.original\": {\n            id: \"url\",\n            params: {\n                type: \"a\",\n                urltemplate: \"https://test.com/{{value}}\",\n                labeltemplate: \"{{value}}\",\n            },\n        },\n        \"user.profile_picture\": {\n            id: \"url\",\n            params: {\n                type: \"img\",\n                urltemplate: \"https://test.com/{{value}}\",\n                labeltemplate: \"{{value}}\",\n                width: 6,\n                height: 4,\n            },\n        },\n        \"user.answering_message\": {\n            id: \"url\",\n            params: {\n                type: \"audio\",\n                urltemplate: \"https://test.com/{{value}}\",\n                labeltemplate: \"{{value}}\",\n            },\n        },\n    },\n    fieldAttrs: {\n        \"response.code\": {\n            customLabel: \"Response Code\",\n            count: 0,\n        },\n    },\n}});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmy_data_view = elasticstack.KibanaDataView(\"my_data_view\", data_view={\n    \"name\": \"logs-*\",\n    \"title\": \"logs-*\",\n    \"time_field_name\": \"@timestamp\",\n    \"namespaces\": [\"backend\"],\n})\ncustom_fields_data_view = elasticstack.KibanaDataView(\"custom_fields_data_view\", data_view={\n    \"name\": \"custom-data-view\",\n    \"id\": \"custom-data-view\",\n    \"title\": \"logs-*\",\n    \"time_field_name\": \"@timestamp\",\n    \"namespaces\": [\"default\"],\n    \"field_formats\": {\n        \"host.uptime\": {\n            \"id\": \"duration\",\n            \"params\": {\n                \"input_format\": \"hours\",\n                \"output_format\": \"humanizePrecise\",\n                \"output_precision\": 2,\n                \"include_space_with_suffix\": True,\n                \"use_short_suffix\": True,\n            },\n        },\n        \"user.last_password_change\": {\n            \"id\": \"relative_date\",\n            \"params\": {},\n        },\n        \"user.last_login\": {\n            \"id\": \"date\",\n            \"params\": {\n                \"pattern\": \"MMM D, YYYY @ HH:mm:ss.SSS\",\n                \"timezone\": \"America/New_York\",\n            },\n        },\n        \"user.is_active\": {\n            \"id\": \"boolean\",\n            \"params\": {},\n        },\n        \"user.status\": {\n            \"id\": \"color\",\n            \"params\": {\n                \"field_type\": \"string\",\n                \"colors\": [{\n                    \"range\": \"-Infinity:Infinity\",\n                    \"regex\": \"inactive*\",\n                    \"text\": \"#000000\",\n                    \"background\": \"#ffffff\",\n                }],\n            },\n        },\n        \"user.message\": {\n            \"id\": \"truncate\",\n            \"params\": {\n                \"field_length\": 10,\n            },\n        },\n        \"host.name\": {\n            \"id\": \"string\",\n            \"params\": {\n                \"transform\": \"upper\",\n            },\n        },\n        \"response.code\": {\n            \"id\": \"static_lookup\",\n            \"params\": {\n                \"lookup_entries\": [\n                    {\n                        \"key\": \"200\",\n                        \"value\": \"OK\",\n                    },\n                    {\n                        \"key\": \"404\",\n                        \"value\": \"Not Found\",\n                    },\n                ],\n                \"unknown_key_value\": \"Unknown\",\n            },\n        },\n        \"url.original\": {\n            \"id\": \"url\",\n            \"params\": {\n                \"type\": \"a\",\n                \"urltemplate\": \"https://test.com/{{value}}\",\n                \"labeltemplate\": \"{{value}}\",\n            },\n        },\n        \"user.profile_picture\": {\n            \"id\": \"url\",\n            \"params\": {\n                \"type\": \"img\",\n                \"urltemplate\": \"https://test.com/{{value}}\",\n                \"labeltemplate\": \"{{value}}\",\n                \"width\": 6,\n                \"height\": 4,\n            },\n        },\n        \"user.answering_message\": {\n            \"id\": \"url\",\n            \"params\": {\n                \"type\": \"audio\",\n                \"urltemplate\": \"https://test.com/{{value}}\",\n                \"labeltemplate\": \"{{value}}\",\n            },\n        },\n    },\n    \"field_attrs\": {\n        \"response.code\": {\n            \"custom_label\": \"Response Code\",\n            \"count\": 0,\n        },\n    },\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myDataView = new Elasticstack.KibanaDataView(\"my_data_view\", new()\n    {\n        DataView = new Elasticstack.Inputs.KibanaDataViewDataViewArgs\n        {\n            Name = \"logs-*\",\n            Title = \"logs-*\",\n            TimeFieldName = \"@timestamp\",\n            Namespaces = new[]\n            {\n                \"backend\",\n            },\n        },\n    });\n\n    var customFieldsDataView = new Elasticstack.KibanaDataView(\"custom_fields_data_view\", new()\n    {\n        DataView = new Elasticstack.Inputs.KibanaDataViewDataViewArgs\n        {\n            Name = \"custom-data-view\",\n            Id = \"custom-data-view\",\n            Title = \"logs-*\",\n            TimeFieldName = \"@timestamp\",\n            Namespaces = new[]\n            {\n                \"default\",\n            },\n            FieldFormats = \n            {\n                { \"host.uptime\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"duration\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        InputFormat = \"hours\",\n                        OutputFormat = \"humanizePrecise\",\n                        OutputPrecision = 2,\n                        IncludeSpaceWithSuffix = true,\n                        UseShortSuffix = true,\n                    },\n                } },\n                { \"user.last_password_change\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"relative_date\",\n                    Params = null,\n                } },\n                { \"user.last_login\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"date\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        Pattern = \"MMM D, YYYY @ HH:mm:ss.SSS\",\n                        Timezone = \"America/New_York\",\n                    },\n                } },\n                { \"user.is_active\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"boolean\",\n                    Params = null,\n                } },\n                { \"user.status\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"color\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        FieldType = \"string\",\n                        Colors = new[]\n                        {\n                            new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsColorArgs\n                            {\n                                Range = \"-Infinity:Infinity\",\n                                Regex = \"inactive*\",\n                                Text = \"#000000\",\n                                Background = \"#ffffff\",\n                            },\n                        },\n                    },\n                } },\n                { \"user.message\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"truncate\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        FieldLength = 10,\n                    },\n                } },\n                { \"host.name\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"string\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        Transform = \"upper\",\n                    },\n                } },\n                { \"response.code\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"static_lookup\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        LookupEntries = new[]\n                        {\n                            new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsLookupEntryArgs\n                            {\n                                Key = \"200\",\n                                Value = \"OK\",\n                            },\n                            new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsLookupEntryArgs\n                            {\n                                Key = \"404\",\n                                Value = \"Not Found\",\n                            },\n                        },\n                        UnknownKeyValue = \"Unknown\",\n                    },\n                } },\n                { \"url.original\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"url\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        Type = \"a\",\n                        Urltemplate = \"https://test.com/{{value}}\",\n                        Labeltemplate = \"{{value}}\",\n                    },\n                } },\n                { \"user.profile_picture\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"url\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        Type = \"img\",\n                        Urltemplate = \"https://test.com/{{value}}\",\n                        Labeltemplate = \"{{value}}\",\n                        Width = 6,\n                        Height = 4,\n                    },\n                } },\n                { \"user.answering_message\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsArgs\n                {\n                    Id = \"url\",\n                    Params = new Elasticstack.Inputs.KibanaDataViewDataViewFieldFormatsParamsArgs\n                    {\n                        Type = \"audio\",\n                        Urltemplate = \"https://test.com/{{value}}\",\n                        Labeltemplate = \"{{value}}\",\n                    },\n                } },\n            },\n            FieldAttrs = \n            {\n                { \"response.code\", new Elasticstack.Inputs.KibanaDataViewDataViewFieldAttrsArgs\n                {\n                    CustomLabel = \"Response Code\",\n                    Count = 0,\n                } },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaDataView(ctx, \"my_data_view\", \u0026elasticstack.KibanaDataViewArgs{\n\t\t\tDataView: \u0026elasticstack.KibanaDataViewDataViewArgs{\n\t\t\t\tName:          pulumi.String(\"logs-*\"),\n\t\t\t\tTitle:         pulumi.String(\"logs-*\"),\n\t\t\t\tTimeFieldName: pulumi.String(\"@timestamp\"),\n\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"backend\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewKibanaDataView(ctx, \"custom_fields_data_view\", \u0026elasticstack.KibanaDataViewArgs{\n\t\t\tDataView: \u0026elasticstack.KibanaDataViewDataViewArgs{\n\t\t\t\tName:          pulumi.String(\"custom-data-view\"),\n\t\t\t\tId:            pulumi.String(\"custom-data-view\"),\n\t\t\t\tTitle:         pulumi.String(\"logs-*\"),\n\t\t\t\tTimeFieldName: pulumi.String(\"@timestamp\"),\n\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t\tFieldFormats: elasticstack.KibanaDataViewDataViewFieldFormatsMap{\n\t\t\t\t\t\"host.uptime\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"duration\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tInputFormat:            pulumi.String(\"hours\"),\n\t\t\t\t\t\t\tOutputFormat:           pulumi.String(\"humanizePrecise\"),\n\t\t\t\t\t\t\tOutputPrecision:        pulumi.Float64(2),\n\t\t\t\t\t\t\tIncludeSpaceWithSuffix: pulumi.Bool(true),\n\t\t\t\t\t\t\tUseShortSuffix:         pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.last_password_change\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId:     pulumi.String(\"relative_date\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.last_login\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"date\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tPattern:  pulumi.String(\"MMM D, YYYY @ HH:mm:ss.SSS\"),\n\t\t\t\t\t\t\tTimezone: pulumi.String(\"America/New_York\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.is_active\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId:     pulumi.String(\"boolean\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.status\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"color\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tFieldType: pulumi.String(\"string\"),\n\t\t\t\t\t\t\tColors: elasticstack.KibanaDataViewDataViewFieldFormatsParamsColorArray{\n\t\t\t\t\t\t\t\t\u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsColorArgs{\n\t\t\t\t\t\t\t\t\tRange:      pulumi.String(\"-Infinity:Infinity\"),\n\t\t\t\t\t\t\t\t\tRegex:      pulumi.String(\"inactive*\"),\n\t\t\t\t\t\t\t\t\tText:       pulumi.String(\"#000000\"),\n\t\t\t\t\t\t\t\t\tBackground: pulumi.String(\"#ffffff\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.message\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"truncate\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tFieldLength: pulumi.Float64(10),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"host.name\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"string\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tTransform: pulumi.String(\"upper\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"response.code\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"static_lookup\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tLookupEntries: elasticstack.KibanaDataViewDataViewFieldFormatsParamsLookupEntryArray{\n\t\t\t\t\t\t\t\t\u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsLookupEntryArgs{\n\t\t\t\t\t\t\t\t\tKey:   pulumi.String(\"200\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"OK\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsLookupEntryArgs{\n\t\t\t\t\t\t\t\t\tKey:   pulumi.String(\"404\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"Not Found\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUnknownKeyValue: pulumi.String(\"Unknown\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"url.original\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"url\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tType:          pulumi.String(\"a\"),\n\t\t\t\t\t\t\tUrltemplate:   pulumi.String(\"https://test.com/{{value}}\"),\n\t\t\t\t\t\t\tLabeltemplate: pulumi.String(\"{{value}}\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.profile_picture\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"url\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tType:          pulumi.String(\"img\"),\n\t\t\t\t\t\t\tUrltemplate:   pulumi.String(\"https://test.com/{{value}}\"),\n\t\t\t\t\t\t\tLabeltemplate: pulumi.String(\"{{value}}\"),\n\t\t\t\t\t\t\tWidth:         pulumi.Float64(6),\n\t\t\t\t\t\t\tHeight:        pulumi.Float64(4),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.answering_message\": \u0026elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"url\"),\n\t\t\t\t\t\tParams: \u0026elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tType:          pulumi.String(\"audio\"),\n\t\t\t\t\t\t\tUrltemplate:   pulumi.String(\"https://test.com/{{value}}\"),\n\t\t\t\t\t\t\tLabeltemplate: pulumi.String(\"{{value}}\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFieldAttrs: elasticstack.KibanaDataViewDataViewFieldAttrsMap{\n\t\t\t\t\t\"response.code\": \u0026elasticstack.KibanaDataViewDataViewFieldAttrsArgs{\n\t\t\t\t\t\tCustomLabel: pulumi.String(\"Response Code\"),\n\t\t\t\t\t\tCount:       pulumi.Float64(0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaDataView;\nimport com.pulumi.elasticstack.KibanaDataViewArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDataViewDataViewArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myDataView = new KibanaDataView(\"myDataView\", KibanaDataViewArgs.builder()\n            .dataView(KibanaDataViewDataViewArgs.builder()\n                .name(\"logs-*\")\n                .title(\"logs-*\")\n                .timeFieldName(\"@timestamp\")\n                .namespaces(\"backend\")\n                .build())\n            .build());\n\n        var customFieldsDataView = new KibanaDataView(\"customFieldsDataView\", KibanaDataViewArgs.builder()\n            .dataView(KibanaDataViewDataViewArgs.builder()\n                .name(\"custom-data-view\")\n                .id(\"custom-data-view\")\n                .title(\"logs-*\")\n                .timeFieldName(\"@timestamp\")\n                .namespaces(\"default\")\n                .fieldFormats(Map.ofEntries(\n                    Map.entry(\"host.uptime\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"duration\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .inputFormat(\"hours\")\n                            .outputFormat(\"humanizePrecise\")\n                            .outputPrecision(2.0)\n                            .includeSpaceWithSuffix(true)\n                            .useShortSuffix(true)\n                            .build())\n                        .build()),\n                    Map.entry(\"user.last_password_change\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"relative_date\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .build())\n                        .build()),\n                    Map.entry(\"user.last_login\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"date\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .pattern(\"MMM D, YYYY @ HH:mm:ss.SSS\")\n                            .timezone(\"America/New_York\")\n                            .build())\n                        .build()),\n                    Map.entry(\"user.is_active\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"boolean\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .build())\n                        .build()),\n                    Map.entry(\"user.status\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"color\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .fieldType(\"string\")\n                            .colors(KibanaDataViewDataViewFieldFormatsParamsColorArgs.builder()\n                                .range(\"-Infinity:Infinity\")\n                                .regex(\"inactive*\")\n                                .text(\"#000000\")\n                                .background(\"#ffffff\")\n                                .build())\n                            .build())\n                        .build()),\n                    Map.entry(\"user.message\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"truncate\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .fieldLength(10.0)\n                            .build())\n                        .build()),\n                    Map.entry(\"host.name\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"string\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .transform(\"upper\")\n                            .build())\n                        .build()),\n                    Map.entry(\"response.code\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"static_lookup\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .lookupEntries(                            \n                                KibanaDataViewDataViewFieldFormatsParamsLookupEntryArgs.builder()\n                                    .key(\"200\")\n                                    .value(\"OK\")\n                                    .build(),\n                                KibanaDataViewDataViewFieldFormatsParamsLookupEntryArgs.builder()\n                                    .key(\"404\")\n                                    .value(\"Not Found\")\n                                    .build())\n                            .unknownKeyValue(\"Unknown\")\n                            .build())\n                        .build()),\n                    Map.entry(\"url.original\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"url\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .type(\"a\")\n                            .urltemplate(\"https://test.com/{{value}}\")\n                            .labeltemplate(\"{{value}}\")\n                            .build())\n                        .build()),\n                    Map.entry(\"user.profile_picture\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"url\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .type(\"img\")\n                            .urltemplate(\"https://test.com/{{value}}\")\n                            .labeltemplate(\"{{value}}\")\n                            .width(6.0)\n                            .height(4.0)\n                            .build())\n                        .build()),\n                    Map.entry(\"user.answering_message\", KibanaDataViewDataViewFieldFormatsArgs.builder()\n                        .id(\"url\")\n                        .params(KibanaDataViewDataViewFieldFormatsParamsArgs.builder()\n                            .type(\"audio\")\n                            .urltemplate(\"https://test.com/{{value}}\")\n                            .labeltemplate(\"{{value}}\")\n                            .build())\n                        .build())\n                ))\n                .fieldAttrs(Map.of(\"response.code\", KibanaDataViewDataViewFieldAttrsArgs.builder()\n                    .customLabel(\"Response Code\")\n                    .count(0.0)\n                    .build()))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myDataView:\n    type: elasticstack:KibanaDataView\n    name: my_data_view\n    properties:\n      dataView:\n        name: logs-*\n        title: logs-*\n        timeFieldName: '@timestamp'\n        namespaces:\n          - backend\n  customFieldsDataView:\n    type: elasticstack:KibanaDataView\n    name: custom_fields_data_view\n    properties:\n      dataView:\n        name: custom-data-view\n        id: custom-data-view\n        title: logs-*\n        timeFieldName: '@timestamp'\n        namespaces:\n          - default\n        fieldFormats:\n          host.uptime:\n            id: duration\n            params:\n              inputFormat: hours\n              outputFormat: humanizePrecise\n              outputPrecision: 2\n              includeSpaceWithSuffix: true\n              useShortSuffix: true\n          user.last_password_change:\n            id: relative_date\n            params: {}\n          user.last_login:\n            id: date\n            params:\n              pattern: MMM D, YYYY @ HH:mm:ss.SSS\n              timezone: America/New_York\n          user.is_active:\n            id: boolean\n            params: {}\n          user.status:\n            id: color\n            params:\n              fieldType: string\n              colors:\n                - range: -Infinity:Infinity\n                  regex: inactive*\n                  text: '#000000'\n                  background: '#ffffff'\n          user.message:\n            id: truncate\n            params:\n              fieldLength: 10\n          host.name:\n            id: string\n            params:\n              transform: upper\n          response.code:\n            id: static_lookup\n            params:\n              lookupEntries:\n                - key: '200'\n                  value: OK\n                - key: '404'\n                  value: Not Found\n              unknownKeyValue: Unknown\n          url.original:\n            id: url\n            params:\n              type: a\n              urltemplate: https://test.com/{{value}}\n              labeltemplate: '{{value}}'\n          user.profile_picture:\n            id: url\n            params:\n              type: img\n              urltemplate: https://test.com/{{value}}\n              labeltemplate: '{{value}}'\n              width: 6\n              height: 4\n          user.answering_message:\n            id: url\n            params:\n              type: audio\n              urltemplate: https://test.com/{{value}}\n              labeltemplate: '{{value}}'\n        fieldAttrs:\n          response.code:\n            customLabel: Response Code\n            count: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaDataView:KibanaDataView my_data_view \u003cspace id\u003e/\u003cdata view id\u003e\n```\n\n","properties":{"dataView":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataView:KibanaDataViewDataView"},"override":{"type":"boolean","description":"Overrides an existing data view if a data view with the provided title already exists.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"type":"object","required":["dataView","override","spaceId"],"inputProperties":{"dataView":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataView:KibanaDataViewDataView"},"override":{"type":"boolean","description":"Overrides an existing data view if a data view with the provided title already exists.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"requiredInputs":["dataView"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaDataView resources.\n","properties":{"dataView":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataView:KibanaDataViewDataView"},"override":{"type":"boolean","description":"Overrides an existing data view if a data view with the provided title already exists.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"type":"object"}},"elasticstack:index/kibanaDefaultDataView:KibanaDefaultDataView":{"description":"Manages the default Kibana data view. See the [Kibana Data Views API documentation](https://www.elastic.co/docs/api/doc/kibana/v8/operation/operation-setdefaultdatailviewdefault) for more information.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myIndex = new elasticstack.ElasticsearchIndex(\"my_index\", {\n    name: \"my-index-000001\",\n    deletionProtection: false,\n});\nconst myDataView = new elasticstack.KibanaDataView(\"my_data_view\", {dataView: {\n    title: \"my-index-*\",\n    name: \"My Index Data View\",\n}}, {\n    dependsOn: [myIndex],\n});\nconst _default = new elasticstack.KibanaDefaultDataView(\"default\", {\n    dataViewId: myDataView.dataView.apply(dataView =\u003e dataView.id),\n    force: true,\n    skipDelete: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmy_index = elasticstack.ElasticsearchIndex(\"my_index\",\n    name=\"my-index-000001\",\n    deletion_protection=False)\nmy_data_view = elasticstack.KibanaDataView(\"my_data_view\", data_view={\n    \"title\": \"my-index-*\",\n    \"name\": \"My Index Data View\",\n},\nopts = pulumi.ResourceOptions(depends_on=[my_index]))\ndefault = elasticstack.KibanaDefaultDataView(\"default\",\n    data_view_id=my_data_view.data_view.id,\n    force=True,\n    skip_delete=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myIndex = new Elasticstack.ElasticsearchIndex(\"my_index\", new()\n    {\n        Name = \"my-index-000001\",\n        DeletionProtection = false,\n    });\n\n    var myDataView = new Elasticstack.KibanaDataView(\"my_data_view\", new()\n    {\n        DataView = new Elasticstack.Inputs.KibanaDataViewDataViewArgs\n        {\n            Title = \"my-index-*\",\n            Name = \"My Index Data View\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            myIndex,\n        },\n    });\n\n    var @default = new Elasticstack.KibanaDefaultDataView(\"default\", new()\n    {\n        DataViewId = myDataView.DataView.Apply(dataView =\u003e dataView.Id),\n        Force = true,\n        SkipDelete = false,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyIndex, err := elasticstack.NewElasticsearchIndex(ctx, \"my_index\", \u0026elasticstack.ElasticsearchIndexArgs{\n\t\t\tName:               pulumi.String(\"my-index-000001\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDataView, err := elasticstack.NewKibanaDataView(ctx, \"my_data_view\", \u0026elasticstack.KibanaDataViewArgs{\n\t\t\tDataView: \u0026elasticstack.KibanaDataViewDataViewArgs{\n\t\t\t\tTitle: pulumi.String(\"my-index-*\"),\n\t\t\t\tName:  pulumi.String(\"My Index Data View\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmyIndex,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewKibanaDefaultDataView(ctx, \"default\", \u0026elasticstack.KibanaDefaultDataViewArgs{\n\t\t\tDataViewId: pulumi.String(myDataView.DataView.ApplyT(func(dataView elasticstack.KibanaDataViewDataView) (*string, error) {\n\t\t\t\treturn \u0026dataView.Id, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tForce:      pulumi.Bool(true),\n\t\t\tSkipDelete: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchIndex;\nimport com.pulumi.elasticstack.ElasticsearchIndexArgs;\nimport com.pulumi.elasticstack.KibanaDataView;\nimport com.pulumi.elasticstack.KibanaDataViewArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDataViewDataViewArgs;\nimport com.pulumi.elasticstack.KibanaDefaultDataView;\nimport com.pulumi.elasticstack.KibanaDefaultDataViewArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myIndex = new ElasticsearchIndex(\"myIndex\", ElasticsearchIndexArgs.builder()\n            .name(\"my-index-000001\")\n            .deletionProtection(false)\n            .build());\n\n        var myDataView = new KibanaDataView(\"myDataView\", KibanaDataViewArgs.builder()\n            .dataView(KibanaDataViewDataViewArgs.builder()\n                .title(\"my-index-*\")\n                .name(\"My Index Data View\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(myIndex)\n                .build());\n\n        var default_ = new KibanaDefaultDataView(\"default\", KibanaDefaultDataViewArgs.builder()\n            .dataViewId(myDataView.dataView().applyValue(_dataView -\u003e _dataView.id()))\n            .force(true)\n            .skipDelete(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIndex:\n    type: elasticstack:ElasticsearchIndex\n    name: my_index\n    properties:\n      name: my-index-000001\n      deletionProtection: false\n  myDataView:\n    type: elasticstack:KibanaDataView\n    name: my_data_view\n    properties:\n      dataView:\n        title: my-index-*\n        name: My Index Data View\n    options:\n      dependsOn:\n        - ${myIndex}\n  default:\n    type: elasticstack:KibanaDefaultDataView\n    properties:\n      dataViewId: ${myDataView.dataView.id}\n      force: true\n      skipDelete: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"dataViewId":{"type":"string","description":"The data view identifier to set as default. NOTE: The API does not validate whether it is a valid identifier. Leave this unset (or explicitly \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e) to unset the default data view.\n"},"force":{"type":"boolean","description":"Update an existing default data view identifier. If set to false and a default data view already exists, the operation will fail.\n"},"skipDelete":{"type":"boolean","description":"If set to true, the default data view will not be unset when the resource is destroyed. The existing default data view will remain unchanged.\n"},"spaceId":{"type":"string","description":"The Kibana space ID to set the default data view in. Defaults to \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\n"}},"type":"object","required":["skipDelete","spaceId"],"inputProperties":{"dataViewId":{"type":"string","description":"The data view identifier to set as default. NOTE: The API does not validate whether it is a valid identifier. Leave this unset (or explicitly \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e) to unset the default data view.\n"},"force":{"type":"boolean","description":"Update an existing default data view identifier. If set to false and a default data view already exists, the operation will fail.\n"},"skipDelete":{"type":"boolean","description":"If set to true, the default data view will not be unset when the resource is destroyed. The existing default data view will remain unchanged.\n"},"spaceId":{"type":"string","description":"The Kibana space ID to set the default data view in. Defaults to \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering KibanaDefaultDataView resources.\n","properties":{"dataViewId":{"type":"string","description":"The data view identifier to set as default. NOTE: The API does not validate whether it is a valid identifier. Leave this unset (or explicitly \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e) to unset the default data view.\n"},"force":{"type":"boolean","description":"Update an existing default data view identifier. If set to false and a default data view already exists, the operation will fail.\n"},"skipDelete":{"type":"boolean","description":"If set to true, the default data view will not be unset when the resource is destroyed. The existing default data view will remain unchanged.\n"},"spaceId":{"type":"string","description":"The Kibana space ID to set the default data view in. Defaults to \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e.\n"}},"type":"object"}},"elasticstack:index/kibanaImportSavedObjects:KibanaImportSavedObjects":{"description":"Create sets of Kibana saved objects from a file created by the export API. See https://www.elastic.co/guide/en/kibana/current/saved-objects-api-import.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst settings = new elasticstack.KibanaImportSavedObjects(\"settings\", {\n    overwrite: true,\n    fileContents: `{\\\\\"attributes\\\\\":{\\\\\"buildNum\\\\\":42747,\\\\\"defaultIndex\\\\\":\\\\\"metricbeat-*\\\\\",\\\\\"theme:darkMode\\\\\":true},\\\\\"coreMigrationVersion\\\\\":\\\\\"7.0.0\\\\\",\\\\\"id\\\\\":\\\\\"7.14.0\\\\\",\\\\\"managed\\\\\":false,\\\\\"references\\\\\":[],\\\\\"type\\\\\":\\\\\"config\\\\\",\\\\\"typeMigrationVersion\\\\\":\\\\\"7.0.0\\\\\",\\\\\"updated_at\\\\\":\\\\\"2021-08-04T02:04:43.306Z\\\\\",\\\\\"version\\\\\":\\\\\"WzY1MiwyXQ==\\\\\"}\n{\\\\\"excludedObjects\\\\\":[],\\\\\"excludedObjectsCount\\\\\":0,\\\\\"exportedCount\\\\\":1,\\\\\"missingRefCount\\\\\":0,\\\\\"missingReferences\\\\\":[]}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nsettings = elasticstack.KibanaImportSavedObjects(\"settings\",\n    overwrite=True,\n    file_contents=\"\"\"{\\\"attributes\\\":{\\\"buildNum\\\":42747,\\\"defaultIndex\\\":\\\"metricbeat-*\\\",\\\"theme:darkMode\\\":true},\\\"coreMigrationVersion\\\":\\\"7.0.0\\\",\\\"id\\\":\\\"7.14.0\\\",\\\"managed\\\":false,\\\"references\\\":[],\\\"type\\\":\\\"config\\\",\\\"typeMigrationVersion\\\":\\\"7.0.0\\\",\\\"updated_at\\\":\\\"2021-08-04T02:04:43.306Z\\\",\\\"version\\\":\\\"WzY1MiwyXQ==\\\"}\n{\\\"excludedObjects\\\":[],\\\"excludedObjectsCount\\\":0,\\\"exportedCount\\\":1,\\\"missingRefCount\\\":0,\\\"missingReferences\\\":[]}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var settings = new Elasticstack.KibanaImportSavedObjects(\"settings\", new()\n    {\n        Overwrite = true,\n        FileContents = @\"{\\\"\"attributes\\\"\":{\\\"\"buildNum\\\"\":42747,\\\"\"defaultIndex\\\"\":\\\"\"metricbeat-*\\\"\",\\\"\"theme:darkMode\\\"\":true},\\\"\"coreMigrationVersion\\\"\":\\\"\"7.0.0\\\"\",\\\"\"id\\\"\":\\\"\"7.14.0\\\"\",\\\"\"managed\\\"\":false,\\\"\"references\\\"\":[],\\\"\"type\\\"\":\\\"\"config\\\"\",\\\"\"typeMigrationVersion\\\"\":\\\"\"7.0.0\\\"\",\\\"\"updated_at\\\"\":\\\"\"2021-08-04T02:04:43.306Z\\\"\",\\\"\"version\\\"\":\\\"\"WzY1MiwyXQ==\\\"\"}\n{\\\"\"excludedObjects\\\"\":[],\\\"\"excludedObjectsCount\\\"\":0,\\\"\"exportedCount\\\"\":1,\\\"\"missingRefCount\\\"\":0,\\\"\"missingReferences\\\"\":[]}\n\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaImportSavedObjects(ctx, \"settings\", \u0026elasticstack.KibanaImportSavedObjectsArgs{\n\t\t\tOverwrite:    pulumi.Bool(true),\n\t\t\tFileContents: pulumi.String(\"{\\\\\\\"attributes\\\\\\\":{\\\\\\\"buildNum\\\\\\\":42747,\\\\\\\"defaultIndex\\\\\\\":\\\\\\\"metricbeat-*\\\\\\\",\\\\\\\"theme:darkMode\\\\\\\":true},\\\\\\\"coreMigrationVersion\\\\\\\":\\\\\\\"7.0.0\\\\\\\",\\\\\\\"id\\\\\\\":\\\\\\\"7.14.0\\\\\\\",\\\\\\\"managed\\\\\\\":false,\\\\\\\"references\\\\\\\":[],\\\\\\\"type\\\\\\\":\\\\\\\"config\\\\\\\",\\\\\\\"typeMigrationVersion\\\\\\\":\\\\\\\"7.0.0\\\\\\\",\\\\\\\"updated_at\\\\\\\":\\\\\\\"2021-08-04T02:04:43.306Z\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"WzY1MiwyXQ==\\\\\\\"}\\n{\\\\\\\"excludedObjects\\\\\\\":[],\\\\\\\"excludedObjectsCount\\\\\\\":0,\\\\\\\"exportedCount\\\\\\\":1,\\\\\\\"missingRefCount\\\\\\\":0,\\\\\\\"missingReferences\\\\\\\":[]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaImportSavedObjects;\nimport com.pulumi.elasticstack.KibanaImportSavedObjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var settings = new KibanaImportSavedObjects(\"settings\", KibanaImportSavedObjectsArgs.builder()\n            .overwrite(true)\n            .fileContents(\"\"\"\n{\\\"attributes\\\":{\\\"buildNum\\\":42747,\\\"defaultIndex\\\":\\\"metricbeat-*\\\",\\\"theme:darkMode\\\":true},\\\"coreMigrationVersion\\\":\\\"7.0.0\\\",\\\"id\\\":\\\"7.14.0\\\",\\\"managed\\\":false,\\\"references\\\":[],\\\"type\\\":\\\"config\\\",\\\"typeMigrationVersion\\\":\\\"7.0.0\\\",\\\"updated_at\\\":\\\"2021-08-04T02:04:43.306Z\\\",\\\"version\\\":\\\"WzY1MiwyXQ==\\\"}\n{\\\"excludedObjects\\\":[],\\\"excludedObjectsCount\\\":0,\\\"exportedCount\\\":1,\\\"missingRefCount\\\":0,\\\"missingReferences\\\":[]}\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  settings:\n    type: elasticstack:KibanaImportSavedObjects\n    properties:\n      overwrite: true\n      fileContents: |\n        {\\\"attributes\\\":{\\\"buildNum\\\":42747,\\\"defaultIndex\\\":\\\"metricbeat-*\\\",\\\"theme:darkMode\\\":true},\\\"coreMigrationVersion\\\":\\\"7.0.0\\\",\\\"id\\\":\\\"7.14.0\\\",\\\"managed\\\":false,\\\"references\\\":[],\\\"type\\\":\\\"config\\\",\\\"typeMigrationVersion\\\":\\\"7.0.0\\\",\\\"updated_at\\\":\\\"2021-08-04T02:04:43.306Z\\\",\\\"version\\\":\\\"WzY1MiwyXQ==\\\"}\n        {\\\"excludedObjects\\\":[],\\\"excludedObjectsCount\\\":0,\\\"exportedCount\\\":1,\\\"missingRefCount\\\":0,\\\"missingReferences\\\":[]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"errors":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsError:KibanaImportSavedObjectsError"}},"fileContents":{"type":"string","description":"The contents of the exported saved objects file.\n"},"ignoreImportErrors":{"type":"boolean","description":"If set to true, errors during the import process will not fail the configuration application\n"},"overwrite":{"type":"boolean","description":"Overwrites saved objects when they already exist. When used, potential conflict errors are automatically resolved by overwriting the destination object.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"success":{"type":"boolean","description":"Indicates when the import was successfully completed. When set to false, some objects may not have been created. For additional information, refer to the errors and\u003cspan pulumi-lang-nodejs=\" successResults \" pulumi-lang-dotnet=\" SuccessResults \" pulumi-lang-go=\" successResults \" pulumi-lang-python=\" success_results \" pulumi-lang-yaml=\" successResults \" pulumi-lang-java=\" successResults \"\u003e success_results \u003c/span\u003eproperties.\n"},"successCount":{"type":"number","description":"Indicates the number of successfully imported records.\n"},"successResults":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsSuccessResult:KibanaImportSavedObjectsSuccessResult"}}},"type":"object","required":["errors","fileContents","success","successCount","successResults"],"inputProperties":{"fileContents":{"type":"string","description":"The contents of the exported saved objects file.\n"},"ignoreImportErrors":{"type":"boolean","description":"If set to true, errors during the import process will not fail the configuration application\n"},"overwrite":{"type":"boolean","description":"Overwrites saved objects when they already exist. When used, potential conflict errors are automatically resolved by overwriting the destination object.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"requiredInputs":["fileContents"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaImportSavedObjects resources.\n","properties":{"errors":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsError:KibanaImportSavedObjectsError"}},"fileContents":{"type":"string","description":"The contents of the exported saved objects file.\n"},"ignoreImportErrors":{"type":"boolean","description":"If set to true, errors during the import process will not fail the configuration application\n"},"overwrite":{"type":"boolean","description":"Overwrites saved objects when they already exist. When used, potential conflict errors are automatically resolved by overwriting the destination object.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"success":{"type":"boolean","description":"Indicates when the import was successfully completed. When set to false, some objects may not have been created. For additional information, refer to the errors and\u003cspan pulumi-lang-nodejs=\" successResults \" pulumi-lang-dotnet=\" SuccessResults \" pulumi-lang-go=\" successResults \" pulumi-lang-python=\" success_results \" pulumi-lang-yaml=\" successResults \" pulumi-lang-java=\" successResults \"\u003e success_results \u003c/span\u003eproperties.\n"},"successCount":{"type":"number","description":"Indicates the number of successfully imported records.\n"},"successResults":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsSuccessResult:KibanaImportSavedObjectsSuccessResult"}}},"type":"object"}},"elasticstack:index/kibanaInstallPrebuiltRules:KibanaInstallPrebuiltRules":{"description":"Manages Elastic prebuilt detection rules. This resource installs and updates Elastic prebuilt rules and timelines. See https://www.elastic.co/guide/en/security/current/prebuilt-rules.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.KibanaInstallPrebuiltRules(\"example\", {spaceId: \"default\"});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.KibanaInstallPrebuiltRules(\"example\", space_id=\"default\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.KibanaInstallPrebuiltRules(\"example\", new()\n    {\n        SpaceId = \"default\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaInstallPrebuiltRules(ctx, \"example\", \u0026elasticstack.KibanaInstallPrebuiltRulesArgs{\n\t\t\tSpaceId: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaInstallPrebuiltRules;\nimport com.pulumi.elasticstack.KibanaInstallPrebuiltRulesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KibanaInstallPrebuiltRules(\"example\", KibanaInstallPrebuiltRulesArgs.builder()\n            .spaceId(\"default\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:KibanaInstallPrebuiltRules\n    properties:\n      spaceId: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"rulesInstalled":{"type":"number","description":"Number of prebuilt rules that are installed.\n"},"rulesNotInstalled":{"type":"number","description":"Number of prebuilt rules that are not installed.\n"},"rulesNotUpdated":{"type":"number","description":"Number of prebuilt rules that have updates available.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"timelinesInstalled":{"type":"number","description":"Number of prebuilt timelines that are installed.\n"},"timelinesNotInstalled":{"type":"number","description":"Number of prebuilt timelines that are not installed.\n"},"timelinesNotUpdated":{"type":"number","description":"Number of prebuilt timelines that have updates available.\n"}},"type":"object","required":["rulesInstalled","rulesNotInstalled","rulesNotUpdated","spaceId","timelinesInstalled","timelinesNotInstalled","timelinesNotUpdated"],"inputProperties":{"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering KibanaInstallPrebuiltRules resources.\n","properties":{"rulesInstalled":{"type":"number","description":"Number of prebuilt rules that are installed.\n"},"rulesNotInstalled":{"type":"number","description":"Number of prebuilt rules that are not installed.\n"},"rulesNotUpdated":{"type":"number","description":"Number of prebuilt rules that have updates available.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"timelinesInstalled":{"type":"number","description":"Number of prebuilt timelines that are installed.\n"},"timelinesNotInstalled":{"type":"number","description":"Number of prebuilt timelines that are not installed.\n"},"timelinesNotUpdated":{"type":"number","description":"Number of prebuilt timelines that have updates available.\n"}},"type":"object"}},"elasticstack:index/kibanaMaintenanceWindow:KibanaMaintenanceWindow":{"description":"Creates and manages Kibana [maintenance windows](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-maintenance-window)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myMaintenanceWindow = new elasticstack.KibanaMaintenanceWindow(\"my_maintenance_window\", {\n    title: \"UPDATE TEST\",\n    enabled: true,\n    customSchedule: {\n        start: \"1993-01-01T05:00:00.200Z\",\n        duration: \"12d\",\n        recurring: {\n            every: \"21d\",\n            onWeekDays: [\n                \"MO\",\n                \"+3TU\",\n                \"-2FR\",\n            ],\n            onMonthDays: [\n                1,\n                2,\n                4,\n                6,\n                7,\n            ],\n            onMonths: [12],\n        },\n    },\n    scope: {\n        alerting: {\n            kql: \"_id: '1234'\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmy_maintenance_window = elasticstack.KibanaMaintenanceWindow(\"my_maintenance_window\",\n    title=\"UPDATE TEST\",\n    enabled=True,\n    custom_schedule={\n        \"start\": \"1993-01-01T05:00:00.200Z\",\n        \"duration\": \"12d\",\n        \"recurring\": {\n            \"every\": \"21d\",\n            \"on_week_days\": [\n                \"MO\",\n                \"+3TU\",\n                \"-2FR\",\n            ],\n            \"on_month_days\": [\n                1,\n                2,\n                4,\n                6,\n                7,\n            ],\n            \"on_months\": [12],\n        },\n    },\n    scope={\n        \"alerting\": {\n            \"kql\": \"_id: '1234'\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myMaintenanceWindow = new Elasticstack.KibanaMaintenanceWindow(\"my_maintenance_window\", new()\n    {\n        Title = \"UPDATE TEST\",\n        Enabled = true,\n        CustomSchedule = new Elasticstack.Inputs.KibanaMaintenanceWindowCustomScheduleArgs\n        {\n            Start = \"1993-01-01T05:00:00.200Z\",\n            Duration = \"12d\",\n            Recurring = new Elasticstack.Inputs.KibanaMaintenanceWindowCustomScheduleRecurringArgs\n            {\n                Every = \"21d\",\n                OnWeekDays = new[]\n                {\n                    \"MO\",\n                    \"+3TU\",\n                    \"-2FR\",\n                },\n                OnMonthDays = new[]\n                {\n                    1,\n                    2,\n                    4,\n                    6,\n                    7,\n                },\n                OnMonths = new[]\n                {\n                    12,\n                },\n            },\n        },\n        Scope = new Elasticstack.Inputs.KibanaMaintenanceWindowScopeArgs\n        {\n            Alerting = new Elasticstack.Inputs.KibanaMaintenanceWindowScopeAlertingArgs\n            {\n                Kql = \"_id: '1234'\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaMaintenanceWindow(ctx, \"my_maintenance_window\", \u0026elasticstack.KibanaMaintenanceWindowArgs{\n\t\t\tTitle:   pulumi.String(\"UPDATE TEST\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tCustomSchedule: \u0026elasticstack.KibanaMaintenanceWindowCustomScheduleArgs{\n\t\t\t\tStart:    pulumi.String(\"1993-01-01T05:00:00.200Z\"),\n\t\t\t\tDuration: pulumi.String(\"12d\"),\n\t\t\t\tRecurring: \u0026elasticstack.KibanaMaintenanceWindowCustomScheduleRecurringArgs{\n\t\t\t\t\tEvery: pulumi.String(\"21d\"),\n\t\t\t\t\tOnWeekDays: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MO\"),\n\t\t\t\t\t\tpulumi.String(\"+3TU\"),\n\t\t\t\t\t\tpulumi.String(\"-2FR\"),\n\t\t\t\t\t},\n\t\t\t\t\tOnMonthDays: pulumi.Float64Array{\n\t\t\t\t\t\tpulumi.Float64(1),\n\t\t\t\t\t\tpulumi.Float64(2),\n\t\t\t\t\t\tpulumi.Float64(4),\n\t\t\t\t\t\tpulumi.Float64(6),\n\t\t\t\t\t\tpulumi.Float64(7),\n\t\t\t\t\t},\n\t\t\t\t\tOnMonths: pulumi.Float64Array{\n\t\t\t\t\t\tpulumi.Float64(12),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScope: \u0026elasticstack.KibanaMaintenanceWindowScopeArgs{\n\t\t\t\tAlerting: \u0026elasticstack.KibanaMaintenanceWindowScopeAlertingArgs{\n\t\t\t\t\tKql: pulumi.String(\"_id: '1234'\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaMaintenanceWindow;\nimport com.pulumi.elasticstack.KibanaMaintenanceWindowArgs;\nimport com.pulumi.elasticstack.inputs.KibanaMaintenanceWindowCustomScheduleArgs;\nimport com.pulumi.elasticstack.inputs.KibanaMaintenanceWindowCustomScheduleRecurringArgs;\nimport com.pulumi.elasticstack.inputs.KibanaMaintenanceWindowScopeArgs;\nimport com.pulumi.elasticstack.inputs.KibanaMaintenanceWindowScopeAlertingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myMaintenanceWindow = new KibanaMaintenanceWindow(\"myMaintenanceWindow\", KibanaMaintenanceWindowArgs.builder()\n            .title(\"UPDATE TEST\")\n            .enabled(true)\n            .customSchedule(KibanaMaintenanceWindowCustomScheduleArgs.builder()\n                .start(\"1993-01-01T05:00:00.200Z\")\n                .duration(\"12d\")\n                .recurring(KibanaMaintenanceWindowCustomScheduleRecurringArgs.builder()\n                    .every(\"21d\")\n                    .onWeekDays(                    \n                        \"MO\",\n                        \"+3TU\",\n                        \"-2FR\")\n                    .onMonthDays(                    \n                        1.0,\n                        2.0,\n                        4.0,\n                        6.0,\n                        7.0)\n                    .onMonths(12.0)\n                    .build())\n                .build())\n            .scope(KibanaMaintenanceWindowScopeArgs.builder()\n                .alerting(KibanaMaintenanceWindowScopeAlertingArgs.builder()\n                    .kql(\"_id: '1234'\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myMaintenanceWindow:\n    type: elasticstack:KibanaMaintenanceWindow\n    name: my_maintenance_window\n    properties:\n      title: UPDATE TEST\n      enabled: true\n      customSchedule:\n        start: 1993-01-01T05:00:00.200Z\n        duration: 12d\n        recurring:\n          every: 21d\n          onWeekDays:\n            - MO\n            - +3TU\n            - -2FR\n          onMonthDays:\n            - 1\n            - 2\n            - 4\n            - 6\n            - 7\n          onMonths:\n            - 12\n      scope:\n        alerting:\n          kql: '_id: ''1234'''\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaMaintenanceWindow:KibanaMaintenanceWindow my_maintenance_window \u003cspace id\u003e/\u003cmaintenance window id\u003e\n```\n\n","properties":{"customSchedule":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowCustomSchedule:KibanaMaintenanceWindowCustomSchedule","description":"A set schedule over which the maintenance window applies.\n"},"enabled":{"type":"boolean","description":"Whether the current maintenance window is enabled.\n"},"scope":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowScope:KibanaMaintenanceWindowScope","description":"An object that narrows the scope of what is affected by this maintenance window.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"title":{"type":"string","description":"The name of the maintenance window.\n"}},"type":"object","required":["customSchedule","enabled","spaceId","title"],"inputProperties":{"customSchedule":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowCustomSchedule:KibanaMaintenanceWindowCustomSchedule","description":"A set schedule over which the maintenance window applies.\n"},"enabled":{"type":"boolean","description":"Whether the current maintenance window is enabled.\n"},"scope":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowScope:KibanaMaintenanceWindowScope","description":"An object that narrows the scope of what is affected by this maintenance window.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"title":{"type":"string","description":"The name of the maintenance window.\n"}},"requiredInputs":["customSchedule","title"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaMaintenanceWindow resources.\n","properties":{"customSchedule":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowCustomSchedule:KibanaMaintenanceWindowCustomSchedule","description":"A set schedule over which the maintenance window applies.\n"},"enabled":{"type":"boolean","description":"Whether the current maintenance window is enabled.\n"},"scope":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowScope:KibanaMaintenanceWindowScope","description":"An object that narrows the scope of what is affected by this maintenance window.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"title":{"type":"string","description":"The name of the maintenance window.\n"}},"type":"object"}},"elasticstack:index/kibanaSecurityDetectionRule:KibanaSecurityDetectionRule":{"description":"Creates or updates a Kibana security detection rule. See the [rules API documentation](https://www.elastic.co/guide/en/security/current/rules-api-create.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Basic security detection rule\nconst example = new elasticstack.KibanaSecurityDetectionRule(\"example\", {\n    name: \"Suspicious Activity Detection\",\n    type: \"query\",\n    query: \"event.action:logon AND user.name:admin\",\n    language: \"kuery\",\n    enabled: true,\n    description: \"Detects suspicious admin logon activities\",\n    severity: \"high\",\n    riskScore: 75,\n    from: \"now-6m\",\n    to: \"now\",\n    interval: \"5m\",\n    authors: [\"Security Team\"],\n    tags: [\n        \"security\",\n        \"authentication\",\n        \"admin\",\n    ],\n    license: \"Elastic License v2\",\n    falsePositives: [\"Legitimate admin access during maintenance windows\"],\n    references: [\n        \"https://example.com/security-docs\",\n        \"https://example.com/admin-access-policy\",\n    ],\n    note: \"Investigate the source IP and verify if the admin access is legitimate.\",\n    setup: \"Ensure that authentication logs are being collected and indexed.\",\n});\n// Advanced security detection rule with custom settings\nconst advanced = new elasticstack.KibanaSecurityDetectionRule(\"advanced\", {\n    name: \"Advanced Threat Detection\",\n    type: \"query\",\n    query: \"process.name:powershell.exe AND process.args:*encoded*\",\n    language: \"kuery\",\n    enabled: true,\n    description: \"Detects encoded PowerShell commands which may indicate malicious activity\",\n    severity: \"critical\",\n    riskScore: 90,\n    from: \"now-10m\",\n    to: \"now\",\n    interval: \"2m\",\n    maxSignals: 200,\n    version: 1,\n    indices: [\n        \"winlogbeat-*\",\n        \"logs-windows-*\",\n    ],\n    authors: [\n        \"Threat Intelligence Team\",\n        \"SOC Analysts\",\n    ],\n    tags: [\n        \"windows\",\n        \"powershell\",\n        \"encoded\",\n        \"malware\",\n        \"critical\",\n    ],\n    falsePositives: [\n        \"Legitimate encoded PowerShell scripts used by automation\",\n        \"Software installation scripts\",\n    ],\n    references: [\n        \"https://attack.mitre.org/techniques/T1059/001/\",\n        \"https://example.com/powershell-security-guide\",\n    ],\n    license: \"Elastic License v2\",\n    note: `## Investigation Steps\n1. Examine the full PowerShell command line\n2. Decode any base64 encoded content\n3. Check the parent process that spawned PowerShell\n4. Review network connections made during execution\n5. Check for file system modifications\n`,\n    setup: `## Prerequisites\n- Windows endpoint monitoring must be enabled\n- PowerShell logging should be configured\n- Sysmon or equivalent process monitoring required\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Basic security detection rule\nexample = elasticstack.KibanaSecurityDetectionRule(\"example\",\n    name=\"Suspicious Activity Detection\",\n    type=\"query\",\n    query=\"event.action:logon AND user.name:admin\",\n    language=\"kuery\",\n    enabled=True,\n    description=\"Detects suspicious admin logon activities\",\n    severity=\"high\",\n    risk_score=75,\n    from_=\"now-6m\",\n    to=\"now\",\n    interval=\"5m\",\n    authors=[\"Security Team\"],\n    tags=[\n        \"security\",\n        \"authentication\",\n        \"admin\",\n    ],\n    license=\"Elastic License v2\",\n    false_positives=[\"Legitimate admin access during maintenance windows\"],\n    references=[\n        \"https://example.com/security-docs\",\n        \"https://example.com/admin-access-policy\",\n    ],\n    note=\"Investigate the source IP and verify if the admin access is legitimate.\",\n    setup=\"Ensure that authentication logs are being collected and indexed.\")\n# Advanced security detection rule with custom settings\nadvanced = elasticstack.KibanaSecurityDetectionRule(\"advanced\",\n    name=\"Advanced Threat Detection\",\n    type=\"query\",\n    query=\"process.name:powershell.exe AND process.args:*encoded*\",\n    language=\"kuery\",\n    enabled=True,\n    description=\"Detects encoded PowerShell commands which may indicate malicious activity\",\n    severity=\"critical\",\n    risk_score=90,\n    from_=\"now-10m\",\n    to=\"now\",\n    interval=\"2m\",\n    max_signals=200,\n    version=1,\n    indices=[\n        \"winlogbeat-*\",\n        \"logs-windows-*\",\n    ],\n    authors=[\n        \"Threat Intelligence Team\",\n        \"SOC Analysts\",\n    ],\n    tags=[\n        \"windows\",\n        \"powershell\",\n        \"encoded\",\n        \"malware\",\n        \"critical\",\n    ],\n    false_positives=[\n        \"Legitimate encoded PowerShell scripts used by automation\",\n        \"Software installation scripts\",\n    ],\n    references=[\n        \"https://attack.mitre.org/techniques/T1059/001/\",\n        \"https://example.com/powershell-security-guide\",\n    ],\n    license=\"Elastic License v2\",\n    note=\"\"\"## Investigation Steps\n1. Examine the full PowerShell command line\n2. Decode any base64 encoded content\n3. Check the parent process that spawned PowerShell\n4. Review network connections made during execution\n5. Check for file system modifications\n\"\"\",\n    setup=\"\"\"## Prerequisites\n- Windows endpoint monitoring must be enabled\n- PowerShell logging should be configured\n- Sysmon or equivalent process monitoring required\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Basic security detection rule\n    var example = new Elasticstack.KibanaSecurityDetectionRule(\"example\", new()\n    {\n        Name = \"Suspicious Activity Detection\",\n        Type = \"query\",\n        Query = \"event.action:logon AND user.name:admin\",\n        Language = \"kuery\",\n        Enabled = true,\n        Description = \"Detects suspicious admin logon activities\",\n        Severity = \"high\",\n        RiskScore = 75,\n        From = \"now-6m\",\n        To = \"now\",\n        Interval = \"5m\",\n        Authors = new[]\n        {\n            \"Security Team\",\n        },\n        Tags = new[]\n        {\n            \"security\",\n            \"authentication\",\n            \"admin\",\n        },\n        License = \"Elastic License v2\",\n        FalsePositives = new[]\n        {\n            \"Legitimate admin access during maintenance windows\",\n        },\n        References = new[]\n        {\n            \"https://example.com/security-docs\",\n            \"https://example.com/admin-access-policy\",\n        },\n        Note = \"Investigate the source IP and verify if the admin access is legitimate.\",\n        Setup = \"Ensure that authentication logs are being collected and indexed.\",\n    });\n\n    // Advanced security detection rule with custom settings\n    var advanced = new Elasticstack.KibanaSecurityDetectionRule(\"advanced\", new()\n    {\n        Name = \"Advanced Threat Detection\",\n        Type = \"query\",\n        Query = \"process.name:powershell.exe AND process.args:*encoded*\",\n        Language = \"kuery\",\n        Enabled = true,\n        Description = \"Detects encoded PowerShell commands which may indicate malicious activity\",\n        Severity = \"critical\",\n        RiskScore = 90,\n        From = \"now-10m\",\n        To = \"now\",\n        Interval = \"2m\",\n        MaxSignals = 200,\n        Version = 1,\n        Indices = new[]\n        {\n            \"winlogbeat-*\",\n            \"logs-windows-*\",\n        },\n        Authors = new[]\n        {\n            \"Threat Intelligence Team\",\n            \"SOC Analysts\",\n        },\n        Tags = new[]\n        {\n            \"windows\",\n            \"powershell\",\n            \"encoded\",\n            \"malware\",\n            \"critical\",\n        },\n        FalsePositives = new[]\n        {\n            \"Legitimate encoded PowerShell scripts used by automation\",\n            \"Software installation scripts\",\n        },\n        References = new[]\n        {\n            \"https://attack.mitre.org/techniques/T1059/001/\",\n            \"https://example.com/powershell-security-guide\",\n        },\n        License = \"Elastic License v2\",\n        Note = @\"## Investigation Steps\n1. Examine the full PowerShell command line\n2. Decode any base64 encoded content\n3. Check the parent process that spawned PowerShell\n4. Review network connections made during execution\n5. Check for file system modifications\n\",\n        Setup = @\"## Prerequisites\n- Windows endpoint monitoring must be enabled\n- PowerShell logging should be configured\n- Sysmon or equivalent process monitoring required\n\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Basic security detection rule\n\t\t_, err := elasticstack.NewKibanaSecurityDetectionRule(ctx, \"example\", \u0026elasticstack.KibanaSecurityDetectionRuleArgs{\n\t\t\tName:        pulumi.String(\"Suspicious Activity Detection\"),\n\t\t\tType:        pulumi.String(\"query\"),\n\t\t\tQuery:       pulumi.String(\"event.action:logon AND user.name:admin\"),\n\t\t\tLanguage:    pulumi.String(\"kuery\"),\n\t\t\tEnabled:     pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"Detects suspicious admin logon activities\"),\n\t\t\tSeverity:    pulumi.String(\"high\"),\n\t\t\tRiskScore:   pulumi.Float64(75),\n\t\t\tFrom:        pulumi.String(\"now-6m\"),\n\t\t\tTo:          pulumi.String(\"now\"),\n\t\t\tInterval:    pulumi.String(\"5m\"),\n\t\t\tAuthors: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Security Team\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"security\"),\n\t\t\t\tpulumi.String(\"authentication\"),\n\t\t\t\tpulumi.String(\"admin\"),\n\t\t\t},\n\t\t\tLicense: pulumi.String(\"Elastic License v2\"),\n\t\t\tFalsePositives: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Legitimate admin access during maintenance windows\"),\n\t\t\t},\n\t\t\tReferences: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://example.com/security-docs\"),\n\t\t\t\tpulumi.String(\"https://example.com/admin-access-policy\"),\n\t\t\t},\n\t\t\tNote:  pulumi.String(\"Investigate the source IP and verify if the admin access is legitimate.\"),\n\t\t\tSetup: pulumi.String(\"Ensure that authentication logs are being collected and indexed.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Advanced security detection rule with custom settings\n\t\t_, err = elasticstack.NewKibanaSecurityDetectionRule(ctx, \"advanced\", \u0026elasticstack.KibanaSecurityDetectionRuleArgs{\n\t\t\tName:        pulumi.String(\"Advanced Threat Detection\"),\n\t\t\tType:        pulumi.String(\"query\"),\n\t\t\tQuery:       pulumi.String(\"process.name:powershell.exe AND process.args:*encoded*\"),\n\t\t\tLanguage:    pulumi.String(\"kuery\"),\n\t\t\tEnabled:     pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"Detects encoded PowerShell commands which may indicate malicious activity\"),\n\t\t\tSeverity:    pulumi.String(\"critical\"),\n\t\t\tRiskScore:   pulumi.Float64(90),\n\t\t\tFrom:        pulumi.String(\"now-10m\"),\n\t\t\tTo:          pulumi.String(\"now\"),\n\t\t\tInterval:    pulumi.String(\"2m\"),\n\t\t\tMaxSignals:  pulumi.Float64(200),\n\t\t\tVersion:     pulumi.Float64(1),\n\t\t\tIndices: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"winlogbeat-*\"),\n\t\t\t\tpulumi.String(\"logs-windows-*\"),\n\t\t\t},\n\t\t\tAuthors: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Threat Intelligence Team\"),\n\t\t\t\tpulumi.String(\"SOC Analysts\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"windows\"),\n\t\t\t\tpulumi.String(\"powershell\"),\n\t\t\t\tpulumi.String(\"encoded\"),\n\t\t\t\tpulumi.String(\"malware\"),\n\t\t\t\tpulumi.String(\"critical\"),\n\t\t\t},\n\t\t\tFalsePositives: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Legitimate encoded PowerShell scripts used by automation\"),\n\t\t\t\tpulumi.String(\"Software installation scripts\"),\n\t\t\t},\n\t\t\tReferences: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://attack.mitre.org/techniques/T1059/001/\"),\n\t\t\t\tpulumi.String(\"https://example.com/powershell-security-guide\"),\n\t\t\t},\n\t\t\tLicense: pulumi.String(\"Elastic License v2\"),\n\t\t\tNote: pulumi.String(`## Investigation Steps\n1. Examine the full PowerShell command line\n2. Decode any base64 encoded content\n3. Check the parent process that spawned PowerShell\n4. Review network connections made during execution\n5. Check for file system modifications\n`),\n\t\t\tSetup: pulumi.String(\"## Prerequisites\\n- Windows endpoint monitoring must be enabled\\n- PowerShell logging should be configured\\n- Sysmon or equivalent process monitoring required\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSecurityDetectionRule;\nimport com.pulumi.elasticstack.KibanaSecurityDetectionRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Basic security detection rule\n        var example = new KibanaSecurityDetectionRule(\"example\", KibanaSecurityDetectionRuleArgs.builder()\n            .name(\"Suspicious Activity Detection\")\n            .type(\"query\")\n            .query(\"event.action:logon AND user.name:admin\")\n            .language(\"kuery\")\n            .enabled(true)\n            .description(\"Detects suspicious admin logon activities\")\n            .severity(\"high\")\n            .riskScore(75.0)\n            .from(\"now-6m\")\n            .to(\"now\")\n            .interval(\"5m\")\n            .authors(\"Security Team\")\n            .tags(            \n                \"security\",\n                \"authentication\",\n                \"admin\")\n            .license(\"Elastic License v2\")\n            .falsePositives(\"Legitimate admin access during maintenance windows\")\n            .references(            \n                \"https://example.com/security-docs\",\n                \"https://example.com/admin-access-policy\")\n            .note(\"Investigate the source IP and verify if the admin access is legitimate.\")\n            .setup(\"Ensure that authentication logs are being collected and indexed.\")\n            .build());\n\n        // Advanced security detection rule with custom settings\n        var advanced = new KibanaSecurityDetectionRule(\"advanced\", KibanaSecurityDetectionRuleArgs.builder()\n            .name(\"Advanced Threat Detection\")\n            .type(\"query\")\n            .query(\"process.name:powershell.exe AND process.args:*encoded*\")\n            .language(\"kuery\")\n            .enabled(true)\n            .description(\"Detects encoded PowerShell commands which may indicate malicious activity\")\n            .severity(\"critical\")\n            .riskScore(90.0)\n            .from(\"now-10m\")\n            .to(\"now\")\n            .interval(\"2m\")\n            .maxSignals(200.0)\n            .version(1.0)\n            .indices(            \n                \"winlogbeat-*\",\n                \"logs-windows-*\")\n            .authors(            \n                \"Threat Intelligence Team\",\n                \"SOC Analysts\")\n            .tags(            \n                \"windows\",\n                \"powershell\",\n                \"encoded\",\n                \"malware\",\n                \"critical\")\n            .falsePositives(            \n                \"Legitimate encoded PowerShell scripts used by automation\",\n                \"Software installation scripts\")\n            .references(            \n                \"https://attack.mitre.org/techniques/T1059/001/\",\n                \"https://example.com/powershell-security-guide\")\n            .license(\"Elastic License v2\")\n            .note(\"\"\"\n## Investigation Steps\n1. Examine the full PowerShell command line\n2. Decode any base64 encoded content\n3. Check the parent process that spawned PowerShell\n4. Review network connections made during execution\n5. Check for file system modifications\n            \"\"\")\n            .setup(\"\"\"\n## Prerequisites\n- Windows endpoint monitoring must be enabled\n- PowerShell logging should be configured\n- Sysmon or equivalent process monitoring required\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Basic security detection rule\n  example:\n    type: elasticstack:KibanaSecurityDetectionRule\n    properties:\n      name: Suspicious Activity Detection\n      type: query\n      query: event.action:logon AND user.name:admin\n      language: kuery\n      enabled: true\n      description: Detects suspicious admin logon activities\n      severity: high\n      riskScore: 75\n      from: now-6m\n      to: now\n      interval: 5m\n      authors:\n        - Security Team\n      tags:\n        - security\n        - authentication\n        - admin\n      license: Elastic License v2\n      falsePositives:\n        - Legitimate admin access during maintenance windows\n      references:\n        - https://example.com/security-docs\n        - https://example.com/admin-access-policy\n      note: Investigate the source IP and verify if the admin access is legitimate.\n      setup: Ensure that authentication logs are being collected and indexed.\n  # Advanced security detection rule with custom settings\n  advanced:\n    type: elasticstack:KibanaSecurityDetectionRule\n    properties:\n      name: Advanced Threat Detection\n      type: query\n      query: process.name:powershell.exe AND process.args:*encoded*\n      language: kuery\n      enabled: true\n      description: Detects encoded PowerShell commands which may indicate malicious activity\n      severity: critical\n      riskScore: 90\n      from: now-10m\n      to: now\n      interval: 2m\n      maxSignals: 200\n      version: 1\n      indices:\n        - winlogbeat-*\n        - logs-windows-*\n      authors:\n        - Threat Intelligence Team\n        - SOC Analysts\n      tags:\n        - windows\n        - powershell\n        - encoded\n        - malware\n        - critical\n      falsePositives:\n        - Legitimate encoded PowerShell scripts used by automation\n        - Software installation scripts\n      references:\n        - https://attack.mitre.org/techniques/T1059/001/\n        - https://example.com/powershell-security-guide\n      license: Elastic License v2\n      note: |\n        ## Investigation Steps\n        1. Examine the full PowerShell command line\n        2. Decode any base64 encoded content\n        3. Check the parent process that spawned PowerShell\n        4. Review network connections made during execution\n        5. Check for file system modifications\n      setup: |\n        ## Prerequisites\n        - Windows endpoint monitoring must be enabled\n        - PowerShell logging should be configured\n        - Sysmon or equivalent process monitoring required\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaSecurityDetectionRule:KibanaSecurityDetectionRule example default/12345678-1234-1234-1234-123456789abc\n```\n\n","properties":{"actions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAction:KibanaSecurityDetectionRuleAction"},"description":"Array of automated actions taken when alerts are generated by the rule.\n"},"alertSuppression":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAlertSuppression:KibanaSecurityDetectionRuleAlertSuppression","description":"Defines alert suppression configuration to reduce duplicate alerts.\n"},"anomalyThreshold":{"type":"number","description":"Anomaly score threshold above which the rule creates an alert. Valid values are from 0 to 100. Required for\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erules.\n"},"authors":{"type":"array","items":{"type":"string"},"description":"The rule's author.\n"},"buildingBlockType":{"type":"string","description":"Determines if the rule acts as a building block. If set, value must be \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e. Building-block alerts are not displayed in the UI by default and are used as a foundation for other rules.\n"},"concurrentSearches":{"type":"number","description":"Number of concurrent searches for threat intelligence. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"createdAt":{"type":"string","description":"The time the rule was created.\n"},"createdBy":{"type":"string","description":"The user who created the rule.\n"},"dataViewId":{"type":"string","description":"Data view ID for the rule. Not supported for esql and\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erule types.\n"},"description":{"type":"string","description":"The rule's description.\n"},"enabled":{"type":"boolean","description":"Determines whether the rule is enabled.\n"},"exceptionsLists":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleExceptionsList:KibanaSecurityDetectionRuleExceptionsList"},"description":"Array of exception containers to prevent the rule from generating alerts.\n"},"falsePositives":{"type":"array","items":{"type":"string"},"description":"String array used to describe common reasons why the rule may issue false-positive alerts.\n"},"filters":{"type":"string","description":"Query and filter context array to define alert conditions as JSON. Supports complex filter structures including bool queries, term filters, range filters, etc. Available for all rule types.\n"},"from":{"type":"string","description":"Time from which data is analyzed each time the rule runs, using a date math range.\n"},"historyWindowStart":{"type":"string","description":"Start date to use when checking if a term has been seen before. Supports relative dates like 'now-30d'. Required for\u003cspan pulumi-lang-nodejs=\" newTerms \" pulumi-lang-dotnet=\" NewTerms \" pulumi-lang-go=\" newTerms \" pulumi-lang-python=\" new_terms \" pulumi-lang-yaml=\" newTerms \" pulumi-lang-java=\" newTerms \"\u003e new_terms \u003c/span\u003erules.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Indices on which the rule functions.\n"},"interval":{"type":"string","description":"Frequency of rule execution, using a date math range.\n"},"investigationFields":{"type":"array","items":{"type":"string"},"description":"Array of field names to include in alert investigation. Available for all rule types.\n"},"itemsPerSearch":{"type":"number","description":"Number of items to search for in each concurrent search. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"language":{"type":"string","description":"The query language (KQL or Lucene).\n"},"license":{"type":"string","description":"The rule's license.\n"},"machineLearningJobIds":{"type":"array","items":{"type":"string"},"description":"Machine learning job ID(s) the rule monitors for anomaly scores. Required for\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erules.\n"},"maxSignals":{"type":"number","description":"Maximum number of alerts the rule can create during a single run.\n"},"name":{"type":"string","description":"A human-readable name for the rule.\n"},"namespace":{"type":"string","description":"Alerts index namespace. Available for all rule types.\n"},"newTermsFields":{"type":"array","items":{"type":"string"},"description":"Field names containing the new terms. Required for\u003cspan pulumi-lang-nodejs=\" newTerms \" pulumi-lang-dotnet=\" NewTerms \" pulumi-lang-go=\" newTerms \" pulumi-lang-python=\" new_terms \" pulumi-lang-yaml=\" newTerms \" pulumi-lang-java=\" newTerms \"\u003e new_terms \u003c/span\u003erules.\n"},"note":{"type":"string","description":"Notes to help investigate alerts produced by the rule.\n"},"query":{"type":"string","description":"The query language definition.\n"},"references":{"type":"array","items":{"type":"string"},"description":"String array containing references and URLs to sources of additional information.\n"},"relatedIntegrations":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRelatedIntegration:KibanaSecurityDetectionRuleRelatedIntegration"},"description":"Array of related integrations that provide additional context for the rule.\n"},"requiredFields":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRequiredField:KibanaSecurityDetectionRuleRequiredField"},"description":"Array of Elasticsearch fields and types that must be present in source indices for the rule to function properly.\n"},"responseActions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseAction:KibanaSecurityDetectionRuleResponseAction"},"description":"Array of response actions to take when alerts are generated by the rule.\n"},"revision":{"type":"number","description":"The rule's revision number.\n"},"riskScore":{"type":"number","description":"A numerical representation of the alert's severity from 0 to 100.\n"},"riskScoreMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRiskScoreMapping:KibanaSecurityDetectionRuleRiskScoreMapping"},"description":"Array of risk score mappings to override the default risk score based on source event field values.\n"},"ruleId":{"type":"string","description":"A stable unique identifier for the rule object. If omitted, a UUID is generated.\n"},"ruleNameOverride":{"type":"string","description":"Override the rule name in Kibana. Available for all rule types.\n"},"savedId":{"type":"string","description":"Identifier of the saved query used for the rule. Required for\u003cspan pulumi-lang-nodejs=\" savedQuery \" pulumi-lang-dotnet=\" SavedQuery \" pulumi-lang-go=\" savedQuery \" pulumi-lang-python=\" saved_query \" pulumi-lang-yaml=\" savedQuery \" pulumi-lang-java=\" savedQuery \"\u003e saved_query \u003c/span\u003erules.\n"},"setup":{"type":"string","description":"Setup guide with instructions on rule prerequisites.\n"},"severity":{"type":"string","description":"Severity level of alerts produced by the rule.\n"},"severityMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleSeverityMapping:KibanaSecurityDetectionRuleSeverityMapping"},"description":"Array of severity mappings to override the default severity based on source event field values.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize, filter, and search rules.\n"},"threatFilters":{"type":"array","items":{"type":"string"},"description":"Additional filters for threat intelligence data. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatIndicatorPath":{"type":"string","description":"Path to the threat indicator in the indicator documents. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatIndices":{"type":"array","items":{"type":"string"},"description":"Array of index patterns for the threat intelligence indices. Required for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatMapping:KibanaSecurityDetectionRuleThreatMapping"},"description":"Array of threat mappings that specify how to match events with threat intelligence. Required for threat*match rules.\n"},"threatQuery":{"type":"string","description":"Query used to filter threat intelligence data. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threats":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreat:KibanaSecurityDetectionRuleThreat"},"description":"MITRE ATT\u0026CK framework threat information.\n"},"threshold":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreshold:KibanaSecurityDetectionRuleThreshold","description":"Threshold settings for the rule. Required for threshold rules.\n"},"tiebreakerField":{"type":"string","description":"Sets the tiebreaker field. Required for EQL rules when event.dataset is not provided.\n"},"timelineId":{"type":"string","description":"Timeline template ID for the rule.\n"},"timelineTitle":{"type":"string","description":"Timeline template title for the rule.\n"},"timestampOverride":{"type":"string","description":"Field name to use for timestamp override. Available for all rule types.\n"},"timestampOverrideFallbackDisabled":{"type":"boolean","description":"Disables timestamp override fallback. Available for all rule types.\n"},"to":{"type":"string","description":"Time to which data is analyzed each time the rule runs, using a date math range.\n"},"type":{"type":"string","description":"Rule type. Supported types: query, eql, esql, machine*learning, new*terms, saved*query, threat*match, threshold.\n"},"updatedAt":{"type":"string","description":"The time the rule was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the rule.\n"},"version":{"type":"number","description":"The rule's version number.\n"}},"type":"object","required":["authors","createdAt","createdBy","description","enabled","falsePositives","from","indices","interval","language","maxSignals","name","query","references","revision","riskScore","ruleId","severity","spaceId","tags","threatIndicatorPath","threatQuery","to","type","updatedAt","updatedBy","version"],"inputProperties":{"actions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAction:KibanaSecurityDetectionRuleAction"},"description":"Array of automated actions taken when alerts are generated by the rule.\n"},"alertSuppression":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAlertSuppression:KibanaSecurityDetectionRuleAlertSuppression","description":"Defines alert suppression configuration to reduce duplicate alerts.\n"},"anomalyThreshold":{"type":"number","description":"Anomaly score threshold above which the rule creates an alert. Valid values are from 0 to 100. Required for\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erules.\n"},"authors":{"type":"array","items":{"type":"string"},"description":"The rule's author.\n"},"buildingBlockType":{"type":"string","description":"Determines if the rule acts as a building block. If set, value must be \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e. Building-block alerts are not displayed in the UI by default and are used as a foundation for other rules.\n"},"concurrentSearches":{"type":"number","description":"Number of concurrent searches for threat intelligence. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"dataViewId":{"type":"string","description":"Data view ID for the rule. Not supported for esql and\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erule types.\n"},"description":{"type":"string","description":"The rule's description.\n"},"enabled":{"type":"boolean","description":"Determines whether the rule is enabled.\n"},"exceptionsLists":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleExceptionsList:KibanaSecurityDetectionRuleExceptionsList"},"description":"Array of exception containers to prevent the rule from generating alerts.\n"},"falsePositives":{"type":"array","items":{"type":"string"},"description":"String array used to describe common reasons why the rule may issue false-positive alerts.\n"},"filters":{"type":"string","description":"Query and filter context array to define alert conditions as JSON. Supports complex filter structures including bool queries, term filters, range filters, etc. Available for all rule types.\n"},"from":{"type":"string","description":"Time from which data is analyzed each time the rule runs, using a date math range.\n"},"historyWindowStart":{"type":"string","description":"Start date to use when checking if a term has been seen before. Supports relative dates like 'now-30d'. Required for\u003cspan pulumi-lang-nodejs=\" newTerms \" pulumi-lang-dotnet=\" NewTerms \" pulumi-lang-go=\" newTerms \" pulumi-lang-python=\" new_terms \" pulumi-lang-yaml=\" newTerms \" pulumi-lang-java=\" newTerms \"\u003e new_terms \u003c/span\u003erules.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Indices on which the rule functions.\n"},"interval":{"type":"string","description":"Frequency of rule execution, using a date math range.\n"},"investigationFields":{"type":"array","items":{"type":"string"},"description":"Array of field names to include in alert investigation. Available for all rule types.\n"},"itemsPerSearch":{"type":"number","description":"Number of items to search for in each concurrent search. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"language":{"type":"string","description":"The query language (KQL or Lucene).\n"},"license":{"type":"string","description":"The rule's license.\n"},"machineLearningJobIds":{"type":"array","items":{"type":"string"},"description":"Machine learning job ID(s) the rule monitors for anomaly scores. Required for\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erules.\n"},"maxSignals":{"type":"number","description":"Maximum number of alerts the rule can create during a single run.\n"},"name":{"type":"string","description":"A human-readable name for the rule.\n"},"namespace":{"type":"string","description":"Alerts index namespace. Available for all rule types.\n"},"newTermsFields":{"type":"array","items":{"type":"string"},"description":"Field names containing the new terms. Required for\u003cspan pulumi-lang-nodejs=\" newTerms \" pulumi-lang-dotnet=\" NewTerms \" pulumi-lang-go=\" newTerms \" pulumi-lang-python=\" new_terms \" pulumi-lang-yaml=\" newTerms \" pulumi-lang-java=\" newTerms \"\u003e new_terms \u003c/span\u003erules.\n"},"note":{"type":"string","description":"Notes to help investigate alerts produced by the rule.\n"},"query":{"type":"string","description":"The query language definition.\n"},"references":{"type":"array","items":{"type":"string"},"description":"String array containing references and URLs to sources of additional information.\n"},"relatedIntegrations":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRelatedIntegration:KibanaSecurityDetectionRuleRelatedIntegration"},"description":"Array of related integrations that provide additional context for the rule.\n"},"requiredFields":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRequiredField:KibanaSecurityDetectionRuleRequiredField"},"description":"Array of Elasticsearch fields and types that must be present in source indices for the rule to function properly.\n"},"responseActions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseAction:KibanaSecurityDetectionRuleResponseAction"},"description":"Array of response actions to take when alerts are generated by the rule.\n"},"riskScore":{"type":"number","description":"A numerical representation of the alert's severity from 0 to 100.\n"},"riskScoreMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRiskScoreMapping:KibanaSecurityDetectionRuleRiskScoreMapping"},"description":"Array of risk score mappings to override the default risk score based on source event field values.\n"},"ruleId":{"type":"string","description":"A stable unique identifier for the rule object. If omitted, a UUID is generated.\n"},"ruleNameOverride":{"type":"string","description":"Override the rule name in Kibana. Available for all rule types.\n"},"savedId":{"type":"string","description":"Identifier of the saved query used for the rule. Required for\u003cspan pulumi-lang-nodejs=\" savedQuery \" pulumi-lang-dotnet=\" SavedQuery \" pulumi-lang-go=\" savedQuery \" pulumi-lang-python=\" saved_query \" pulumi-lang-yaml=\" savedQuery \" pulumi-lang-java=\" savedQuery \"\u003e saved_query \u003c/span\u003erules.\n"},"setup":{"type":"string","description":"Setup guide with instructions on rule prerequisites.\n"},"severity":{"type":"string","description":"Severity level of alerts produced by the rule.\n"},"severityMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleSeverityMapping:KibanaSecurityDetectionRuleSeverityMapping"},"description":"Array of severity mappings to override the default severity based on source event field values.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize, filter, and search rules.\n"},"threatFilters":{"type":"array","items":{"type":"string"},"description":"Additional filters for threat intelligence data. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatIndicatorPath":{"type":"string","description":"Path to the threat indicator in the indicator documents. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatIndices":{"type":"array","items":{"type":"string"},"description":"Array of index patterns for the threat intelligence indices. Required for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatMapping:KibanaSecurityDetectionRuleThreatMapping"},"description":"Array of threat mappings that specify how to match events with threat intelligence. Required for threat*match rules.\n"},"threatQuery":{"type":"string","description":"Query used to filter threat intelligence data. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threats":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreat:KibanaSecurityDetectionRuleThreat"},"description":"MITRE ATT\u0026CK framework threat information.\n"},"threshold":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreshold:KibanaSecurityDetectionRuleThreshold","description":"Threshold settings for the rule. Required for threshold rules.\n"},"tiebreakerField":{"type":"string","description":"Sets the tiebreaker field. Required for EQL rules when event.dataset is not provided.\n"},"timelineId":{"type":"string","description":"Timeline template ID for the rule.\n"},"timelineTitle":{"type":"string","description":"Timeline template title for the rule.\n"},"timestampOverride":{"type":"string","description":"Field name to use for timestamp override. Available for all rule types.\n"},"timestampOverrideFallbackDisabled":{"type":"boolean","description":"Disables timestamp override fallback. Available for all rule types.\n"},"to":{"type":"string","description":"Time to which data is analyzed each time the rule runs, using a date math range.\n"},"type":{"type":"string","description":"Rule type. Supported types: query, eql, esql, machine*learning, new*terms, saved*query, threat*match, threshold.\n"},"version":{"type":"number","description":"The rule's version number.\n"}},"requiredInputs":["description","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityDetectionRule resources.\n","properties":{"actions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAction:KibanaSecurityDetectionRuleAction"},"description":"Array of automated actions taken when alerts are generated by the rule.\n"},"alertSuppression":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAlertSuppression:KibanaSecurityDetectionRuleAlertSuppression","description":"Defines alert suppression configuration to reduce duplicate alerts.\n"},"anomalyThreshold":{"type":"number","description":"Anomaly score threshold above which the rule creates an alert. Valid values are from 0 to 100. Required for\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erules.\n"},"authors":{"type":"array","items":{"type":"string"},"description":"The rule's author.\n"},"buildingBlockType":{"type":"string","description":"Determines if the rule acts as a building block. If set, value must be \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e. Building-block alerts are not displayed in the UI by default and are used as a foundation for other rules.\n"},"concurrentSearches":{"type":"number","description":"Number of concurrent searches for threat intelligence. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"createdAt":{"type":"string","description":"The time the rule was created.\n"},"createdBy":{"type":"string","description":"The user who created the rule.\n"},"dataViewId":{"type":"string","description":"Data view ID for the rule. Not supported for esql and\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erule types.\n"},"description":{"type":"string","description":"The rule's description.\n"},"enabled":{"type":"boolean","description":"Determines whether the rule is enabled.\n"},"exceptionsLists":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleExceptionsList:KibanaSecurityDetectionRuleExceptionsList"},"description":"Array of exception containers to prevent the rule from generating alerts.\n"},"falsePositives":{"type":"array","items":{"type":"string"},"description":"String array used to describe common reasons why the rule may issue false-positive alerts.\n"},"filters":{"type":"string","description":"Query and filter context array to define alert conditions as JSON. Supports complex filter structures including bool queries, term filters, range filters, etc. Available for all rule types.\n"},"from":{"type":"string","description":"Time from which data is analyzed each time the rule runs, using a date math range.\n"},"historyWindowStart":{"type":"string","description":"Start date to use when checking if a term has been seen before. Supports relative dates like 'now-30d'. Required for\u003cspan pulumi-lang-nodejs=\" newTerms \" pulumi-lang-dotnet=\" NewTerms \" pulumi-lang-go=\" newTerms \" pulumi-lang-python=\" new_terms \" pulumi-lang-yaml=\" newTerms \" pulumi-lang-java=\" newTerms \"\u003e new_terms \u003c/span\u003erules.\n"},"indices":{"type":"array","items":{"type":"string"},"description":"Indices on which the rule functions.\n"},"interval":{"type":"string","description":"Frequency of rule execution, using a date math range.\n"},"investigationFields":{"type":"array","items":{"type":"string"},"description":"Array of field names to include in alert investigation. Available for all rule types.\n"},"itemsPerSearch":{"type":"number","description":"Number of items to search for in each concurrent search. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"language":{"type":"string","description":"The query language (KQL or Lucene).\n"},"license":{"type":"string","description":"The rule's license.\n"},"machineLearningJobIds":{"type":"array","items":{"type":"string"},"description":"Machine learning job ID(s) the rule monitors for anomaly scores. Required for\u003cspan pulumi-lang-nodejs=\" machineLearning \" pulumi-lang-dotnet=\" MachineLearning \" pulumi-lang-go=\" machineLearning \" pulumi-lang-python=\" machine_learning \" pulumi-lang-yaml=\" machineLearning \" pulumi-lang-java=\" machineLearning \"\u003e machine_learning \u003c/span\u003erules.\n"},"maxSignals":{"type":"number","description":"Maximum number of alerts the rule can create during a single run.\n"},"name":{"type":"string","description":"A human-readable name for the rule.\n"},"namespace":{"type":"string","description":"Alerts index namespace. Available for all rule types.\n"},"newTermsFields":{"type":"array","items":{"type":"string"},"description":"Field names containing the new terms. Required for\u003cspan pulumi-lang-nodejs=\" newTerms \" pulumi-lang-dotnet=\" NewTerms \" pulumi-lang-go=\" newTerms \" pulumi-lang-python=\" new_terms \" pulumi-lang-yaml=\" newTerms \" pulumi-lang-java=\" newTerms \"\u003e new_terms \u003c/span\u003erules.\n"},"note":{"type":"string","description":"Notes to help investigate alerts produced by the rule.\n"},"query":{"type":"string","description":"The query language definition.\n"},"references":{"type":"array","items":{"type":"string"},"description":"String array containing references and URLs to sources of additional information.\n"},"relatedIntegrations":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRelatedIntegration:KibanaSecurityDetectionRuleRelatedIntegration"},"description":"Array of related integrations that provide additional context for the rule.\n"},"requiredFields":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRequiredField:KibanaSecurityDetectionRuleRequiredField"},"description":"Array of Elasticsearch fields and types that must be present in source indices for the rule to function properly.\n"},"responseActions":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseAction:KibanaSecurityDetectionRuleResponseAction"},"description":"Array of response actions to take when alerts are generated by the rule.\n"},"revision":{"type":"number","description":"The rule's revision number.\n"},"riskScore":{"type":"number","description":"A numerical representation of the alert's severity from 0 to 100.\n"},"riskScoreMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRiskScoreMapping:KibanaSecurityDetectionRuleRiskScoreMapping"},"description":"Array of risk score mappings to override the default risk score based on source event field values.\n"},"ruleId":{"type":"string","description":"A stable unique identifier for the rule object. If omitted, a UUID is generated.\n"},"ruleNameOverride":{"type":"string","description":"Override the rule name in Kibana. Available for all rule types.\n"},"savedId":{"type":"string","description":"Identifier of the saved query used for the rule. Required for\u003cspan pulumi-lang-nodejs=\" savedQuery \" pulumi-lang-dotnet=\" SavedQuery \" pulumi-lang-go=\" savedQuery \" pulumi-lang-python=\" saved_query \" pulumi-lang-yaml=\" savedQuery \" pulumi-lang-java=\" savedQuery \"\u003e saved_query \u003c/span\u003erules.\n"},"setup":{"type":"string","description":"Setup guide with instructions on rule prerequisites.\n"},"severity":{"type":"string","description":"Severity level of alerts produced by the rule.\n"},"severityMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleSeverityMapping:KibanaSecurityDetectionRuleSeverityMapping"},"description":"Array of severity mappings to override the default severity based on source event field values.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize, filter, and search rules.\n"},"threatFilters":{"type":"array","items":{"type":"string"},"description":"Additional filters for threat intelligence data. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatIndicatorPath":{"type":"string","description":"Path to the threat indicator in the indicator documents. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatIndices":{"type":"array","items":{"type":"string"},"description":"Array of index patterns for the threat intelligence indices. Required for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threatMappings":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatMapping:KibanaSecurityDetectionRuleThreatMapping"},"description":"Array of threat mappings that specify how to match events with threat intelligence. Required for threat*match rules.\n"},"threatQuery":{"type":"string","description":"Query used to filter threat intelligence data. Optional for\u003cspan pulumi-lang-nodejs=\" threatMatch \" pulumi-lang-dotnet=\" ThreatMatch \" pulumi-lang-go=\" threatMatch \" pulumi-lang-python=\" threat_match \" pulumi-lang-yaml=\" threatMatch \" pulumi-lang-java=\" threatMatch \"\u003e threat_match \u003c/span\u003erules.\n"},"threats":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreat:KibanaSecurityDetectionRuleThreat"},"description":"MITRE ATT\u0026CK framework threat information.\n"},"threshold":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreshold:KibanaSecurityDetectionRuleThreshold","description":"Threshold settings for the rule. Required for threshold rules.\n"},"tiebreakerField":{"type":"string","description":"Sets the tiebreaker field. Required for EQL rules when event.dataset is not provided.\n"},"timelineId":{"type":"string","description":"Timeline template ID for the rule.\n"},"timelineTitle":{"type":"string","description":"Timeline template title for the rule.\n"},"timestampOverride":{"type":"string","description":"Field name to use for timestamp override. Available for all rule types.\n"},"timestampOverrideFallbackDisabled":{"type":"boolean","description":"Disables timestamp override fallback. Available for all rule types.\n"},"to":{"type":"string","description":"Time to which data is analyzed each time the rule runs, using a date math range.\n"},"type":{"type":"string","description":"Rule type. Supported types: query, eql, esql, machine*learning, new*terms, saved*query, threat*match, threshold.\n"},"updatedAt":{"type":"string","description":"The time the rule was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the rule.\n"},"version":{"type":"number","description":"The rule's version number.\n"}},"type":"object"}},"elasticstack:index/kibanaSecurityExceptionItem:KibanaSecurityExceptionItem":{"description":"Manages a Kibana Exception Item. Exception items define the specific query conditions used to prevent rules from generating alerts.\n\nSee the [Kibana Exceptions API documentation](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-security-exceptions-api) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.KibanaSecurityExceptionList(\"example\", {\n    listId: \"my-exception-list\",\n    name: \"My Exception List\",\n    description: \"List of exceptions\",\n    type: \"detection\",\n    namespaceType: \"single\",\n});\nconst complexEntry = new elasticstack.KibanaSecurityExceptionItem(\"complex_entry\", {\n    listId: example.listId,\n    itemId: \"complex-exception\",\n    name: \"Complex Exception with Multiple Entries\",\n    description: \"Exception with multiple conditions\",\n    type: \"simple\",\n    namespaceType: \"single\",\n    entries: [\n        {\n            type: \"match\",\n            field: \"host.name\",\n            operator: \"included\",\n            value: \"trusted-host\",\n        },\n        {\n            type: \"match_any\",\n            field: \"user.name\",\n            operator: \"excluded\",\n            values: [\n                \"admin\",\n                \"root\",\n            ],\n        },\n    ],\n    osTypes: [\"linux\"],\n    tags: [\n        \"complex\",\n        \"multi-condition\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.KibanaSecurityExceptionList(\"example\",\n    list_id=\"my-exception-list\",\n    name=\"My Exception List\",\n    description=\"List of exceptions\",\n    type=\"detection\",\n    namespace_type=\"single\")\ncomplex_entry = elasticstack.KibanaSecurityExceptionItem(\"complex_entry\",\n    list_id=example.list_id,\n    item_id=\"complex-exception\",\n    name=\"Complex Exception with Multiple Entries\",\n    description=\"Exception with multiple conditions\",\n    type=\"simple\",\n    namespace_type=\"single\",\n    entries=[\n        {\n            \"type\": \"match\",\n            \"field\": \"host.name\",\n            \"operator\": \"included\",\n            \"value\": \"trusted-host\",\n        },\n        {\n            \"type\": \"match_any\",\n            \"field\": \"user.name\",\n            \"operator\": \"excluded\",\n            \"values\": [\n                \"admin\",\n                \"root\",\n            ],\n        },\n    ],\n    os_types=[\"linux\"],\n    tags=[\n        \"complex\",\n        \"multi-condition\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.KibanaSecurityExceptionList(\"example\", new()\n    {\n        ListId = \"my-exception-list\",\n        Name = \"My Exception List\",\n        Description = \"List of exceptions\",\n        Type = \"detection\",\n        NamespaceType = \"single\",\n    });\n\n    var complexEntry = new Elasticstack.KibanaSecurityExceptionItem(\"complex_entry\", new()\n    {\n        ListId = example.ListId,\n        ItemId = \"complex-exception\",\n        Name = \"Complex Exception with Multiple Entries\",\n        Description = \"Exception with multiple conditions\",\n        Type = \"simple\",\n        NamespaceType = \"single\",\n        Entries = new[]\n        {\n            new Elasticstack.Inputs.KibanaSecurityExceptionItemEntryArgs\n            {\n                Type = \"match\",\n                Field = \"host.name\",\n                Operator = \"included\",\n                Value = \"trusted-host\",\n            },\n            new Elasticstack.Inputs.KibanaSecurityExceptionItemEntryArgs\n            {\n                Type = \"match_any\",\n                Field = \"user.name\",\n                Operator = \"excluded\",\n                Values = new[]\n                {\n                    \"admin\",\n                    \"root\",\n                },\n            },\n        },\n        OsTypes = new[]\n        {\n            \"linux\",\n        },\n        Tags = new[]\n        {\n            \"complex\",\n            \"multi-condition\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticstack.NewKibanaSecurityExceptionList(ctx, \"example\", \u0026elasticstack.KibanaSecurityExceptionListArgs{\n\t\t\tListId:        pulumi.String(\"my-exception-list\"),\n\t\t\tName:          pulumi.String(\"My Exception List\"),\n\t\t\tDescription:   pulumi.String(\"List of exceptions\"),\n\t\t\tType:          pulumi.String(\"detection\"),\n\t\t\tNamespaceType: pulumi.String(\"single\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewKibanaSecurityExceptionItem(ctx, \"complex_entry\", \u0026elasticstack.KibanaSecurityExceptionItemArgs{\n\t\t\tListId:        example.ListId,\n\t\t\tItemId:        pulumi.String(\"complex-exception\"),\n\t\t\tName:          pulumi.String(\"Complex Exception with Multiple Entries\"),\n\t\t\tDescription:   pulumi.String(\"Exception with multiple conditions\"),\n\t\t\tType:          pulumi.String(\"simple\"),\n\t\t\tNamespaceType: pulumi.String(\"single\"),\n\t\t\tEntries: elasticstack.KibanaSecurityExceptionItemEntryArray{\n\t\t\t\t\u0026elasticstack.KibanaSecurityExceptionItemEntryArgs{\n\t\t\t\t\tType:     pulumi.String(\"match\"),\n\t\t\t\t\tField:    pulumi.String(\"host.name\"),\n\t\t\t\t\tOperator: pulumi.String(\"included\"),\n\t\t\t\t\tValue:    pulumi.String(\"trusted-host\"),\n\t\t\t\t},\n\t\t\t\t\u0026elasticstack.KibanaSecurityExceptionItemEntryArgs{\n\t\t\t\t\tType:     pulumi.String(\"match_any\"),\n\t\t\t\t\tField:    pulumi.String(\"user.name\"),\n\t\t\t\t\tOperator: pulumi.String(\"excluded\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"admin\"),\n\t\t\t\t\t\tpulumi.String(\"root\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOsTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"linux\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"complex\"),\n\t\t\t\tpulumi.String(\"multi-condition\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSecurityExceptionList;\nimport com.pulumi.elasticstack.KibanaSecurityExceptionListArgs;\nimport com.pulumi.elasticstack.KibanaSecurityExceptionItem;\nimport com.pulumi.elasticstack.KibanaSecurityExceptionItemArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSecurityExceptionItemEntryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KibanaSecurityExceptionList(\"example\", KibanaSecurityExceptionListArgs.builder()\n            .listId(\"my-exception-list\")\n            .name(\"My Exception List\")\n            .description(\"List of exceptions\")\n            .type(\"detection\")\n            .namespaceType(\"single\")\n            .build());\n\n        var complexEntry = new KibanaSecurityExceptionItem(\"complexEntry\", KibanaSecurityExceptionItemArgs.builder()\n            .listId(example.listId())\n            .itemId(\"complex-exception\")\n            .name(\"Complex Exception with Multiple Entries\")\n            .description(\"Exception with multiple conditions\")\n            .type(\"simple\")\n            .namespaceType(\"single\")\n            .entries(            \n                KibanaSecurityExceptionItemEntryArgs.builder()\n                    .type(\"match\")\n                    .field(\"host.name\")\n                    .operator(\"included\")\n                    .value(\"trusted-host\")\n                    .build(),\n                KibanaSecurityExceptionItemEntryArgs.builder()\n                    .type(\"match_any\")\n                    .field(\"user.name\")\n                    .operator(\"excluded\")\n                    .values(                    \n                        \"admin\",\n                        \"root\")\n                    .build())\n            .osTypes(\"linux\")\n            .tags(            \n                \"complex\",\n                \"multi-condition\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:KibanaSecurityExceptionList\n    properties:\n      listId: my-exception-list\n      name: My Exception List\n      description: List of exceptions\n      type: detection\n      namespaceType: single\n  complexEntry:\n    type: elasticstack:KibanaSecurityExceptionItem\n    name: complex_entry\n    properties:\n      listId: ${example.listId}\n      itemId: complex-exception\n      name: Complex Exception with Multiple Entries\n      description: Exception with multiple conditions\n      type: simple\n      namespaceType: single\n      entries:\n        - type: match\n          field: host.name\n          operator: included\n          value: trusted-host\n        - type: match_any\n          field: user.name\n          operator: excluded\n          values:\n            - admin\n            - root\n      osTypes:\n        - linux\n      tags:\n        - complex\n        - multi-condition\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"comments":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemComment:KibanaSecurityExceptionItemComment"},"description":"Array of comments about the exception item.\n"},"createdAt":{"type":"string","description":"The timestamp of when the exception item was created.\n"},"createdBy":{"type":"string","description":"The user who created the exception item.\n"},"description":{"type":"string","description":"Describes the exception item.\n"},"entries":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntry:KibanaSecurityExceptionItemEntry"},"description":"The exception item entries. This defines the conditions under which the exception applies.\n"},"expireTime":{"type":"string","description":"The exception item's expiration date in RFC3339 format. This field is only available for regular exception items, not endpoint exceptions.\n"},"itemId":{"type":"string","description":"The exception item's human readable string identifier.\n"},"listId":{"type":"string","description":"The exception list's identifier that this item belongs to.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the exception item as JSON string.\n"},"name":{"type":"string","description":"The name of the exception item.\n"},"namespaceType":{"type":"string","description":"Determines whether the exception item is available in all Kibana spaces or just the space in which it is created. Can be \u003cspan pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\"\u003e`single`\u003c/span\u003e (default) or \u003cspan pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\"\u003e`agnostic`\u003c/span\u003e.\n"},"osTypes":{"type":"array","items":{"type":"string"},"description":"Array of OS types for which the exceptions apply. Valid values: \u003cspan pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\"\u003e`linux`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\"\u003e`macos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\"\u003e`windows`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize exception items.\n"},"tieBreakerId":{"type":"string","description":"Field used in search to ensure all items are sorted and returned correctly.\n"},"type":{"type":"string","description":"The type of exception item. Must be \u003cspan pulumi-lang-nodejs=\"`simple`\" pulumi-lang-dotnet=\"`Simple`\" pulumi-lang-go=\"`simple`\" pulumi-lang-python=\"`simple`\" pulumi-lang-yaml=\"`simple`\" pulumi-lang-java=\"`simple`\"\u003e`simple`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The timestamp of when the exception item was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the exception item.\n"}},"type":"object","required":["createdAt","createdBy","description","entries","expireTime","itemId","listId","name","namespaceType","spaceId","tieBreakerId","type","updatedAt","updatedBy"],"inputProperties":{"comments":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemComment:KibanaSecurityExceptionItemComment"},"description":"Array of comments about the exception item.\n"},"description":{"type":"string","description":"Describes the exception item.\n"},"entries":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntry:KibanaSecurityExceptionItemEntry"},"description":"The exception item entries. This defines the conditions under which the exception applies.\n"},"expireTime":{"type":"string","description":"The exception item's expiration date in RFC3339 format. This field is only available for regular exception items, not endpoint exceptions.\n"},"itemId":{"type":"string","description":"The exception item's human readable string identifier.\n"},"listId":{"type":"string","description":"The exception list's identifier that this item belongs to.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the exception item as JSON string.\n"},"name":{"type":"string","description":"The name of the exception item.\n"},"namespaceType":{"type":"string","description":"Determines whether the exception item is available in all Kibana spaces or just the space in which it is created. Can be \u003cspan pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\"\u003e`single`\u003c/span\u003e (default) or \u003cspan pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\"\u003e`agnostic`\u003c/span\u003e.\n"},"osTypes":{"type":"array","items":{"type":"string"},"description":"Array of OS types for which the exceptions apply. Valid values: \u003cspan pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\"\u003e`linux`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\"\u003e`macos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\"\u003e`windows`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize exception items.\n"},"type":{"type":"string","description":"The type of exception item. Must be \u003cspan pulumi-lang-nodejs=\"`simple`\" pulumi-lang-dotnet=\"`Simple`\" pulumi-lang-go=\"`simple`\" pulumi-lang-python=\"`simple`\" pulumi-lang-yaml=\"`simple`\" pulumi-lang-java=\"`simple`\"\u003e`simple`\u003c/span\u003e.\n"}},"requiredInputs":["description","entries","listId","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityExceptionItem resources.\n","properties":{"comments":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemComment:KibanaSecurityExceptionItemComment"},"description":"Array of comments about the exception item.\n"},"createdAt":{"type":"string","description":"The timestamp of when the exception item was created.\n"},"createdBy":{"type":"string","description":"The user who created the exception item.\n"},"description":{"type":"string","description":"Describes the exception item.\n"},"entries":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntry:KibanaSecurityExceptionItemEntry"},"description":"The exception item entries. This defines the conditions under which the exception applies.\n"},"expireTime":{"type":"string","description":"The exception item's expiration date in RFC3339 format. This field is only available for regular exception items, not endpoint exceptions.\n"},"itemId":{"type":"string","description":"The exception item's human readable string identifier.\n"},"listId":{"type":"string","description":"The exception list's identifier that this item belongs to.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the exception item as JSON string.\n"},"name":{"type":"string","description":"The name of the exception item.\n"},"namespaceType":{"type":"string","description":"Determines whether the exception item is available in all Kibana spaces or just the space in which it is created. Can be \u003cspan pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\"\u003e`single`\u003c/span\u003e (default) or \u003cspan pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\"\u003e`agnostic`\u003c/span\u003e.\n"},"osTypes":{"type":"array","items":{"type":"string"},"description":"Array of OS types for which the exceptions apply. Valid values: \u003cspan pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\"\u003e`linux`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\"\u003e`macos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\"\u003e`windows`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize exception items.\n"},"tieBreakerId":{"type":"string","description":"Field used in search to ensure all items are sorted and returned correctly.\n"},"type":{"type":"string","description":"The type of exception item. Must be \u003cspan pulumi-lang-nodejs=\"`simple`\" pulumi-lang-dotnet=\"`Simple`\" pulumi-lang-go=\"`simple`\" pulumi-lang-python=\"`simple`\" pulumi-lang-yaml=\"`simple`\" pulumi-lang-java=\"`simple`\"\u003e`simple`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The timestamp of when the exception item was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the exception item.\n"}},"type":"object"}},"elasticstack:index/kibanaSecurityExceptionList:KibanaSecurityExceptionList":{"description":"Manages a Kibana Exception List. Exception lists are containers for exception items used to prevent security rules from generating alerts.\n\nSee the [Kibana Exceptions API documentation](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-security-exceptions-api) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst endpoint = new elasticstack.KibanaSecurityExceptionList(\"endpoint\", {\n    listId: \"my-endpoint-exception-list\",\n    name: \"My Endpoint Exception List\",\n    description: \"List of endpoint exceptions\",\n    type: \"endpoint\",\n    namespaceType: \"agnostic\",\n    osTypes: [\n        \"linux\",\n        \"windows\",\n        \"macos\",\n    ],\n    tags: [\n        \"endpoint\",\n        \"security\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nendpoint = elasticstack.KibanaSecurityExceptionList(\"endpoint\",\n    list_id=\"my-endpoint-exception-list\",\n    name=\"My Endpoint Exception List\",\n    description=\"List of endpoint exceptions\",\n    type=\"endpoint\",\n    namespace_type=\"agnostic\",\n    os_types=[\n        \"linux\",\n        \"windows\",\n        \"macos\",\n    ],\n    tags=[\n        \"endpoint\",\n        \"security\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var endpoint = new Elasticstack.KibanaSecurityExceptionList(\"endpoint\", new()\n    {\n        ListId = \"my-endpoint-exception-list\",\n        Name = \"My Endpoint Exception List\",\n        Description = \"List of endpoint exceptions\",\n        Type = \"endpoint\",\n        NamespaceType = \"agnostic\",\n        OsTypes = new[]\n        {\n            \"linux\",\n            \"windows\",\n            \"macos\",\n        },\n        Tags = new[]\n        {\n            \"endpoint\",\n            \"security\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaSecurityExceptionList(ctx, \"endpoint\", \u0026elasticstack.KibanaSecurityExceptionListArgs{\n\t\t\tListId:        pulumi.String(\"my-endpoint-exception-list\"),\n\t\t\tName:          pulumi.String(\"My Endpoint Exception List\"),\n\t\t\tDescription:   pulumi.String(\"List of endpoint exceptions\"),\n\t\t\tType:          pulumi.String(\"endpoint\"),\n\t\t\tNamespaceType: pulumi.String(\"agnostic\"),\n\t\t\tOsTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"linux\"),\n\t\t\t\tpulumi.String(\"windows\"),\n\t\t\t\tpulumi.String(\"macos\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"endpoint\"),\n\t\t\t\tpulumi.String(\"security\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSecurityExceptionList;\nimport com.pulumi.elasticstack.KibanaSecurityExceptionListArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var endpoint = new KibanaSecurityExceptionList(\"endpoint\", KibanaSecurityExceptionListArgs.builder()\n            .listId(\"my-endpoint-exception-list\")\n            .name(\"My Endpoint Exception List\")\n            .description(\"List of endpoint exceptions\")\n            .type(\"endpoint\")\n            .namespaceType(\"agnostic\")\n            .osTypes(            \n                \"linux\",\n                \"windows\",\n                \"macos\")\n            .tags(            \n                \"endpoint\",\n                \"security\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  endpoint:\n    type: elasticstack:KibanaSecurityExceptionList\n    properties:\n      listId: my-endpoint-exception-list\n      name: My Endpoint Exception List\n      description: List of endpoint exceptions\n      type: endpoint\n      namespaceType: agnostic\n      osTypes:\n        - linux\n        - windows\n        - macos\n      tags:\n        - endpoint\n        - security\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"createdAt":{"type":"string","description":"The timestamp of when the exception list was created.\n"},"createdBy":{"type":"string","description":"The user who created the exception list.\n"},"description":{"type":"string","description":"Describes the exception list.\n"},"immutable":{"type":"boolean","description":"Whether the exception list is immutable.\n"},"listId":{"type":"string","description":"The exception list's human readable string identifier.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the list container as JSON string.\n"},"name":{"type":"string","description":"The name of the exception list.\n"},"namespaceType":{"type":"string","description":"Determines whether the exception list is available in all Kibana spaces or just the space in which it is created. Can be \u003cspan pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\"\u003e`single`\u003c/span\u003e (default) or \u003cspan pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\"\u003e`agnostic`\u003c/span\u003e.\n"},"osTypes":{"type":"array","items":{"type":"string"},"description":"Array of OS types for which the exceptions apply. Valid values: \u003cspan pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\"\u003e`linux`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\"\u003e`macos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\"\u003e`windows`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize exception containers.\n"},"tieBreakerId":{"type":"string","description":"Field used in search to ensure all containers are sorted and returned correctly.\n"},"type":{"type":"string","description":"The type of exception list. Can be one of: \u003cspan pulumi-lang-nodejs=\"`detection`\" pulumi-lang-dotnet=\"`Detection`\" pulumi-lang-go=\"`detection`\" pulumi-lang-python=\"`detection`\" pulumi-lang-yaml=\"`detection`\" pulumi-lang-java=\"`detection`\"\u003e`detection`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointTrustedApps`\" pulumi-lang-dotnet=\"`EndpointTrustedApps`\" pulumi-lang-go=\"`endpointTrustedApps`\" pulumi-lang-python=\"`endpoint_trusted_apps`\" pulumi-lang-yaml=\"`endpointTrustedApps`\" pulumi-lang-java=\"`endpointTrustedApps`\"\u003e`endpoint_trusted_apps`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointEvents`\" pulumi-lang-dotnet=\"`EndpointEvents`\" pulumi-lang-go=\"`endpointEvents`\" pulumi-lang-python=\"`endpoint_events`\" pulumi-lang-yaml=\"`endpointEvents`\" pulumi-lang-java=\"`endpointEvents`\"\u003e`endpoint_events`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointHostIsolationExceptions`\" pulumi-lang-dotnet=\"`EndpointHostIsolationExceptions`\" pulumi-lang-go=\"`endpointHostIsolationExceptions`\" pulumi-lang-python=\"`endpoint_host_isolation_exceptions`\" pulumi-lang-yaml=\"`endpointHostIsolationExceptions`\" pulumi-lang-java=\"`endpointHostIsolationExceptions`\"\u003e`endpoint_host_isolation_exceptions`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointBlocklists`\" pulumi-lang-dotnet=\"`EndpointBlocklists`\" pulumi-lang-go=\"`endpointBlocklists`\" pulumi-lang-python=\"`endpoint_blocklists`\" pulumi-lang-yaml=\"`endpointBlocklists`\" pulumi-lang-java=\"`endpointBlocklists`\"\u003e`endpoint_blocklists`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The timestamp of when the exception list was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the exception list.\n"}},"type":"object","required":["createdAt","createdBy","description","immutable","listId","name","namespaceType","spaceId","tieBreakerId","type","updatedAt","updatedBy"],"inputProperties":{"description":{"type":"string","description":"Describes the exception list.\n"},"listId":{"type":"string","description":"The exception list's human readable string identifier.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the list container as JSON string.\n"},"name":{"type":"string","description":"The name of the exception list.\n"},"namespaceType":{"type":"string","description":"Determines whether the exception list is available in all Kibana spaces or just the space in which it is created. Can be \u003cspan pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\"\u003e`single`\u003c/span\u003e (default) or \u003cspan pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\"\u003e`agnostic`\u003c/span\u003e.\n"},"osTypes":{"type":"array","items":{"type":"string"},"description":"Array of OS types for which the exceptions apply. Valid values: \u003cspan pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\"\u003e`linux`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\"\u003e`macos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\"\u003e`windows`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize exception containers.\n"},"type":{"type":"string","description":"The type of exception list. Can be one of: \u003cspan pulumi-lang-nodejs=\"`detection`\" pulumi-lang-dotnet=\"`Detection`\" pulumi-lang-go=\"`detection`\" pulumi-lang-python=\"`detection`\" pulumi-lang-yaml=\"`detection`\" pulumi-lang-java=\"`detection`\"\u003e`detection`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointTrustedApps`\" pulumi-lang-dotnet=\"`EndpointTrustedApps`\" pulumi-lang-go=\"`endpointTrustedApps`\" pulumi-lang-python=\"`endpoint_trusted_apps`\" pulumi-lang-yaml=\"`endpointTrustedApps`\" pulumi-lang-java=\"`endpointTrustedApps`\"\u003e`endpoint_trusted_apps`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointEvents`\" pulumi-lang-dotnet=\"`EndpointEvents`\" pulumi-lang-go=\"`endpointEvents`\" pulumi-lang-python=\"`endpoint_events`\" pulumi-lang-yaml=\"`endpointEvents`\" pulumi-lang-java=\"`endpointEvents`\"\u003e`endpoint_events`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointHostIsolationExceptions`\" pulumi-lang-dotnet=\"`EndpointHostIsolationExceptions`\" pulumi-lang-go=\"`endpointHostIsolationExceptions`\" pulumi-lang-python=\"`endpoint_host_isolation_exceptions`\" pulumi-lang-yaml=\"`endpointHostIsolationExceptions`\" pulumi-lang-java=\"`endpointHostIsolationExceptions`\"\u003e`endpoint_host_isolation_exceptions`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointBlocklists`\" pulumi-lang-dotnet=\"`EndpointBlocklists`\" pulumi-lang-go=\"`endpointBlocklists`\" pulumi-lang-python=\"`endpoint_blocklists`\" pulumi-lang-yaml=\"`endpointBlocklists`\" pulumi-lang-java=\"`endpointBlocklists`\"\u003e`endpoint_blocklists`\u003c/span\u003e.\n"}},"requiredInputs":["description","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityExceptionList resources.\n","properties":{"createdAt":{"type":"string","description":"The timestamp of when the exception list was created.\n"},"createdBy":{"type":"string","description":"The user who created the exception list.\n"},"description":{"type":"string","description":"Describes the exception list.\n"},"immutable":{"type":"boolean","description":"Whether the exception list is immutable.\n"},"listId":{"type":"string","description":"The exception list's human readable string identifier.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the list container as JSON string.\n"},"name":{"type":"string","description":"The name of the exception list.\n"},"namespaceType":{"type":"string","description":"Determines whether the exception list is available in all Kibana spaces or just the space in which it is created. Can be \u003cspan pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\"\u003e`single`\u003c/span\u003e (default) or \u003cspan pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\"\u003e`agnostic`\u003c/span\u003e.\n"},"osTypes":{"type":"array","items":{"type":"string"},"description":"Array of OS types for which the exceptions apply. Valid values: \u003cspan pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\"\u003e`linux`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\"\u003e`macos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\"\u003e`windows`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"String array containing words and phrases to help categorize exception containers.\n"},"tieBreakerId":{"type":"string","description":"Field used in search to ensure all containers are sorted and returned correctly.\n"},"type":{"type":"string","description":"The type of exception list. Can be one of: \u003cspan pulumi-lang-nodejs=\"`detection`\" pulumi-lang-dotnet=\"`Detection`\" pulumi-lang-go=\"`detection`\" pulumi-lang-python=\"`detection`\" pulumi-lang-yaml=\"`detection`\" pulumi-lang-java=\"`detection`\"\u003e`detection`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\"\u003e`endpoint`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointTrustedApps`\" pulumi-lang-dotnet=\"`EndpointTrustedApps`\" pulumi-lang-go=\"`endpointTrustedApps`\" pulumi-lang-python=\"`endpoint_trusted_apps`\" pulumi-lang-yaml=\"`endpointTrustedApps`\" pulumi-lang-java=\"`endpointTrustedApps`\"\u003e`endpoint_trusted_apps`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointEvents`\" pulumi-lang-dotnet=\"`EndpointEvents`\" pulumi-lang-go=\"`endpointEvents`\" pulumi-lang-python=\"`endpoint_events`\" pulumi-lang-yaml=\"`endpointEvents`\" pulumi-lang-java=\"`endpointEvents`\"\u003e`endpoint_events`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointHostIsolationExceptions`\" pulumi-lang-dotnet=\"`EndpointHostIsolationExceptions`\" pulumi-lang-go=\"`endpointHostIsolationExceptions`\" pulumi-lang-python=\"`endpoint_host_isolation_exceptions`\" pulumi-lang-yaml=\"`endpointHostIsolationExceptions`\" pulumi-lang-java=\"`endpointHostIsolationExceptions`\"\u003e`endpoint_host_isolation_exceptions`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`endpointBlocklists`\" pulumi-lang-dotnet=\"`EndpointBlocklists`\" pulumi-lang-go=\"`endpointBlocklists`\" pulumi-lang-python=\"`endpoint_blocklists`\" pulumi-lang-yaml=\"`endpointBlocklists`\" pulumi-lang-java=\"`endpointBlocklists`\"\u003e`endpoint_blocklists`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The timestamp of when the exception list was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the exception list.\n"}},"type":"object"}},"elasticstack:index/kibanaSecurityList:KibanaSecurityList":{"description":"Manages Kibana security lists (also known as value lists). Security lists are used by exception items to define sets of values for matching or excluding in security rules.\n\nRelevant Kibana docs can be found [here](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-security-lists-api).\n\n## Notes\n\n- Security lists define the type of data they can contain via the \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e attribute\n- Once created, the \u003cspan pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\"\u003e`type`\u003c/span\u003e of a list cannot be changed\n- Lists can be referenced by exception items to create more sophisticated matching rules\n- The \u003cspan pulumi-lang-nodejs=\"`listId`\" pulumi-lang-dotnet=\"`ListId`\" pulumi-lang-go=\"`listId`\" pulumi-lang-python=\"`list_id`\" pulumi-lang-yaml=\"`listId`\" pulumi-lang-java=\"`listId`\"\u003e`list_id`\u003c/span\u003e is auto-generated if not provided\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst ipList = new elasticstack.KibanaSecurityList(\"ip_list\", {\n    spaceId: \"default\",\n    name: \"Trusted IP Addresses\",\n    description: \"List of trusted IP addresses for security rules\",\n    type: \"ip\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nip_list = elasticstack.KibanaSecurityList(\"ip_list\",\n    space_id=\"default\",\n    name=\"Trusted IP Addresses\",\n    description=\"List of trusted IP addresses for security rules\",\n    type=\"ip\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ipList = new Elasticstack.KibanaSecurityList(\"ip_list\", new()\n    {\n        SpaceId = \"default\",\n        Name = \"Trusted IP Addresses\",\n        Description = \"List of trusted IP addresses for security rules\",\n        Type = \"ip\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaSecurityList(ctx, \"ip_list\", \u0026elasticstack.KibanaSecurityListArgs{\n\t\t\tSpaceId:     pulumi.String(\"default\"),\n\t\t\tName:        pulumi.String(\"Trusted IP Addresses\"),\n\t\t\tDescription: pulumi.String(\"List of trusted IP addresses for security rules\"),\n\t\t\tType:        pulumi.String(\"ip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSecurityList;\nimport com.pulumi.elasticstack.KibanaSecurityListArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var ipList = new KibanaSecurityList(\"ipList\", KibanaSecurityListArgs.builder()\n            .spaceId(\"default\")\n            .name(\"Trusted IP Addresses\")\n            .description(\"List of trusted IP addresses for security rules\")\n            .type(\"ip\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  ipList:\n    type: elasticstack:KibanaSecurityList\n    name: ip_list\n    properties:\n      spaceId: default\n      name: Trusted IP Addresses\n      description: List of trusted IP addresses for security rules\n      type: ip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"createdAt":{"type":"string","description":"The timestamp of when the list was created.\n"},"createdBy":{"type":"string","description":"The user who created the list.\n"},"description":{"type":"string","description":"Describes the security list.\n"},"deserializer":{"type":"string","description":"Determines how retrieved list item values are presented. By default, list items are presented using Handlebars expressions based on the type.\n"},"immutable":{"type":"boolean","description":"Whether the list is immutable.\n"},"kibanaSecurityListId":{"type":"string","description":"The unique identifier of the security list (auto-generated by Kibana if not specified).\n"},"listId":{"type":"string","description":"The value list's human-readable identifier.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the value list as JSON string.\n"},"name":{"type":"string","description":"The name of the security list.\n"},"serializer":{"type":"string","description":"Determines how uploaded list item values are parsed. By default, list items are parsed using named regex groups based on the type.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tieBreakerId":{"type":"string","description":"Field used in search to ensure all containers are sorted and returned correctly.\n"},"type":{"type":"string","description":"Specifies the Elasticsearch data type of values the list contains. Valid values include: \u003cspan pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\"\u003e`binary`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`byte`\" pulumi-lang-dotnet=\"`Byte`\" pulumi-lang-go=\"`byte`\" pulumi-lang-python=\"`byte`\" pulumi-lang-yaml=\"`byte`\" pulumi-lang-java=\"`byte`\"\u003e`byte`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`date`\" pulumi-lang-dotnet=\"`Date`\" pulumi-lang-go=\"`date`\" pulumi-lang-python=\"`date`\" pulumi-lang-yaml=\"`date`\" pulumi-lang-java=\"`date`\"\u003e`date`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dateNanos`\" pulumi-lang-dotnet=\"`DateNanos`\" pulumi-lang-go=\"`dateNanos`\" pulumi-lang-python=\"`date_nanos`\" pulumi-lang-yaml=\"`dateNanos`\" pulumi-lang-java=\"`dateNanos`\"\u003e`date_nanos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dateRange`\" pulumi-lang-dotnet=\"`DateRange`\" pulumi-lang-go=\"`dateRange`\" pulumi-lang-python=\"`date_range`\" pulumi-lang-yaml=\"`dateRange`\" pulumi-lang-java=\"`dateRange`\"\u003e`date_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`double`\" pulumi-lang-dotnet=\"`Double`\" pulumi-lang-go=\"`double`\" pulumi-lang-python=\"`double`\" pulumi-lang-yaml=\"`double`\" pulumi-lang-java=\"`double`\"\u003e`double`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`doubleRange`\" pulumi-lang-dotnet=\"`DoubleRange`\" pulumi-lang-go=\"`doubleRange`\" pulumi-lang-python=\"`double_range`\" pulumi-lang-yaml=\"`doubleRange`\" pulumi-lang-java=\"`doubleRange`\"\u003e`double_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\"\u003e`float`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`floatRange`\" pulumi-lang-dotnet=\"`FloatRange`\" pulumi-lang-go=\"`floatRange`\" pulumi-lang-python=\"`float_range`\" pulumi-lang-yaml=\"`floatRange`\" pulumi-lang-java=\"`floatRange`\"\u003e`float_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geoPoint`\" pulumi-lang-dotnet=\"`GeoPoint`\" pulumi-lang-go=\"`geoPoint`\" pulumi-lang-python=\"`geo_point`\" pulumi-lang-yaml=\"`geoPoint`\" pulumi-lang-java=\"`geoPoint`\"\u003e`geo_point`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geoShape`\" pulumi-lang-dotnet=\"`GeoShape`\" pulumi-lang-go=\"`geoShape`\" pulumi-lang-python=\"`geo_shape`\" pulumi-lang-yaml=\"`geoShape`\" pulumi-lang-java=\"`geoShape`\"\u003e`geo_shape`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`halfFloat`\" pulumi-lang-dotnet=\"`HalfFloat`\" pulumi-lang-go=\"`halfFloat`\" pulumi-lang-python=\"`half_float`\" pulumi-lang-yaml=\"`halfFloat`\" pulumi-lang-java=\"`halfFloat`\"\u003e`half_float`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`integer`\" pulumi-lang-dotnet=\"`Integer`\" pulumi-lang-go=\"`integer`\" pulumi-lang-python=\"`integer`\" pulumi-lang-yaml=\"`integer`\" pulumi-lang-java=\"`integer`\"\u003e`integer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`integerRange`\" pulumi-lang-dotnet=\"`IntegerRange`\" pulumi-lang-go=\"`integerRange`\" pulumi-lang-python=\"`integer_range`\" pulumi-lang-yaml=\"`integerRange`\" pulumi-lang-java=\"`integerRange`\"\u003e`integer_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`keyword`\" pulumi-lang-dotnet=\"`Keyword`\" pulumi-lang-go=\"`keyword`\" pulumi-lang-python=\"`keyword`\" pulumi-lang-yaml=\"`keyword`\" pulumi-lang-java=\"`keyword`\"\u003e`keyword`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`long`\" pulumi-lang-dotnet=\"`Long`\" pulumi-lang-go=\"`long`\" pulumi-lang-python=\"`long`\" pulumi-lang-yaml=\"`long`\" pulumi-lang-java=\"`long`\"\u003e`long`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`longRange`\" pulumi-lang-dotnet=\"`LongRange`\" pulumi-lang-go=\"`longRange`\" pulumi-lang-python=\"`long_range`\" pulumi-lang-yaml=\"`longRange`\" pulumi-lang-java=\"`longRange`\"\u003e`long_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\"\u003e`shape`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`short`\" pulumi-lang-dotnet=\"`Short`\" pulumi-lang-go=\"`short`\" pulumi-lang-python=\"`short`\" pulumi-lang-yaml=\"`short`\" pulumi-lang-java=\"`short`\"\u003e`short`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\"\u003e`text`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The timestamp of when the list was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the list.\n"},"version":{"type":"number","description":"The document version number.\n"},"versionId":{"type":"string","description":"The version id, normally returned by the API when the document is retrieved. Use it to ensure updates are done against the latest version.\n"}},"type":"object","required":["createdAt","createdBy","description","deserializer","immutable","kibanaSecurityListId","listId","name","serializer","spaceId","tieBreakerId","type","updatedAt","updatedBy","version","versionId"],"inputProperties":{"description":{"type":"string","description":"Describes the security list.\n"},"deserializer":{"type":"string","description":"Determines how retrieved list item values are presented. By default, list items are presented using Handlebars expressions based on the type.\n"},"kibanaSecurityListId":{"type":"string","description":"The unique identifier of the security list (auto-generated by Kibana if not specified).\n"},"listId":{"type":"string","description":"The value list's human-readable identifier.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the value list as JSON string.\n"},"name":{"type":"string","description":"The name of the security list.\n"},"serializer":{"type":"string","description":"Determines how uploaded list item values are parsed. By default, list items are parsed using named regex groups based on the type.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"type":{"type":"string","description":"Specifies the Elasticsearch data type of values the list contains. Valid values include: \u003cspan pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\"\u003e`binary`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`byte`\" pulumi-lang-dotnet=\"`Byte`\" pulumi-lang-go=\"`byte`\" pulumi-lang-python=\"`byte`\" pulumi-lang-yaml=\"`byte`\" pulumi-lang-java=\"`byte`\"\u003e`byte`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`date`\" pulumi-lang-dotnet=\"`Date`\" pulumi-lang-go=\"`date`\" pulumi-lang-python=\"`date`\" pulumi-lang-yaml=\"`date`\" pulumi-lang-java=\"`date`\"\u003e`date`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dateNanos`\" pulumi-lang-dotnet=\"`DateNanos`\" pulumi-lang-go=\"`dateNanos`\" pulumi-lang-python=\"`date_nanos`\" pulumi-lang-yaml=\"`dateNanos`\" pulumi-lang-java=\"`dateNanos`\"\u003e`date_nanos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dateRange`\" pulumi-lang-dotnet=\"`DateRange`\" pulumi-lang-go=\"`dateRange`\" pulumi-lang-python=\"`date_range`\" pulumi-lang-yaml=\"`dateRange`\" pulumi-lang-java=\"`dateRange`\"\u003e`date_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`double`\" pulumi-lang-dotnet=\"`Double`\" pulumi-lang-go=\"`double`\" pulumi-lang-python=\"`double`\" pulumi-lang-yaml=\"`double`\" pulumi-lang-java=\"`double`\"\u003e`double`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`doubleRange`\" pulumi-lang-dotnet=\"`DoubleRange`\" pulumi-lang-go=\"`doubleRange`\" pulumi-lang-python=\"`double_range`\" pulumi-lang-yaml=\"`doubleRange`\" pulumi-lang-java=\"`doubleRange`\"\u003e`double_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\"\u003e`float`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`floatRange`\" pulumi-lang-dotnet=\"`FloatRange`\" pulumi-lang-go=\"`floatRange`\" pulumi-lang-python=\"`float_range`\" pulumi-lang-yaml=\"`floatRange`\" pulumi-lang-java=\"`floatRange`\"\u003e`float_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geoPoint`\" pulumi-lang-dotnet=\"`GeoPoint`\" pulumi-lang-go=\"`geoPoint`\" pulumi-lang-python=\"`geo_point`\" pulumi-lang-yaml=\"`geoPoint`\" pulumi-lang-java=\"`geoPoint`\"\u003e`geo_point`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geoShape`\" pulumi-lang-dotnet=\"`GeoShape`\" pulumi-lang-go=\"`geoShape`\" pulumi-lang-python=\"`geo_shape`\" pulumi-lang-yaml=\"`geoShape`\" pulumi-lang-java=\"`geoShape`\"\u003e`geo_shape`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`halfFloat`\" pulumi-lang-dotnet=\"`HalfFloat`\" pulumi-lang-go=\"`halfFloat`\" pulumi-lang-python=\"`half_float`\" pulumi-lang-yaml=\"`halfFloat`\" pulumi-lang-java=\"`halfFloat`\"\u003e`half_float`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`integer`\" pulumi-lang-dotnet=\"`Integer`\" pulumi-lang-go=\"`integer`\" pulumi-lang-python=\"`integer`\" pulumi-lang-yaml=\"`integer`\" pulumi-lang-java=\"`integer`\"\u003e`integer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`integerRange`\" pulumi-lang-dotnet=\"`IntegerRange`\" pulumi-lang-go=\"`integerRange`\" pulumi-lang-python=\"`integer_range`\" pulumi-lang-yaml=\"`integerRange`\" pulumi-lang-java=\"`integerRange`\"\u003e`integer_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`keyword`\" pulumi-lang-dotnet=\"`Keyword`\" pulumi-lang-go=\"`keyword`\" pulumi-lang-python=\"`keyword`\" pulumi-lang-yaml=\"`keyword`\" pulumi-lang-java=\"`keyword`\"\u003e`keyword`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`long`\" pulumi-lang-dotnet=\"`Long`\" pulumi-lang-go=\"`long`\" pulumi-lang-python=\"`long`\" pulumi-lang-yaml=\"`long`\" pulumi-lang-java=\"`long`\"\u003e`long`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`longRange`\" pulumi-lang-dotnet=\"`LongRange`\" pulumi-lang-go=\"`longRange`\" pulumi-lang-python=\"`long_range`\" pulumi-lang-yaml=\"`longRange`\" pulumi-lang-java=\"`longRange`\"\u003e`long_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\"\u003e`shape`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`short`\" pulumi-lang-dotnet=\"`Short`\" pulumi-lang-go=\"`short`\" pulumi-lang-python=\"`short`\" pulumi-lang-yaml=\"`short`\" pulumi-lang-java=\"`short`\"\u003e`short`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\"\u003e`text`\u003c/span\u003e.\n"},"version":{"type":"number","description":"The document version number.\n"}},"requiredInputs":["description","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityList resources.\n","properties":{"createdAt":{"type":"string","description":"The timestamp of when the list was created.\n"},"createdBy":{"type":"string","description":"The user who created the list.\n"},"description":{"type":"string","description":"Describes the security list.\n"},"deserializer":{"type":"string","description":"Determines how retrieved list item values are presented. By default, list items are presented using Handlebars expressions based on the type.\n"},"immutable":{"type":"boolean","description":"Whether the list is immutable.\n"},"kibanaSecurityListId":{"type":"string","description":"The unique identifier of the security list (auto-generated by Kibana if not specified).\n"},"listId":{"type":"string","description":"The value list's human-readable identifier.\n"},"meta":{"type":"string","description":"Placeholder for metadata about the value list as JSON string.\n"},"name":{"type":"string","description":"The name of the security list.\n"},"serializer":{"type":"string","description":"Determines how uploaded list item values are parsed. By default, list items are parsed using named regex groups based on the type.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tieBreakerId":{"type":"string","description":"Field used in search to ensure all containers are sorted and returned correctly.\n"},"type":{"type":"string","description":"Specifies the Elasticsearch data type of values the list contains. Valid values include: \u003cspan pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\"\u003e`binary`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`byte`\" pulumi-lang-dotnet=\"`Byte`\" pulumi-lang-go=\"`byte`\" pulumi-lang-python=\"`byte`\" pulumi-lang-yaml=\"`byte`\" pulumi-lang-java=\"`byte`\"\u003e`byte`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`date`\" pulumi-lang-dotnet=\"`Date`\" pulumi-lang-go=\"`date`\" pulumi-lang-python=\"`date`\" pulumi-lang-yaml=\"`date`\" pulumi-lang-java=\"`date`\"\u003e`date`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dateNanos`\" pulumi-lang-dotnet=\"`DateNanos`\" pulumi-lang-go=\"`dateNanos`\" pulumi-lang-python=\"`date_nanos`\" pulumi-lang-yaml=\"`dateNanos`\" pulumi-lang-java=\"`dateNanos`\"\u003e`date_nanos`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`dateRange`\" pulumi-lang-dotnet=\"`DateRange`\" pulumi-lang-go=\"`dateRange`\" pulumi-lang-python=\"`date_range`\" pulumi-lang-yaml=\"`dateRange`\" pulumi-lang-java=\"`dateRange`\"\u003e`date_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`double`\" pulumi-lang-dotnet=\"`Double`\" pulumi-lang-go=\"`double`\" pulumi-lang-python=\"`double`\" pulumi-lang-yaml=\"`double`\" pulumi-lang-java=\"`double`\"\u003e`double`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`doubleRange`\" pulumi-lang-dotnet=\"`DoubleRange`\" pulumi-lang-go=\"`doubleRange`\" pulumi-lang-python=\"`double_range`\" pulumi-lang-yaml=\"`doubleRange`\" pulumi-lang-java=\"`doubleRange`\"\u003e`double_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\"\u003e`float`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`floatRange`\" pulumi-lang-dotnet=\"`FloatRange`\" pulumi-lang-go=\"`floatRange`\" pulumi-lang-python=\"`float_range`\" pulumi-lang-yaml=\"`floatRange`\" pulumi-lang-java=\"`floatRange`\"\u003e`float_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geoPoint`\" pulumi-lang-dotnet=\"`GeoPoint`\" pulumi-lang-go=\"`geoPoint`\" pulumi-lang-python=\"`geo_point`\" pulumi-lang-yaml=\"`geoPoint`\" pulumi-lang-java=\"`geoPoint`\"\u003e`geo_point`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`geoShape`\" pulumi-lang-dotnet=\"`GeoShape`\" pulumi-lang-go=\"`geoShape`\" pulumi-lang-python=\"`geo_shape`\" pulumi-lang-yaml=\"`geoShape`\" pulumi-lang-java=\"`geoShape`\"\u003e`geo_shape`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`halfFloat`\" pulumi-lang-dotnet=\"`HalfFloat`\" pulumi-lang-go=\"`halfFloat`\" pulumi-lang-python=\"`half_float`\" pulumi-lang-yaml=\"`halfFloat`\" pulumi-lang-java=\"`halfFloat`\"\u003e`half_float`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`integer`\" pulumi-lang-dotnet=\"`Integer`\" pulumi-lang-go=\"`integer`\" pulumi-lang-python=\"`integer`\" pulumi-lang-yaml=\"`integer`\" pulumi-lang-java=\"`integer`\"\u003e`integer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`integerRange`\" pulumi-lang-dotnet=\"`IntegerRange`\" pulumi-lang-go=\"`integerRange`\" pulumi-lang-python=\"`integer_range`\" pulumi-lang-yaml=\"`integerRange`\" pulumi-lang-java=\"`integerRange`\"\u003e`integer_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ipRange`\" pulumi-lang-dotnet=\"`IpRange`\" pulumi-lang-go=\"`ipRange`\" pulumi-lang-python=\"`ip_range`\" pulumi-lang-yaml=\"`ipRange`\" pulumi-lang-java=\"`ipRange`\"\u003e`ip_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`keyword`\" pulumi-lang-dotnet=\"`Keyword`\" pulumi-lang-go=\"`keyword`\" pulumi-lang-python=\"`keyword`\" pulumi-lang-yaml=\"`keyword`\" pulumi-lang-java=\"`keyword`\"\u003e`keyword`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`long`\" pulumi-lang-dotnet=\"`Long`\" pulumi-lang-go=\"`long`\" pulumi-lang-python=\"`long`\" pulumi-lang-yaml=\"`long`\" pulumi-lang-java=\"`long`\"\u003e`long`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`longRange`\" pulumi-lang-dotnet=\"`LongRange`\" pulumi-lang-go=\"`longRange`\" pulumi-lang-python=\"`long_range`\" pulumi-lang-yaml=\"`longRange`\" pulumi-lang-java=\"`longRange`\"\u003e`long_range`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\"\u003e`shape`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`short`\" pulumi-lang-dotnet=\"`Short`\" pulumi-lang-go=\"`short`\" pulumi-lang-python=\"`short`\" pulumi-lang-yaml=\"`short`\" pulumi-lang-java=\"`short`\"\u003e`short`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\"\u003e`text`\u003c/span\u003e.\n"},"updatedAt":{"type":"string","description":"The timestamp of when the list was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the list.\n"},"version":{"type":"number","description":"The document version number.\n"},"versionId":{"type":"string","description":"The version id, normally returned by the API when the document is retrieved. Use it to ensure updates are done against the latest version.\n"}},"type":"object"}},"elasticstack:index/kibanaSecurityListDataStreams:KibanaSecurityListDataStreams":{"description":"Creates `.lists` and `.items` data streams in the relevant Kibana space. These data streams are required before you can start using security lists and exceptions that reference value lists.\n\nBefore you can start working with exceptions that use value lists, you must create the `.lists` and `.items` data streams for the relevant Kibana space. Once these data streams are created, your role needs privileges to manage rules.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Create list data streams in the default space\nconst _default = new elasticstack.KibanaSecurityListDataStreams(\"default\", {});\n// Create list data streams in a custom space\nconst custom = new elasticstack.KibanaSecurityListDataStreams(\"custom\", {spaceId: \"my-space\"});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Create list data streams in the default space\ndefault = elasticstack.KibanaSecurityListDataStreams(\"default\")\n# Create list data streams in a custom space\ncustom = elasticstack.KibanaSecurityListDataStreams(\"custom\", space_id=\"my-space\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // Create list data streams in the default space\n    var @default = new Elasticstack.KibanaSecurityListDataStreams(\"default\");\n\n    // Create list data streams in a custom space\n    var custom = new Elasticstack.KibanaSecurityListDataStreams(\"custom\", new()\n    {\n        SpaceId = \"my-space\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create list data streams in the default space\n\t\t_, err := elasticstack.NewKibanaSecurityListDataStreams(ctx, \"default\", nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create list data streams in a custom space\n\t\t_, err = elasticstack.NewKibanaSecurityListDataStreams(ctx, \"custom\", \u0026elasticstack.KibanaSecurityListDataStreamsArgs{\n\t\t\tSpaceId: pulumi.String(\"my-space\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSecurityListDataStreams;\nimport com.pulumi.elasticstack.KibanaSecurityListDataStreamsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // Create list data streams in the default space\n        var default_ = new KibanaSecurityListDataStreams(\"default\");\n\n        // Create list data streams in a custom space\n        var custom = new KibanaSecurityListDataStreams(\"custom\", KibanaSecurityListDataStreamsArgs.builder()\n            .spaceId(\"my-space\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create list data streams in the default space\n  default:\n    type: elasticstack:KibanaSecurityListDataStreams\n  # Create list data streams in a custom space\n  custom:\n    type: elasticstack:KibanaSecurityListDataStreams\n    properties:\n      spaceId: my-space\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"listIndex":{"type":"boolean","description":"Indicates whether the `.lists` data stream exists.\n"},"listItemIndex":{"type":"boolean","description":"Indicates whether the `.items` data stream exists.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"type":"object","required":["listIndex","listItemIndex","spaceId"],"inputProperties":{"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityListDataStreams resources.\n","properties":{"listIndex":{"type":"boolean","description":"Indicates whether the `.lists` data stream exists.\n"},"listItemIndex":{"type":"boolean","description":"Indicates whether the `.items` data stream exists.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"type":"object"}},"elasticstack:index/kibanaSecurityListItem:KibanaSecurityListItem":{"description":"Manages items within Kibana security value lists. Value lists are containers for values that can be used within exception lists to define conditions. This resource allows you to add, update, and remove individual values (items) in those lists.\n\nValue list items are used to store data values that match the type of their parent security list (e.g., IP addresses, keywords, etc.). These items can then be referenced in exception list entries to define exception conditions.\n\nKibana docs can be found [here](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-security-lists-api)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// First create a security list\nconst myList = new elasticstack.KibanaSecurityList(\"my_list\", {\n    listId: \"allowed_domains\",\n    name: \"Allowed Domains\",\n    description: \"List of allowed domains\",\n    type: \"keyword\",\n});\n// Add an item to the list\nconst domainExample = new elasticstack.KibanaSecurityListItem(\"domain_example\", {\n    listId: myList.listId,\n    value: \"example.com\",\n    meta: JSON.stringify({\n        category: \"internal\",\n        owner: \"infrastructure-team\",\n        note: \"Primary internal domain\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# First create a security list\nmy_list = elasticstack.KibanaSecurityList(\"my_list\",\n    list_id=\"allowed_domains\",\n    name=\"Allowed Domains\",\n    description=\"List of allowed domains\",\n    type=\"keyword\")\n# Add an item to the list\ndomain_example = elasticstack.KibanaSecurityListItem(\"domain_example\",\n    list_id=my_list.list_id,\n    value=\"example.com\",\n    meta=json.dumps({\n        \"category\": \"internal\",\n        \"owner\": \"infrastructure-team\",\n        \"note\": \"Primary internal domain\",\n    }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // First create a security list\n    var myList = new Elasticstack.KibanaSecurityList(\"my_list\", new()\n    {\n        ListId = \"allowed_domains\",\n        Name = \"Allowed Domains\",\n        Description = \"List of allowed domains\",\n        Type = \"keyword\",\n    });\n\n    // Add an item to the list\n    var domainExample = new Elasticstack.KibanaSecurityListItem(\"domain_example\", new()\n    {\n        ListId = myList.ListId,\n        Value = \"example.com\",\n        Meta = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"category\"] = \"internal\",\n            [\"owner\"] = \"infrastructure-team\",\n            [\"note\"] = \"Primary internal domain\",\n        }),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// First create a security list\n\t\tmyList, err := elasticstack.NewKibanaSecurityList(ctx, \"my_list\", \u0026elasticstack.KibanaSecurityListArgs{\n\t\t\tListId:      pulumi.String(\"allowed_domains\"),\n\t\t\tName:        pulumi.String(\"Allowed Domains\"),\n\t\t\tDescription: pulumi.String(\"List of allowed domains\"),\n\t\t\tType:        pulumi.String(\"keyword\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"category\": \"internal\",\n\t\t\t\"owner\":    \"infrastructure-team\",\n\t\t\t\"note\":     \"Primary internal domain\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// Add an item to the list\n\t\t_, err = elasticstack.NewKibanaSecurityListItem(ctx, \"domain_example\", \u0026elasticstack.KibanaSecurityListItemArgs{\n\t\t\tListId: myList.ListId,\n\t\t\tValue:  pulumi.String(\"example.com\"),\n\t\t\tMeta:   pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSecurityList;\nimport com.pulumi.elasticstack.KibanaSecurityListArgs;\nimport com.pulumi.elasticstack.KibanaSecurityListItem;\nimport com.pulumi.elasticstack.KibanaSecurityListItemArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // First create a security list\n        var myList = new KibanaSecurityList(\"myList\", KibanaSecurityListArgs.builder()\n            .listId(\"allowed_domains\")\n            .name(\"Allowed Domains\")\n            .description(\"List of allowed domains\")\n            .type(\"keyword\")\n            .build());\n\n        // Add an item to the list\n        var domainExample = new KibanaSecurityListItem(\"domainExample\", KibanaSecurityListItemArgs.builder()\n            .listId(myList.listId())\n            .value(\"example.com\")\n            .meta(serializeJson(\n                jsonObject(\n                    jsonProperty(\"category\", \"internal\"),\n                    jsonProperty(\"owner\", \"infrastructure-team\"),\n                    jsonProperty(\"note\", \"Primary internal domain\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # First create a security list\n  myList:\n    type: elasticstack:KibanaSecurityList\n    name: my_list\n    properties:\n      listId: allowed_domains\n      name: Allowed Domains\n      description: List of allowed domains\n      type: keyword\n  # Add an item to the list\n  domainExample:\n    type: elasticstack:KibanaSecurityListItem\n    name: domain_example\n    properties:\n      listId: ${myList.listId}\n      value: example.com\n      meta:\n        fn::toJSON:\n          category: internal\n          owner: infrastructure-team\n          note: Primary internal domain\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"createdAt":{"type":"string","description":"The timestamp of when the list item was created.\n"},"createdBy":{"type":"string","description":"The user who created the list item.\n"},"listId":{"type":"string","description":"The value list's identifier that this item belongs to.\n"},"listItemId":{"type":"string","description":"The value list item's identifier (auto-generated by Kibana if not specified).\n"},"meta":{"type":"string","description":"Placeholder for metadata about the value list item as JSON string.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"updatedAt":{"type":"string","description":"The timestamp of when the list item was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the list item.\n"},"value":{"type":"string","description":"The value used to evaluate exceptions. The value's data type must match the list's type.\n"},"versionId":{"type":"string","description":"The version id, normally returned by the API when the document is retrieved. Used to ensure updates are done against the latest version.\n"}},"type":"object","required":["createdAt","createdBy","listId","listItemId","spaceId","updatedAt","updatedBy","value","versionId"],"inputProperties":{"listId":{"type":"string","description":"The value list's identifier that this item belongs to.\n"},"listItemId":{"type":"string","description":"The value list item's identifier (auto-generated by Kibana if not specified).\n"},"meta":{"type":"string","description":"Placeholder for metadata about the value list item as JSON string.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"value":{"type":"string","description":"The value used to evaluate exceptions. The value's data type must match the list's type.\n"}},"requiredInputs":["listId","value"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityListItem resources.\n","properties":{"createdAt":{"type":"string","description":"The timestamp of when the list item was created.\n"},"createdBy":{"type":"string","description":"The user who created the list item.\n"},"listId":{"type":"string","description":"The value list's identifier that this item belongs to.\n"},"listItemId":{"type":"string","description":"The value list item's identifier (auto-generated by Kibana if not specified).\n"},"meta":{"type":"string","description":"Placeholder for metadata about the value list item as JSON string.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"updatedAt":{"type":"string","description":"The timestamp of when the list item was last updated.\n"},"updatedBy":{"type":"string","description":"The user who last updated the list item.\n"},"value":{"type":"string","description":"The value used to evaluate exceptions. The value's data type must match the list's type.\n"},"versionId":{"type":"string","description":"The version id, normally returned by the API when the document is retrieved. Used to ensure updates are done against the latest version.\n"}},"type":"object"}},"elasticstack:index/kibanaSecurityRole:KibanaSecurityRole":{"description":"Creates or updates a Kibana role. See the [role management API documentation](https://www.elastic.co/guide/en/kibana/master/role-management-api-put.html) for more details.\n\nFor Features, see the [features API documentation](https://www.elastic.co/guide/en/kibana/current/features-api-get.html).\n\nFor Security Privileges, see the [security privileges documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html).\n\n## Example Usage\n\n### Using base privileges\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.KibanaSecurityRole(\"example\", {\n    name: \"sample_role\",\n    elasticsearch: {\n        clusters: [\"create_snapshot\"],\n        indices: [{\n            fieldSecurity: {\n                grants: [\"test\"],\n                excepts: [],\n            },\n            names: [\"test\"],\n            privileges: [\n                \"create\",\n                \"read\",\n                \"write\",\n            ],\n        }],\n        remoteIndices: [{\n            fieldSecurity: {\n                grants: [\"test\"],\n                excepts: [],\n            },\n            names: [\"test\"],\n            clusters: [\"test-cluster\"],\n            privileges: [\n                \"create\",\n                \"read\",\n                \"write\",\n            ],\n        }],\n    },\n    kibanas: [{\n        bases: [\"all\"],\n        spaces: [\"default\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.KibanaSecurityRole(\"example\",\n    name=\"sample_role\",\n    elasticsearch={\n        \"clusters\": [\"create_snapshot\"],\n        \"indices\": [{\n            \"field_security\": {\n                \"grants\": [\"test\"],\n                \"excepts\": [],\n            },\n            \"names\": [\"test\"],\n            \"privileges\": [\n                \"create\",\n                \"read\",\n                \"write\",\n            ],\n        }],\n        \"remote_indices\": [{\n            \"field_security\": {\n                \"grants\": [\"test\"],\n                \"excepts\": [],\n            },\n            \"names\": [\"test\"],\n            \"clusters\": [\"test-cluster\"],\n            \"privileges\": [\n                \"create\",\n                \"read\",\n                \"write\",\n            ],\n        }],\n    },\n    kibanas=[{\n        \"bases\": [\"all\"],\n        \"spaces\": [\"default\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.KibanaSecurityRole(\"example\", new()\n    {\n        Name = \"sample_role\",\n        Elasticsearch = new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchArgs\n        {\n            Clusters = new[]\n            {\n                \"create_snapshot\",\n            },\n            Indices = new[]\n            {\n                new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchIndexArgs\n                {\n                    FieldSecurity = new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchIndexFieldSecurityArgs\n                    {\n                        Grants = new[]\n                        {\n                            \"test\",\n                        },\n                        Excepts = new() { },\n                    },\n                    Names = new[]\n                    {\n                        \"test\",\n                    },\n                    Privileges = new[]\n                    {\n                        \"create\",\n                        \"read\",\n                        \"write\",\n                    },\n                },\n            },\n            RemoteIndices = new[]\n            {\n                new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchRemoteIndexArgs\n                {\n                    FieldSecurity = new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurityArgs\n                    {\n                        Grants = new[]\n                        {\n                            \"test\",\n                        },\n                        Excepts = new() { },\n                    },\n                    Names = new[]\n                    {\n                        \"test\",\n                    },\n                    Clusters = new[]\n                    {\n                        \"test-cluster\",\n                    },\n                    Privileges = new[]\n                    {\n                        \"create\",\n                        \"read\",\n                        \"write\",\n                    },\n                },\n            },\n        },\n        Kibanas = new[]\n        {\n            new Elasticstack.Inputs.KibanaSecurityRoleKibanaArgs\n            {\n                Bases = new[]\n                {\n                    \"all\",\n                },\n                Spaces = new[]\n                {\n                    \"default\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaSecurityRole(ctx, \"example\", \u0026elasticstack.KibanaSecurityRoleArgs{\n\t\t\tName: pulumi.String(\"sample_role\"),\n\t\t\tElasticsearch: \u0026elasticstack.KibanaSecurityRoleElasticsearchArgs{\n\t\t\t\tClusters: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"create_snapshot\"),\n\t\t\t\t},\n\t\t\t\tIndices: elasticstack.KibanaSecurityRoleElasticsearchIndexArray{\n\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleElasticsearchIndexArgs{\n\t\t\t\t\t\tFieldSecurity: \u0026elasticstack.KibanaSecurityRoleElasticsearchIndexFieldSecurityArgs{\n\t\t\t\t\t\t\tGrants: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExcepts: pulumi.StringArray{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"create\"),\n\t\t\t\t\t\t\tpulumi.String(\"read\"),\n\t\t\t\t\t\t\tpulumi.String(\"write\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRemoteIndices: elasticstack.KibanaSecurityRoleElasticsearchRemoteIndexArray{\n\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleElasticsearchRemoteIndexArgs{\n\t\t\t\t\t\tFieldSecurity: \u0026elasticstack.KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurityArgs{\n\t\t\t\t\t\t\tGrants: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExcepts: pulumi.StringArray{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tClusters: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-cluster\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"create\"),\n\t\t\t\t\t\t\tpulumi.String(\"read\"),\n\t\t\t\t\t\t\tpulumi.String(\"write\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKibanas: elasticstack.KibanaSecurityRoleKibanaArray{\n\t\t\t\t\u0026elasticstack.KibanaSecurityRoleKibanaArgs{\n\t\t\t\t\tBases: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"all\"),\n\t\t\t\t\t},\n\t\t\t\t\tSpaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"default\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSecurityRole;\nimport com.pulumi.elasticstack.KibanaSecurityRoleArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSecurityRoleElasticsearchArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSecurityRoleKibanaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KibanaSecurityRole(\"example\", KibanaSecurityRoleArgs.builder()\n            .name(\"sample_role\")\n            .elasticsearch(KibanaSecurityRoleElasticsearchArgs.builder()\n                .clusters(\"create_snapshot\")\n                .indices(KibanaSecurityRoleElasticsearchIndexArgs.builder()\n                    .fieldSecurity(KibanaSecurityRoleElasticsearchIndexFieldSecurityArgs.builder()\n                        .grants(\"test\")\n                        .excepts()\n                        .build())\n                    .names(\"test\")\n                    .privileges(                    \n                        \"create\",\n                        \"read\",\n                        \"write\")\n                    .build())\n                .remoteIndices(KibanaSecurityRoleElasticsearchRemoteIndexArgs.builder()\n                    .fieldSecurity(KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurityArgs.builder()\n                        .grants(\"test\")\n                        .excepts()\n                        .build())\n                    .names(\"test\")\n                    .clusters(\"test-cluster\")\n                    .privileges(                    \n                        \"create\",\n                        \"read\",\n                        \"write\")\n                    .build())\n                .build())\n            .kibanas(KibanaSecurityRoleKibanaArgs.builder()\n                .bases(\"all\")\n                .spaces(\"default\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:KibanaSecurityRole\n    properties:\n      name: sample_role\n      elasticsearch:\n        clusters:\n          - create_snapshot\n        indices:\n          - fieldSecurity:\n              grants:\n                - test\n              excepts: []\n            names:\n              - test\n            privileges:\n              - create\n              - read\n              - write\n        remoteIndices:\n          - fieldSecurity:\n              grants:\n                - test\n              excepts: []\n            names:\n              - test\n            clusters:\n              - test-cluster\n            privileges:\n              - create\n              - read\n              - write\n      kibanas:\n        - bases:\n            - all\n          spaces:\n            - default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using feature privileges\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.KibanaSecurityRole(\"example\", {\n    name: \"sample_role\",\n    elasticsearch: {\n        clusters: [\"create_snapshot\"],\n        indices: [{\n            fieldSecurity: {\n                grants: [\"test\"],\n                excepts: [],\n            },\n            names: [\"test\"],\n            privileges: [\n                \"create\",\n                \"read\",\n                \"write\",\n            ],\n        }],\n        remoteIndices: [{\n            fieldSecurity: {\n                grants: [\"test\"],\n                excepts: [],\n            },\n            names: [\"test\"],\n            clusters: [\"test-cluster\"],\n            privileges: [\n                \"create\",\n                \"read\",\n                \"write\",\n            ],\n        }],\n    },\n    kibanas: [{\n        features: [\n            {\n                name: \"actions\",\n                privileges: [\"read\"],\n            },\n            {\n                name: \"discover\",\n                privileges: [\n                    \"minimal_read\",\n                    \"url_create\",\n                    \"store_search_session\",\n                ],\n            },\n            {\n                name: \"observabilityCases\",\n                privileges: [\n                    \"minimal_read\",\n                    \"cases_delete\",\n                ],\n            },\n            {\n                name: \"osquery\",\n                privileges: [\n                    \"minimal_read\",\n                    \"live_queries_all\",\n                    \"run_saved_queries\",\n                    \"saved_queries_read\",\n                    \"packs_all\",\n                ],\n            },\n            {\n                name: \"rulesSettings\",\n                privileges: [\n                    \"minimal_read\",\n                    \"readFlappingSettings\",\n                ],\n            },\n            {\n                name: \"securitySolutionCases\",\n                privileges: [\n                    \"minimal_read\",\n                    \"cases_delete\",\n                ],\n            },\n        ],\n        spaces: [\"default\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.KibanaSecurityRole(\"example\",\n    name=\"sample_role\",\n    elasticsearch={\n        \"clusters\": [\"create_snapshot\"],\n        \"indices\": [{\n            \"field_security\": {\n                \"grants\": [\"test\"],\n                \"excepts\": [],\n            },\n            \"names\": [\"test\"],\n            \"privileges\": [\n                \"create\",\n                \"read\",\n                \"write\",\n            ],\n        }],\n        \"remote_indices\": [{\n            \"field_security\": {\n                \"grants\": [\"test\"],\n                \"excepts\": [],\n            },\n            \"names\": [\"test\"],\n            \"clusters\": [\"test-cluster\"],\n            \"privileges\": [\n                \"create\",\n                \"read\",\n                \"write\",\n            ],\n        }],\n    },\n    kibanas=[{\n        \"features\": [\n            {\n                \"name\": \"actions\",\n                \"privileges\": [\"read\"],\n            },\n            {\n                \"name\": \"discover\",\n                \"privileges\": [\n                    \"minimal_read\",\n                    \"url_create\",\n                    \"store_search_session\",\n                ],\n            },\n            {\n                \"name\": \"observabilityCases\",\n                \"privileges\": [\n                    \"minimal_read\",\n                    \"cases_delete\",\n                ],\n            },\n            {\n                \"name\": \"osquery\",\n                \"privileges\": [\n                    \"minimal_read\",\n                    \"live_queries_all\",\n                    \"run_saved_queries\",\n                    \"saved_queries_read\",\n                    \"packs_all\",\n                ],\n            },\n            {\n                \"name\": \"rulesSettings\",\n                \"privileges\": [\n                    \"minimal_read\",\n                    \"readFlappingSettings\",\n                ],\n            },\n            {\n                \"name\": \"securitySolutionCases\",\n                \"privileges\": [\n                    \"minimal_read\",\n                    \"cases_delete\",\n                ],\n            },\n        ],\n        \"spaces\": [\"default\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.KibanaSecurityRole(\"example\", new()\n    {\n        Name = \"sample_role\",\n        Elasticsearch = new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchArgs\n        {\n            Clusters = new[]\n            {\n                \"create_snapshot\",\n            },\n            Indices = new[]\n            {\n                new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchIndexArgs\n                {\n                    FieldSecurity = new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchIndexFieldSecurityArgs\n                    {\n                        Grants = new[]\n                        {\n                            \"test\",\n                        },\n                        Excepts = new() { },\n                    },\n                    Names = new[]\n                    {\n                        \"test\",\n                    },\n                    Privileges = new[]\n                    {\n                        \"create\",\n                        \"read\",\n                        \"write\",\n                    },\n                },\n            },\n            RemoteIndices = new[]\n            {\n                new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchRemoteIndexArgs\n                {\n                    FieldSecurity = new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurityArgs\n                    {\n                        Grants = new[]\n                        {\n                            \"test\",\n                        },\n                        Excepts = new() { },\n                    },\n                    Names = new[]\n                    {\n                        \"test\",\n                    },\n                    Clusters = new[]\n                    {\n                        \"test-cluster\",\n                    },\n                    Privileges = new[]\n                    {\n                        \"create\",\n                        \"read\",\n                        \"write\",\n                    },\n                },\n            },\n        },\n        Kibanas = new[]\n        {\n            new Elasticstack.Inputs.KibanaSecurityRoleKibanaArgs\n            {\n                Features = new[]\n                {\n                    new Elasticstack.Inputs.KibanaSecurityRoleKibanaFeatureArgs\n                    {\n                        Name = \"actions\",\n                        Privileges = new[]\n                        {\n                            \"read\",\n                        },\n                    },\n                    new Elasticstack.Inputs.KibanaSecurityRoleKibanaFeatureArgs\n                    {\n                        Name = \"discover\",\n                        Privileges = new[]\n                        {\n                            \"minimal_read\",\n                            \"url_create\",\n                            \"store_search_session\",\n                        },\n                    },\n                    new Elasticstack.Inputs.KibanaSecurityRoleKibanaFeatureArgs\n                    {\n                        Name = \"observabilityCases\",\n                        Privileges = new[]\n                        {\n                            \"minimal_read\",\n                            \"cases_delete\",\n                        },\n                    },\n                    new Elasticstack.Inputs.KibanaSecurityRoleKibanaFeatureArgs\n                    {\n                        Name = \"osquery\",\n                        Privileges = new[]\n                        {\n                            \"minimal_read\",\n                            \"live_queries_all\",\n                            \"run_saved_queries\",\n                            \"saved_queries_read\",\n                            \"packs_all\",\n                        },\n                    },\n                    new Elasticstack.Inputs.KibanaSecurityRoleKibanaFeatureArgs\n                    {\n                        Name = \"rulesSettings\",\n                        Privileges = new[]\n                        {\n                            \"minimal_read\",\n                            \"readFlappingSettings\",\n                        },\n                    },\n                    new Elasticstack.Inputs.KibanaSecurityRoleKibanaFeatureArgs\n                    {\n                        Name = \"securitySolutionCases\",\n                        Privileges = new[]\n                        {\n                            \"minimal_read\",\n                            \"cases_delete\",\n                        },\n                    },\n                },\n                Spaces = new[]\n                {\n                    \"default\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaSecurityRole(ctx, \"example\", \u0026elasticstack.KibanaSecurityRoleArgs{\n\t\t\tName: pulumi.String(\"sample_role\"),\n\t\t\tElasticsearch: \u0026elasticstack.KibanaSecurityRoleElasticsearchArgs{\n\t\t\t\tClusters: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"create_snapshot\"),\n\t\t\t\t},\n\t\t\t\tIndices: elasticstack.KibanaSecurityRoleElasticsearchIndexArray{\n\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleElasticsearchIndexArgs{\n\t\t\t\t\t\tFieldSecurity: \u0026elasticstack.KibanaSecurityRoleElasticsearchIndexFieldSecurityArgs{\n\t\t\t\t\t\t\tGrants: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExcepts: pulumi.StringArray{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"create\"),\n\t\t\t\t\t\t\tpulumi.String(\"read\"),\n\t\t\t\t\t\t\tpulumi.String(\"write\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRemoteIndices: elasticstack.KibanaSecurityRoleElasticsearchRemoteIndexArray{\n\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleElasticsearchRemoteIndexArgs{\n\t\t\t\t\t\tFieldSecurity: \u0026elasticstack.KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurityArgs{\n\t\t\t\t\t\t\tGrants: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExcepts: pulumi.StringArray{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tClusters: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-cluster\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"create\"),\n\t\t\t\t\t\t\tpulumi.String(\"read\"),\n\t\t\t\t\t\t\tpulumi.String(\"write\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKibanas: elasticstack.KibanaSecurityRoleKibanaArray{\n\t\t\t\t\u0026elasticstack.KibanaSecurityRoleKibanaArgs{\n\t\t\t\t\tFeatures: elasticstack.KibanaSecurityRoleKibanaFeatureArray{\n\t\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleKibanaFeatureArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"actions\"),\n\t\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"read\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleKibanaFeatureArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"discover\"),\n\t\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"minimal_read\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"url_create\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"store_search_session\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleKibanaFeatureArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"observabilityCases\"),\n\t\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"minimal_read\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"cases_delete\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleKibanaFeatureArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"osquery\"),\n\t\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"minimal_read\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"live_queries_all\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"run_saved_queries\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"saved_queries_read\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"packs_all\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleKibanaFeatureArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"rulesSettings\"),\n\t\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"minimal_read\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"readFlappingSettings\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026elasticstack.KibanaSecurityRoleKibanaFeatureArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"securitySolutionCases\"),\n\t\t\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"minimal_read\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"cases_delete\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tSpaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"default\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSecurityRole;\nimport com.pulumi.elasticstack.KibanaSecurityRoleArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSecurityRoleElasticsearchArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSecurityRoleKibanaArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KibanaSecurityRole(\"example\", KibanaSecurityRoleArgs.builder()\n            .name(\"sample_role\")\n            .elasticsearch(KibanaSecurityRoleElasticsearchArgs.builder()\n                .clusters(\"create_snapshot\")\n                .indices(KibanaSecurityRoleElasticsearchIndexArgs.builder()\n                    .fieldSecurity(KibanaSecurityRoleElasticsearchIndexFieldSecurityArgs.builder()\n                        .grants(\"test\")\n                        .excepts()\n                        .build())\n                    .names(\"test\")\n                    .privileges(                    \n                        \"create\",\n                        \"read\",\n                        \"write\")\n                    .build())\n                .remoteIndices(KibanaSecurityRoleElasticsearchRemoteIndexArgs.builder()\n                    .fieldSecurity(KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurityArgs.builder()\n                        .grants(\"test\")\n                        .excepts()\n                        .build())\n                    .names(\"test\")\n                    .clusters(\"test-cluster\")\n                    .privileges(                    \n                        \"create\",\n                        \"read\",\n                        \"write\")\n                    .build())\n                .build())\n            .kibanas(KibanaSecurityRoleKibanaArgs.builder()\n                .features(                \n                    KibanaSecurityRoleKibanaFeatureArgs.builder()\n                        .name(\"actions\")\n                        .privileges(\"read\")\n                        .build(),\n                    KibanaSecurityRoleKibanaFeatureArgs.builder()\n                        .name(\"discover\")\n                        .privileges(                        \n                            \"minimal_read\",\n                            \"url_create\",\n                            \"store_search_session\")\n                        .build(),\n                    KibanaSecurityRoleKibanaFeatureArgs.builder()\n                        .name(\"observabilityCases\")\n                        .privileges(                        \n                            \"minimal_read\",\n                            \"cases_delete\")\n                        .build(),\n                    KibanaSecurityRoleKibanaFeatureArgs.builder()\n                        .name(\"osquery\")\n                        .privileges(                        \n                            \"minimal_read\",\n                            \"live_queries_all\",\n                            \"run_saved_queries\",\n                            \"saved_queries_read\",\n                            \"packs_all\")\n                        .build(),\n                    KibanaSecurityRoleKibanaFeatureArgs.builder()\n                        .name(\"rulesSettings\")\n                        .privileges(                        \n                            \"minimal_read\",\n                            \"readFlappingSettings\")\n                        .build(),\n                    KibanaSecurityRoleKibanaFeatureArgs.builder()\n                        .name(\"securitySolutionCases\")\n                        .privileges(                        \n                            \"minimal_read\",\n                            \"cases_delete\")\n                        .build())\n                .spaces(\"default\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:KibanaSecurityRole\n    properties:\n      name: sample_role\n      elasticsearch:\n        clusters:\n          - create_snapshot\n        indices:\n          - fieldSecurity:\n              grants:\n                - test\n              excepts: []\n            names:\n              - test\n            privileges:\n              - create\n              - read\n              - write\n        remoteIndices:\n          - fieldSecurity:\n              grants:\n                - test\n              excepts: []\n            names:\n              - test\n            clusters:\n              - test-cluster\n            privileges:\n              - create\n              - read\n              - write\n      kibanas:\n        - features:\n            - name: actions\n              privileges:\n                - read\n            - name: discover\n              privileges:\n                - minimal_read\n                - url_create\n                - store_search_session\n            - name: observabilityCases\n              privileges:\n                - minimal_read\n                - cases_delete\n            - name: osquery\n              privileges:\n                - minimal_read\n                - live_queries_all\n                - run_saved_queries\n                - saved_queries_read\n                - packs_all\n            - name: rulesSettings\n              privileges:\n                - minimal_read\n                - readFlappingSettings\n            - name: securitySolutionCases\n              privileges:\n                - minimal_read\n                - cases_delete\n          spaces:\n            - default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaSecurityRole:KibanaSecurityRole example_role \u003crole name\u003e\n```\n\n","properties":{"description":{"type":"string","description":"Optional description for the role\n"},"elasticsearch":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearch:KibanaSecurityRoleElasticsearch","description":"Elasticsearch cluster and index privileges.\n"},"kibanaSecurityRoleId":{"type":"string","description":"The ID of this resource.\n"},"kibanas":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibana:KibanaSecurityRoleKibana"},"description":"The list of objects that specify the Kibana privileges for the role.\n"},"metadata":{"type":"string","description":"Optional meta-data.\n"},"name":{"type":"string","description":"The name for the role.\n"}},"type":"object","required":["elasticsearch","kibanaSecurityRoleId","metadata","name"],"inputProperties":{"description":{"type":"string","description":"Optional description for the role\n"},"elasticsearch":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearch:KibanaSecurityRoleElasticsearch","description":"Elasticsearch cluster and index privileges.\n"},"kibanaSecurityRoleId":{"type":"string","description":"The ID of this resource.\n"},"kibanas":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibana:KibanaSecurityRoleKibana"},"description":"The list of objects that specify the Kibana privileges for the role.\n"},"metadata":{"type":"string","description":"Optional meta-data.\n"},"name":{"type":"string","description":"The name for the role.\n"}},"requiredInputs":["elasticsearch"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityRole resources.\n","properties":{"description":{"type":"string","description":"Optional description for the role\n"},"elasticsearch":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearch:KibanaSecurityRoleElasticsearch","description":"Elasticsearch cluster and index privileges.\n"},"kibanaSecurityRoleId":{"type":"string","description":"The ID of this resource.\n"},"kibanas":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibana:KibanaSecurityRoleKibana"},"description":"The list of objects that specify the Kibana privileges for the role.\n"},"metadata":{"type":"string","description":"Optional meta-data.\n"},"name":{"type":"string","description":"The name for the role.\n"}},"type":"object"}},"elasticstack:index/kibanaSlo:KibanaSlo":{"description":"Creates or updates a Kibana SLO.\n\nSee the Kibana [SLO docs](https://www.elastic.co/guide/en/observability/current/slo.html).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst authServerLatency = new elasticstack.KibanaSlo(\"auth_server_latency\", {\n    name: \"Auth server latency\",\n    description: \"Ensures auth server is responding in time\",\n    apmLatencyIndicators: [{\n        environment: \"production\",\n        service: \"auth\",\n        transactionType: \"request\",\n        transactionName: \"GET /auth\",\n        index: \"metrics-apm*\",\n        threshold: 500,\n    }],\n    timeWindows: [{\n        duration: \"7d\",\n        type: \"rolling\",\n    }],\n    budgetingMethod: \"timeslices\",\n    objectives: [{\n        target: 0.95,\n        timesliceTarget: 0.95,\n        timesliceWindow: \"5m\",\n    }],\n    settings: {\n        syncDelay: \"5m\",\n        frequency: \"5m\",\n    },\n});\nconst authServerAvailability = new elasticstack.KibanaSlo(\"auth_server_availability\", {\n    name: \"Auth server latency\",\n    description: \"Ensures auth server is responding in time\",\n    apmAvailabilityIndicators: [{\n        environment: \"production\",\n        service: \"my-service\",\n        transactionType: \"request\",\n        transactionName: \"GET /sup/dawg\",\n        index: \"metrics-apm*\",\n    }],\n    timeWindows: [{\n        duration: \"7d\",\n        type: \"rolling\",\n    }],\n    budgetingMethod: \"timeslices\",\n    objectives: [{\n        target: 0.95,\n        timesliceTarget: 0.95,\n        timesliceWindow: \"5m\",\n    }],\n    settings: {\n        syncDelay: \"5m\",\n        frequency: \"5m\",\n    },\n});\nconst customKql = new elasticstack.KibanaSlo(\"custom_kql\", {\n    name: \"custom kql\",\n    description: \"custom kql\",\n    kqlCustomIndicators: [{\n        index: \"my-index\",\n        good: \"latency \u003c 300\",\n        total: \"*\",\n        filter: \"labels.groupId: group-0\",\n        timestampField: \"custom_timestamp\",\n    }],\n    timeWindows: [{\n        duration: \"7d\",\n        type: \"rolling\",\n    }],\n    budgetingMethod: \"timeslices\",\n    objectives: [{\n        target: 0.95,\n        timesliceTarget: 0.95,\n        timesliceWindow: \"5m\",\n    }],\n    settings: {\n        syncDelay: \"5m\",\n        frequency: \"5m\",\n    },\n});\n//Available from 8.10.0\nconst customHistogram = new elasticstack.KibanaSlo(\"custom_histogram\", {\n    name: \"custom histogram\",\n    description: \"custom histogram\",\n    histogramCustomIndicators: [{\n        index: \"my-index\",\n        goods: [{\n            field: \"test\",\n            aggregation: \"value_count\",\n            filter: \"latency \u003c 300\",\n        }],\n        totals: [{\n            field: \"test\",\n            aggregation: \"value_count\",\n        }],\n        filter: \"labels.groupId: group-0\",\n        timestampField: \"custom_timestamp\",\n    }],\n    timeWindows: [{\n        duration: \"7d\",\n        type: \"rolling\",\n    }],\n    budgetingMethod: \"timeslices\",\n    objectives: [{\n        target: 0.95,\n        timesliceTarget: 0.95,\n        timesliceWindow: \"5m\",\n    }],\n    tags: [\n        \"tag-1\",\n        \"another_tag\",\n    ],\n});\n//Available from 8.10.0\nconst customMetric = new elasticstack.KibanaSlo(\"custom_metric\", {\n    name: \"custom kql\",\n    description: \"custom kql\",\n    metricCustomIndicators: [{\n        index: \"my-index\",\n        goods: [{\n            metrics: [{\n                name: \"A\",\n                aggregation: \"sum\",\n                field: \"processor.processed\",\n            }],\n            equation: \"A\",\n        }],\n        totals: [{\n            metrics: [{\n                name: \"A\",\n                aggregation: \"sum\",\n                field: \"processor.accepted\",\n            }],\n            equation: \"A\",\n        }],\n    }],\n    timeWindows: [{\n        duration: \"7d\",\n        type: \"rolling\",\n    }],\n    budgetingMethod: \"timeslices\",\n    objectives: [{\n        target: 0.95,\n        timesliceTarget: 0.95,\n        timesliceWindow: \"5m\",\n    }],\n});\n//Available from 8.12.0\nconst timesliceMetric = new elasticstack.KibanaSlo(\"timeslice_metric\", {\n    name: \"timeslice metric\",\n    description: \"timeslice metric\",\n    timesliceMetricIndicators: [{\n        index: \"my-index\",\n        timestampField: \"@timestamp\",\n        metrics: [{\n            metrics: [{\n                name: \"A\",\n                aggregation: \"sum\",\n                field: \"latency\",\n            }],\n            equation: \"A\",\n            comparator: \"GT\",\n            threshold: 100,\n        }],\n    }],\n    timeWindows: [{\n        duration: \"7d\",\n        type: \"rolling\",\n    }],\n    budgetingMethod: \"timeslices\",\n    objectives: [{\n        target: 0.95,\n        timesliceTarget: 0.95,\n        timesliceWindow: \"5m\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nauth_server_latency = elasticstack.KibanaSlo(\"auth_server_latency\",\n    name=\"Auth server latency\",\n    description=\"Ensures auth server is responding in time\",\n    apm_latency_indicators=[{\n        \"environment\": \"production\",\n        \"service\": \"auth\",\n        \"transaction_type\": \"request\",\n        \"transaction_name\": \"GET /auth\",\n        \"index\": \"metrics-apm*\",\n        \"threshold\": 500,\n    }],\n    time_windows=[{\n        \"duration\": \"7d\",\n        \"type\": \"rolling\",\n    }],\n    budgeting_method=\"timeslices\",\n    objectives=[{\n        \"target\": 0.95,\n        \"timeslice_target\": 0.95,\n        \"timeslice_window\": \"5m\",\n    }],\n    settings={\n        \"sync_delay\": \"5m\",\n        \"frequency\": \"5m\",\n    })\nauth_server_availability = elasticstack.KibanaSlo(\"auth_server_availability\",\n    name=\"Auth server latency\",\n    description=\"Ensures auth server is responding in time\",\n    apm_availability_indicators=[{\n        \"environment\": \"production\",\n        \"service\": \"my-service\",\n        \"transaction_type\": \"request\",\n        \"transaction_name\": \"GET /sup/dawg\",\n        \"index\": \"metrics-apm*\",\n    }],\n    time_windows=[{\n        \"duration\": \"7d\",\n        \"type\": \"rolling\",\n    }],\n    budgeting_method=\"timeslices\",\n    objectives=[{\n        \"target\": 0.95,\n        \"timeslice_target\": 0.95,\n        \"timeslice_window\": \"5m\",\n    }],\n    settings={\n        \"sync_delay\": \"5m\",\n        \"frequency\": \"5m\",\n    })\ncustom_kql = elasticstack.KibanaSlo(\"custom_kql\",\n    name=\"custom kql\",\n    description=\"custom kql\",\n    kql_custom_indicators=[{\n        \"index\": \"my-index\",\n        \"good\": \"latency \u003c 300\",\n        \"total\": \"*\",\n        \"filter\": \"labels.groupId: group-0\",\n        \"timestamp_field\": \"custom_timestamp\",\n    }],\n    time_windows=[{\n        \"duration\": \"7d\",\n        \"type\": \"rolling\",\n    }],\n    budgeting_method=\"timeslices\",\n    objectives=[{\n        \"target\": 0.95,\n        \"timeslice_target\": 0.95,\n        \"timeslice_window\": \"5m\",\n    }],\n    settings={\n        \"sync_delay\": \"5m\",\n        \"frequency\": \"5m\",\n    })\n#Available from 8.10.0\ncustom_histogram = elasticstack.KibanaSlo(\"custom_histogram\",\n    name=\"custom histogram\",\n    description=\"custom histogram\",\n    histogram_custom_indicators=[{\n        \"index\": \"my-index\",\n        \"goods\": [{\n            \"field\": \"test\",\n            \"aggregation\": \"value_count\",\n            \"filter\": \"latency \u003c 300\",\n        }],\n        \"totals\": [{\n            \"field\": \"test\",\n            \"aggregation\": \"value_count\",\n        }],\n        \"filter\": \"labels.groupId: group-0\",\n        \"timestamp_field\": \"custom_timestamp\",\n    }],\n    time_windows=[{\n        \"duration\": \"7d\",\n        \"type\": \"rolling\",\n    }],\n    budgeting_method=\"timeslices\",\n    objectives=[{\n        \"target\": 0.95,\n        \"timeslice_target\": 0.95,\n        \"timeslice_window\": \"5m\",\n    }],\n    tags=[\n        \"tag-1\",\n        \"another_tag\",\n    ])\n#Available from 8.10.0\ncustom_metric = elasticstack.KibanaSlo(\"custom_metric\",\n    name=\"custom kql\",\n    description=\"custom kql\",\n    metric_custom_indicators=[{\n        \"index\": \"my-index\",\n        \"goods\": [{\n            \"metrics\": [{\n                \"name\": \"A\",\n                \"aggregation\": \"sum\",\n                \"field\": \"processor.processed\",\n            }],\n            \"equation\": \"A\",\n        }],\n        \"totals\": [{\n            \"metrics\": [{\n                \"name\": \"A\",\n                \"aggregation\": \"sum\",\n                \"field\": \"processor.accepted\",\n            }],\n            \"equation\": \"A\",\n        }],\n    }],\n    time_windows=[{\n        \"duration\": \"7d\",\n        \"type\": \"rolling\",\n    }],\n    budgeting_method=\"timeslices\",\n    objectives=[{\n        \"target\": 0.95,\n        \"timeslice_target\": 0.95,\n        \"timeslice_window\": \"5m\",\n    }])\n#Available from 8.12.0\ntimeslice_metric = elasticstack.KibanaSlo(\"timeslice_metric\",\n    name=\"timeslice metric\",\n    description=\"timeslice metric\",\n    timeslice_metric_indicators=[{\n        \"index\": \"my-index\",\n        \"timestamp_field\": \"@timestamp\",\n        \"metrics\": [{\n            \"metrics\": [{\n                \"name\": \"A\",\n                \"aggregation\": \"sum\",\n                \"field\": \"latency\",\n            }],\n            \"equation\": \"A\",\n            \"comparator\": \"GT\",\n            \"threshold\": 100,\n        }],\n    }],\n    time_windows=[{\n        \"duration\": \"7d\",\n        \"type\": \"rolling\",\n    }],\n    budgeting_method=\"timeslices\",\n    objectives=[{\n        \"target\": 0.95,\n        \"timeslice_target\": 0.95,\n        \"timeslice_window\": \"5m\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var authServerLatency = new Elasticstack.KibanaSlo(\"auth_server_latency\", new()\n    {\n        Name = \"Auth server latency\",\n        Description = \"Ensures auth server is responding in time\",\n        ApmLatencyIndicators = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloApmLatencyIndicatorArgs\n            {\n                Environment = \"production\",\n                Service = \"auth\",\n                TransactionType = \"request\",\n                TransactionName = \"GET /auth\",\n                Index = \"metrics-apm*\",\n                Threshold = 500,\n            },\n        },\n        TimeWindows = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloTimeWindowArgs\n            {\n                Duration = \"7d\",\n                Type = \"rolling\",\n            },\n        },\n        BudgetingMethod = \"timeslices\",\n        Objectives = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloObjectiveArgs\n            {\n                Target = 0.95,\n                TimesliceTarget = 0.95,\n                TimesliceWindow = \"5m\",\n            },\n        },\n        Settings = new Elasticstack.Inputs.KibanaSloSettingsArgs\n        {\n            SyncDelay = \"5m\",\n            Frequency = \"5m\",\n        },\n    });\n\n    var authServerAvailability = new Elasticstack.KibanaSlo(\"auth_server_availability\", new()\n    {\n        Name = \"Auth server latency\",\n        Description = \"Ensures auth server is responding in time\",\n        ApmAvailabilityIndicators = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloApmAvailabilityIndicatorArgs\n            {\n                Environment = \"production\",\n                Service = \"my-service\",\n                TransactionType = \"request\",\n                TransactionName = \"GET /sup/dawg\",\n                Index = \"metrics-apm*\",\n            },\n        },\n        TimeWindows = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloTimeWindowArgs\n            {\n                Duration = \"7d\",\n                Type = \"rolling\",\n            },\n        },\n        BudgetingMethod = \"timeslices\",\n        Objectives = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloObjectiveArgs\n            {\n                Target = 0.95,\n                TimesliceTarget = 0.95,\n                TimesliceWindow = \"5m\",\n            },\n        },\n        Settings = new Elasticstack.Inputs.KibanaSloSettingsArgs\n        {\n            SyncDelay = \"5m\",\n            Frequency = \"5m\",\n        },\n    });\n\n    var customKql = new Elasticstack.KibanaSlo(\"custom_kql\", new()\n    {\n        Name = \"custom kql\",\n        Description = \"custom kql\",\n        KqlCustomIndicators = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloKqlCustomIndicatorArgs\n            {\n                Index = \"my-index\",\n                Good = \"latency \u003c 300\",\n                Total = \"*\",\n                Filter = \"labels.groupId: group-0\",\n                TimestampField = \"custom_timestamp\",\n            },\n        },\n        TimeWindows = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloTimeWindowArgs\n            {\n                Duration = \"7d\",\n                Type = \"rolling\",\n            },\n        },\n        BudgetingMethod = \"timeslices\",\n        Objectives = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloObjectiveArgs\n            {\n                Target = 0.95,\n                TimesliceTarget = 0.95,\n                TimesliceWindow = \"5m\",\n            },\n        },\n        Settings = new Elasticstack.Inputs.KibanaSloSettingsArgs\n        {\n            SyncDelay = \"5m\",\n            Frequency = \"5m\",\n        },\n    });\n\n    //Available from 8.10.0\n    var customHistogram = new Elasticstack.KibanaSlo(\"custom_histogram\", new()\n    {\n        Name = \"custom histogram\",\n        Description = \"custom histogram\",\n        HistogramCustomIndicators = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloHistogramCustomIndicatorArgs\n            {\n                Index = \"my-index\",\n                Goods = new[]\n                {\n                    new Elasticstack.Inputs.KibanaSloHistogramCustomIndicatorGoodArgs\n                    {\n                        Field = \"test\",\n                        Aggregation = \"value_count\",\n                        Filter = \"latency \u003c 300\",\n                    },\n                },\n                Totals = new[]\n                {\n                    new Elasticstack.Inputs.KibanaSloHistogramCustomIndicatorTotalArgs\n                    {\n                        Field = \"test\",\n                        Aggregation = \"value_count\",\n                    },\n                },\n                Filter = \"labels.groupId: group-0\",\n                TimestampField = \"custom_timestamp\",\n            },\n        },\n        TimeWindows = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloTimeWindowArgs\n            {\n                Duration = \"7d\",\n                Type = \"rolling\",\n            },\n        },\n        BudgetingMethod = \"timeslices\",\n        Objectives = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloObjectiveArgs\n            {\n                Target = 0.95,\n                TimesliceTarget = 0.95,\n                TimesliceWindow = \"5m\",\n            },\n        },\n        Tags = new[]\n        {\n            \"tag-1\",\n            \"another_tag\",\n        },\n    });\n\n    //Available from 8.10.0\n    var customMetric = new Elasticstack.KibanaSlo(\"custom_metric\", new()\n    {\n        Name = \"custom kql\",\n        Description = \"custom kql\",\n        MetricCustomIndicators = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloMetricCustomIndicatorArgs\n            {\n                Index = \"my-index\",\n                Goods = new[]\n                {\n                    new Elasticstack.Inputs.KibanaSloMetricCustomIndicatorGoodArgs\n                    {\n                        Metrics = new[]\n                        {\n                            new Elasticstack.Inputs.KibanaSloMetricCustomIndicatorGoodMetricArgs\n                            {\n                                Name = \"A\",\n                                Aggregation = \"sum\",\n                                Field = \"processor.processed\",\n                            },\n                        },\n                        Equation = \"A\",\n                    },\n                },\n                Totals = new[]\n                {\n                    new Elasticstack.Inputs.KibanaSloMetricCustomIndicatorTotalArgs\n                    {\n                        Metrics = new[]\n                        {\n                            new Elasticstack.Inputs.KibanaSloMetricCustomIndicatorTotalMetricArgs\n                            {\n                                Name = \"A\",\n                                Aggregation = \"sum\",\n                                Field = \"processor.accepted\",\n                            },\n                        },\n                        Equation = \"A\",\n                    },\n                },\n            },\n        },\n        TimeWindows = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloTimeWindowArgs\n            {\n                Duration = \"7d\",\n                Type = \"rolling\",\n            },\n        },\n        BudgetingMethod = \"timeslices\",\n        Objectives = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloObjectiveArgs\n            {\n                Target = 0.95,\n                TimesliceTarget = 0.95,\n                TimesliceWindow = \"5m\",\n            },\n        },\n    });\n\n    //Available from 8.12.0\n    var timesliceMetric = new Elasticstack.KibanaSlo(\"timeslice_metric\", new()\n    {\n        Name = \"timeslice metric\",\n        Description = \"timeslice metric\",\n        TimesliceMetricIndicators = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloTimesliceMetricIndicatorArgs\n            {\n                Index = \"my-index\",\n                TimestampField = \"@timestamp\",\n                Metrics = new[]\n                {\n                    new Elasticstack.Inputs.KibanaSloTimesliceMetricIndicatorMetricArgs\n                    {\n                        Metrics = new[]\n                        {\n                            new Elasticstack.Inputs.KibanaSloTimesliceMetricIndicatorMetricMetricArgs\n                            {\n                                Name = \"A\",\n                                Aggregation = \"sum\",\n                                Field = \"latency\",\n                            },\n                        },\n                        Equation = \"A\",\n                        Comparator = \"GT\",\n                        Threshold = 100,\n                    },\n                },\n            },\n        },\n        TimeWindows = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloTimeWindowArgs\n            {\n                Duration = \"7d\",\n                Type = \"rolling\",\n            },\n        },\n        BudgetingMethod = \"timeslices\",\n        Objectives = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloObjectiveArgs\n            {\n                Target = 0.95,\n                TimesliceTarget = 0.95,\n                TimesliceWindow = \"5m\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaSlo(ctx, \"auth_server_latency\", \u0026elasticstack.KibanaSloArgs{\n\t\t\tName:        pulumi.String(\"Auth server latency\"),\n\t\t\tDescription: pulumi.String(\"Ensures auth server is responding in time\"),\n\t\t\tApmLatencyIndicators: elasticstack.KibanaSloApmLatencyIndicatorArray{\n\t\t\t\t\u0026elasticstack.KibanaSloApmLatencyIndicatorArgs{\n\t\t\t\t\tEnvironment:     pulumi.String(\"production\"),\n\t\t\t\t\tService:         pulumi.String(\"auth\"),\n\t\t\t\t\tTransactionType: pulumi.String(\"request\"),\n\t\t\t\t\tTransactionName: pulumi.String(\"GET /auth\"),\n\t\t\t\t\tIndex:           pulumi.String(\"metrics-apm*\"),\n\t\t\t\t\tThreshold:       pulumi.Float64(500),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeWindows: elasticstack.KibanaSloTimeWindowArray{\n\t\t\t\t\u0026elasticstack.KibanaSloTimeWindowArgs{\n\t\t\t\t\tDuration: pulumi.String(\"7d\"),\n\t\t\t\t\tType:     pulumi.String(\"rolling\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBudgetingMethod: pulumi.String(\"timeslices\"),\n\t\t\tObjectives: elasticstack.KibanaSloObjectiveArray{\n\t\t\t\t\u0026elasticstack.KibanaSloObjectiveArgs{\n\t\t\t\t\tTarget:          pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceTarget: pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceWindow: pulumi.String(\"5m\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSettings: \u0026elasticstack.KibanaSloSettingsArgs{\n\t\t\t\tSyncDelay: pulumi.String(\"5m\"),\n\t\t\t\tFrequency: pulumi.String(\"5m\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewKibanaSlo(ctx, \"auth_server_availability\", \u0026elasticstack.KibanaSloArgs{\n\t\t\tName:        pulumi.String(\"Auth server latency\"),\n\t\t\tDescription: pulumi.String(\"Ensures auth server is responding in time\"),\n\t\t\tApmAvailabilityIndicators: elasticstack.KibanaSloApmAvailabilityIndicatorArray{\n\t\t\t\t\u0026elasticstack.KibanaSloApmAvailabilityIndicatorArgs{\n\t\t\t\t\tEnvironment:     pulumi.String(\"production\"),\n\t\t\t\t\tService:         pulumi.String(\"my-service\"),\n\t\t\t\t\tTransactionType: pulumi.String(\"request\"),\n\t\t\t\t\tTransactionName: pulumi.String(\"GET /sup/dawg\"),\n\t\t\t\t\tIndex:           pulumi.String(\"metrics-apm*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeWindows: elasticstack.KibanaSloTimeWindowArray{\n\t\t\t\t\u0026elasticstack.KibanaSloTimeWindowArgs{\n\t\t\t\t\tDuration: pulumi.String(\"7d\"),\n\t\t\t\t\tType:     pulumi.String(\"rolling\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBudgetingMethod: pulumi.String(\"timeslices\"),\n\t\t\tObjectives: elasticstack.KibanaSloObjectiveArray{\n\t\t\t\t\u0026elasticstack.KibanaSloObjectiveArgs{\n\t\t\t\t\tTarget:          pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceTarget: pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceWindow: pulumi.String(\"5m\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSettings: \u0026elasticstack.KibanaSloSettingsArgs{\n\t\t\t\tSyncDelay: pulumi.String(\"5m\"),\n\t\t\t\tFrequency: pulumi.String(\"5m\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewKibanaSlo(ctx, \"custom_kql\", \u0026elasticstack.KibanaSloArgs{\n\t\t\tName:        pulumi.String(\"custom kql\"),\n\t\t\tDescription: pulumi.String(\"custom kql\"),\n\t\t\tKqlCustomIndicators: elasticstack.KibanaSloKqlCustomIndicatorArray{\n\t\t\t\t\u0026elasticstack.KibanaSloKqlCustomIndicatorArgs{\n\t\t\t\t\tIndex:          pulumi.String(\"my-index\"),\n\t\t\t\t\tGood:           pulumi.String(\"latency \u003c 300\"),\n\t\t\t\t\tTotal:          pulumi.String(\"*\"),\n\t\t\t\t\tFilter:         pulumi.String(\"labels.groupId: group-0\"),\n\t\t\t\t\tTimestampField: pulumi.String(\"custom_timestamp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeWindows: elasticstack.KibanaSloTimeWindowArray{\n\t\t\t\t\u0026elasticstack.KibanaSloTimeWindowArgs{\n\t\t\t\t\tDuration: pulumi.String(\"7d\"),\n\t\t\t\t\tType:     pulumi.String(\"rolling\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBudgetingMethod: pulumi.String(\"timeslices\"),\n\t\t\tObjectives: elasticstack.KibanaSloObjectiveArray{\n\t\t\t\t\u0026elasticstack.KibanaSloObjectiveArgs{\n\t\t\t\t\tTarget:          pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceTarget: pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceWindow: pulumi.String(\"5m\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSettings: \u0026elasticstack.KibanaSloSettingsArgs{\n\t\t\t\tSyncDelay: pulumi.String(\"5m\"),\n\t\t\t\tFrequency: pulumi.String(\"5m\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Available from 8.10.0\n\t\t_, err = elasticstack.NewKibanaSlo(ctx, \"custom_histogram\", \u0026elasticstack.KibanaSloArgs{\n\t\t\tName:        pulumi.String(\"custom histogram\"),\n\t\t\tDescription: pulumi.String(\"custom histogram\"),\n\t\t\tHistogramCustomIndicators: elasticstack.KibanaSloHistogramCustomIndicatorArray{\n\t\t\t\t\u0026elasticstack.KibanaSloHistogramCustomIndicatorArgs{\n\t\t\t\t\tIndex: pulumi.String(\"my-index\"),\n\t\t\t\t\tGoods: elasticstack.KibanaSloHistogramCustomIndicatorGoodArray{\n\t\t\t\t\t\t\u0026elasticstack.KibanaSloHistogramCustomIndicatorGoodArgs{\n\t\t\t\t\t\t\tField:       pulumi.String(\"test\"),\n\t\t\t\t\t\t\tAggregation: pulumi.String(\"value_count\"),\n\t\t\t\t\t\t\tFilter:      pulumi.String(\"latency \u003c 300\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTotals: elasticstack.KibanaSloHistogramCustomIndicatorTotalArray{\n\t\t\t\t\t\t\u0026elasticstack.KibanaSloHistogramCustomIndicatorTotalArgs{\n\t\t\t\t\t\t\tField:       pulumi.String(\"test\"),\n\t\t\t\t\t\t\tAggregation: pulumi.String(\"value_count\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tFilter:         pulumi.String(\"labels.groupId: group-0\"),\n\t\t\t\t\tTimestampField: pulumi.String(\"custom_timestamp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeWindows: elasticstack.KibanaSloTimeWindowArray{\n\t\t\t\t\u0026elasticstack.KibanaSloTimeWindowArgs{\n\t\t\t\t\tDuration: pulumi.String(\"7d\"),\n\t\t\t\t\tType:     pulumi.String(\"rolling\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBudgetingMethod: pulumi.String(\"timeslices\"),\n\t\t\tObjectives: elasticstack.KibanaSloObjectiveArray{\n\t\t\t\t\u0026elasticstack.KibanaSloObjectiveArgs{\n\t\t\t\t\tTarget:          pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceTarget: pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceWindow: pulumi.String(\"5m\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag-1\"),\n\t\t\t\tpulumi.String(\"another_tag\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Available from 8.10.0\n\t\t_, err = elasticstack.NewKibanaSlo(ctx, \"custom_metric\", \u0026elasticstack.KibanaSloArgs{\n\t\t\tName:        pulumi.String(\"custom kql\"),\n\t\t\tDescription: pulumi.String(\"custom kql\"),\n\t\t\tMetricCustomIndicators: elasticstack.KibanaSloMetricCustomIndicatorArray{\n\t\t\t\t\u0026elasticstack.KibanaSloMetricCustomIndicatorArgs{\n\t\t\t\t\tIndex: pulumi.String(\"my-index\"),\n\t\t\t\t\tGoods: elasticstack.KibanaSloMetricCustomIndicatorGoodArray{\n\t\t\t\t\t\t\u0026elasticstack.KibanaSloMetricCustomIndicatorGoodArgs{\n\t\t\t\t\t\t\tMetrics: elasticstack.KibanaSloMetricCustomIndicatorGoodMetricArray{\n\t\t\t\t\t\t\t\t\u0026elasticstack.KibanaSloMetricCustomIndicatorGoodMetricArgs{\n\t\t\t\t\t\t\t\t\tName:        pulumi.String(\"A\"),\n\t\t\t\t\t\t\t\t\tAggregation: pulumi.String(\"sum\"),\n\t\t\t\t\t\t\t\t\tField:       pulumi.String(\"processor.processed\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tEquation: pulumi.String(\"A\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTotals: elasticstack.KibanaSloMetricCustomIndicatorTotalArray{\n\t\t\t\t\t\t\u0026elasticstack.KibanaSloMetricCustomIndicatorTotalArgs{\n\t\t\t\t\t\t\tMetrics: elasticstack.KibanaSloMetricCustomIndicatorTotalMetricArray{\n\t\t\t\t\t\t\t\t\u0026elasticstack.KibanaSloMetricCustomIndicatorTotalMetricArgs{\n\t\t\t\t\t\t\t\t\tName:        pulumi.String(\"A\"),\n\t\t\t\t\t\t\t\t\tAggregation: pulumi.String(\"sum\"),\n\t\t\t\t\t\t\t\t\tField:       pulumi.String(\"processor.accepted\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tEquation: pulumi.String(\"A\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeWindows: elasticstack.KibanaSloTimeWindowArray{\n\t\t\t\t\u0026elasticstack.KibanaSloTimeWindowArgs{\n\t\t\t\t\tDuration: pulumi.String(\"7d\"),\n\t\t\t\t\tType:     pulumi.String(\"rolling\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBudgetingMethod: pulumi.String(\"timeslices\"),\n\t\t\tObjectives: elasticstack.KibanaSloObjectiveArray{\n\t\t\t\t\u0026elasticstack.KibanaSloObjectiveArgs{\n\t\t\t\t\tTarget:          pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceTarget: pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceWindow: pulumi.String(\"5m\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Available from 8.12.0\n\t\t_, err = elasticstack.NewKibanaSlo(ctx, \"timeslice_metric\", \u0026elasticstack.KibanaSloArgs{\n\t\t\tName:        pulumi.String(\"timeslice metric\"),\n\t\t\tDescription: pulumi.String(\"timeslice metric\"),\n\t\t\tTimesliceMetricIndicators: elasticstack.KibanaSloTimesliceMetricIndicatorArray{\n\t\t\t\t\u0026elasticstack.KibanaSloTimesliceMetricIndicatorArgs{\n\t\t\t\t\tIndex:          pulumi.String(\"my-index\"),\n\t\t\t\t\tTimestampField: pulumi.String(\"@timestamp\"),\n\t\t\t\t\tMetrics: elasticstack.KibanaSloTimesliceMetricIndicatorMetricArray{\n\t\t\t\t\t\t\u0026elasticstack.KibanaSloTimesliceMetricIndicatorMetricArgs{\n\t\t\t\t\t\t\tMetrics: elasticstack.KibanaSloTimesliceMetricIndicatorMetricMetricArray{\n\t\t\t\t\t\t\t\t\u0026elasticstack.KibanaSloTimesliceMetricIndicatorMetricMetricArgs{\n\t\t\t\t\t\t\t\t\tName:        pulumi.String(\"A\"),\n\t\t\t\t\t\t\t\t\tAggregation: pulumi.String(\"sum\"),\n\t\t\t\t\t\t\t\t\tField:       pulumi.String(\"latency\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tEquation:   pulumi.String(\"A\"),\n\t\t\t\t\t\t\tComparator: pulumi.String(\"GT\"),\n\t\t\t\t\t\t\tThreshold:  pulumi.Float64(100),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeWindows: elasticstack.KibanaSloTimeWindowArray{\n\t\t\t\t\u0026elasticstack.KibanaSloTimeWindowArgs{\n\t\t\t\t\tDuration: pulumi.String(\"7d\"),\n\t\t\t\t\tType:     pulumi.String(\"rolling\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBudgetingMethod: pulumi.String(\"timeslices\"),\n\t\t\tObjectives: elasticstack.KibanaSloObjectiveArray{\n\t\t\t\t\u0026elasticstack.KibanaSloObjectiveArgs{\n\t\t\t\t\tTarget:          pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceTarget: pulumi.Float64(0.95),\n\t\t\t\t\tTimesliceWindow: pulumi.String(\"5m\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSlo;\nimport com.pulumi.elasticstack.KibanaSloArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloApmLatencyIndicatorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloTimeWindowArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloObjectiveArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloSettingsArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloApmAvailabilityIndicatorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloKqlCustomIndicatorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloHistogramCustomIndicatorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloMetricCustomIndicatorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloTimesliceMetricIndicatorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var authServerLatency = new KibanaSlo(\"authServerLatency\", KibanaSloArgs.builder()\n            .name(\"Auth server latency\")\n            .description(\"Ensures auth server is responding in time\")\n            .apmLatencyIndicators(KibanaSloApmLatencyIndicatorArgs.builder()\n                .environment(\"production\")\n                .service(\"auth\")\n                .transactionType(\"request\")\n                .transactionName(\"GET /auth\")\n                .index(\"metrics-apm*\")\n                .threshold(500.0)\n                .build())\n            .timeWindows(KibanaSloTimeWindowArgs.builder()\n                .duration(\"7d\")\n                .type(\"rolling\")\n                .build())\n            .budgetingMethod(\"timeslices\")\n            .objectives(KibanaSloObjectiveArgs.builder()\n                .target(0.95)\n                .timesliceTarget(0.95)\n                .timesliceWindow(\"5m\")\n                .build())\n            .settings(KibanaSloSettingsArgs.builder()\n                .syncDelay(\"5m\")\n                .frequency(\"5m\")\n                .build())\n            .build());\n\n        var authServerAvailability = new KibanaSlo(\"authServerAvailability\", KibanaSloArgs.builder()\n            .name(\"Auth server latency\")\n            .description(\"Ensures auth server is responding in time\")\n            .apmAvailabilityIndicators(KibanaSloApmAvailabilityIndicatorArgs.builder()\n                .environment(\"production\")\n                .service(\"my-service\")\n                .transactionType(\"request\")\n                .transactionName(\"GET /sup/dawg\")\n                .index(\"metrics-apm*\")\n                .build())\n            .timeWindows(KibanaSloTimeWindowArgs.builder()\n                .duration(\"7d\")\n                .type(\"rolling\")\n                .build())\n            .budgetingMethod(\"timeslices\")\n            .objectives(KibanaSloObjectiveArgs.builder()\n                .target(0.95)\n                .timesliceTarget(0.95)\n                .timesliceWindow(\"5m\")\n                .build())\n            .settings(KibanaSloSettingsArgs.builder()\n                .syncDelay(\"5m\")\n                .frequency(\"5m\")\n                .build())\n            .build());\n\n        var customKql = new KibanaSlo(\"customKql\", KibanaSloArgs.builder()\n            .name(\"custom kql\")\n            .description(\"custom kql\")\n            .kqlCustomIndicators(KibanaSloKqlCustomIndicatorArgs.builder()\n                .index(\"my-index\")\n                .good(\"latency \u003c 300\")\n                .total(\"*\")\n                .filter(\"labels.groupId: group-0\")\n                .timestampField(\"custom_timestamp\")\n                .build())\n            .timeWindows(KibanaSloTimeWindowArgs.builder()\n                .duration(\"7d\")\n                .type(\"rolling\")\n                .build())\n            .budgetingMethod(\"timeslices\")\n            .objectives(KibanaSloObjectiveArgs.builder()\n                .target(0.95)\n                .timesliceTarget(0.95)\n                .timesliceWindow(\"5m\")\n                .build())\n            .settings(KibanaSloSettingsArgs.builder()\n                .syncDelay(\"5m\")\n                .frequency(\"5m\")\n                .build())\n            .build());\n\n        //Available from 8.10.0\n        var customHistogram = new KibanaSlo(\"customHistogram\", KibanaSloArgs.builder()\n            .name(\"custom histogram\")\n            .description(\"custom histogram\")\n            .histogramCustomIndicators(KibanaSloHistogramCustomIndicatorArgs.builder()\n                .index(\"my-index\")\n                .goods(KibanaSloHistogramCustomIndicatorGoodArgs.builder()\n                    .field(\"test\")\n                    .aggregation(\"value_count\")\n                    .filter(\"latency \u003c 300\")\n                    .build())\n                .totals(KibanaSloHistogramCustomIndicatorTotalArgs.builder()\n                    .field(\"test\")\n                    .aggregation(\"value_count\")\n                    .build())\n                .filter(\"labels.groupId: group-0\")\n                .timestampField(\"custom_timestamp\")\n                .build())\n            .timeWindows(KibanaSloTimeWindowArgs.builder()\n                .duration(\"7d\")\n                .type(\"rolling\")\n                .build())\n            .budgetingMethod(\"timeslices\")\n            .objectives(KibanaSloObjectiveArgs.builder()\n                .target(0.95)\n                .timesliceTarget(0.95)\n                .timesliceWindow(\"5m\")\n                .build())\n            .tags(            \n                \"tag-1\",\n                \"another_tag\")\n            .build());\n\n        //Available from 8.10.0\n        var customMetric = new KibanaSlo(\"customMetric\", KibanaSloArgs.builder()\n            .name(\"custom kql\")\n            .description(\"custom kql\")\n            .metricCustomIndicators(KibanaSloMetricCustomIndicatorArgs.builder()\n                .index(\"my-index\")\n                .goods(KibanaSloMetricCustomIndicatorGoodArgs.builder()\n                    .metrics(KibanaSloMetricCustomIndicatorGoodMetricArgs.builder()\n                        .name(\"A\")\n                        .aggregation(\"sum\")\n                        .field(\"processor.processed\")\n                        .build())\n                    .equation(\"A\")\n                    .build())\n                .totals(KibanaSloMetricCustomIndicatorTotalArgs.builder()\n                    .metrics(KibanaSloMetricCustomIndicatorTotalMetricArgs.builder()\n                        .name(\"A\")\n                        .aggregation(\"sum\")\n                        .field(\"processor.accepted\")\n                        .build())\n                    .equation(\"A\")\n                    .build())\n                .build())\n            .timeWindows(KibanaSloTimeWindowArgs.builder()\n                .duration(\"7d\")\n                .type(\"rolling\")\n                .build())\n            .budgetingMethod(\"timeslices\")\n            .objectives(KibanaSloObjectiveArgs.builder()\n                .target(0.95)\n                .timesliceTarget(0.95)\n                .timesliceWindow(\"5m\")\n                .build())\n            .build());\n\n        //Available from 8.12.0\n        var timesliceMetric = new KibanaSlo(\"timesliceMetric\", KibanaSloArgs.builder()\n            .name(\"timeslice metric\")\n            .description(\"timeslice metric\")\n            .timesliceMetricIndicators(KibanaSloTimesliceMetricIndicatorArgs.builder()\n                .index(\"my-index\")\n                .timestampField(\"@timestamp\")\n                .metrics(KibanaSloTimesliceMetricIndicatorMetricArgs.builder()\n                    .metrics(KibanaSloTimesliceMetricIndicatorMetricMetricArgs.builder()\n                        .name(\"A\")\n                        .aggregation(\"sum\")\n                        .field(\"latency\")\n                        .build())\n                    .equation(\"A\")\n                    .comparator(\"GT\")\n                    .threshold(100.0)\n                    .build())\n                .build())\n            .timeWindows(KibanaSloTimeWindowArgs.builder()\n                .duration(\"7d\")\n                .type(\"rolling\")\n                .build())\n            .budgetingMethod(\"timeslices\")\n            .objectives(KibanaSloObjectiveArgs.builder()\n                .target(0.95)\n                .timesliceTarget(0.95)\n                .timesliceWindow(\"5m\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  authServerLatency:\n    type: elasticstack:KibanaSlo\n    name: auth_server_latency\n    properties:\n      name: Auth server latency\n      description: Ensures auth server is responding in time\n      apmLatencyIndicators:\n        - environment: production\n          service: auth\n          transactionType: request\n          transactionName: GET /auth\n          index: metrics-apm*\n          threshold: 500\n      timeWindows:\n        - duration: 7d\n          type: rolling\n      budgetingMethod: timeslices\n      objectives:\n        - target: 0.95\n          timesliceTarget: 0.95\n          timesliceWindow: 5m\n      settings:\n        syncDelay: 5m\n        frequency: 5m\n  authServerAvailability:\n    type: elasticstack:KibanaSlo\n    name: auth_server_availability\n    properties:\n      name: Auth server latency\n      description: Ensures auth server is responding in time\n      apmAvailabilityIndicators:\n        - environment: production\n          service: my-service\n          transactionType: request\n          transactionName: GET /sup/dawg\n          index: metrics-apm*\n      timeWindows:\n        - duration: 7d\n          type: rolling\n      budgetingMethod: timeslices\n      objectives:\n        - target: 0.95\n          timesliceTarget: 0.95\n          timesliceWindow: 5m\n      settings:\n        syncDelay: 5m\n        frequency: 5m\n  customKql:\n    type: elasticstack:KibanaSlo\n    name: custom_kql\n    properties:\n      name: custom kql\n      description: custom kql\n      kqlCustomIndicators:\n        - index: my-index\n          good: latency \u003c 300\n          total: '*'\n          filter: 'labels.groupId: group-0'\n          timestampField: custom_timestamp\n      timeWindows:\n        - duration: 7d\n          type: rolling\n      budgetingMethod: timeslices\n      objectives:\n        - target: 0.95\n          timesliceTarget: 0.95\n          timesliceWindow: 5m\n      settings:\n        syncDelay: 5m\n        frequency: 5m\n  # Available from 8.10.0\n  customHistogram:\n    type: elasticstack:KibanaSlo\n    name: custom_histogram\n    properties:\n      name: custom histogram\n      description: custom histogram\n      histogramCustomIndicators:\n        - index: my-index\n          goods:\n            - field: test\n              aggregation: value_count\n              filter: latency \u003c 300\n          totals:\n            - field: test\n              aggregation: value_count\n          filter: 'labels.groupId: group-0'\n          timestampField: custom_timestamp\n      timeWindows:\n        - duration: 7d\n          type: rolling\n      budgetingMethod: timeslices\n      objectives:\n        - target: 0.95\n          timesliceTarget: 0.95\n          timesliceWindow: 5m\n      tags:\n        - tag-1\n        - another_tag\n  # Available from 8.10.0\n  customMetric:\n    type: elasticstack:KibanaSlo\n    name: custom_metric\n    properties:\n      name: custom kql\n      description: custom kql\n      metricCustomIndicators:\n        - index: my-index\n          goods:\n            - metrics:\n                - name: A\n                  aggregation: sum\n                  field: processor.processed\n              equation: A\n          totals:\n            - metrics:\n                - name: A\n                  aggregation: sum\n                  field: processor.accepted\n              equation: A\n      timeWindows:\n        - duration: 7d\n          type: rolling\n      budgetingMethod: timeslices\n      objectives:\n        - target: 0.95\n          timesliceTarget: 0.95\n          timesliceWindow: 5m\n  # Available from 8.12.0\n  timesliceMetric:\n    type: elasticstack:KibanaSlo\n    name: timeslice_metric\n    properties:\n      name: timeslice metric\n      description: timeslice metric\n      timesliceMetricIndicators:\n        - index: my-index\n          timestampField: '@timestamp'\n          metrics:\n            - metrics:\n                - name: A\n                  aggregation: sum\n                  field: latency\n              equation: A\n              comparator: GT\n              threshold: 100\n      timeWindows:\n        - duration: 7d\n          type: rolling\n      budgetingMethod: timeslices\n      objectives:\n        - target: 0.95\n          timesliceTarget: 0.95\n          timesliceWindow: 5m\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaSlo:KibanaSlo my_slo \u003cspace id\u003e/\u003cslo id\u003e\n```\n\n","properties":{"apmAvailabilityIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmAvailabilityIndicator:KibanaSloApmAvailabilityIndicator"}},"apmLatencyIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmLatencyIndicator:KibanaSloApmLatencyIndicator"}},"budgetingMethod":{"type":"string","description":"An \u003cspan pulumi-lang-nodejs=\"`occurrences`\" pulumi-lang-dotnet=\"`Occurrences`\" pulumi-lang-go=\"`occurrences`\" pulumi-lang-python=\"`occurrences`\" pulumi-lang-yaml=\"`occurrences`\" pulumi-lang-java=\"`occurrences`\"\u003e`occurrences`\u003c/span\u003e budgeting method uses the number of good and total events during the time window. A \u003cspan pulumi-lang-nodejs=\"`timeslices`\" pulumi-lang-dotnet=\"`Timeslices`\" pulumi-lang-go=\"`timeslices`\" pulumi-lang-python=\"`timeslices`\" pulumi-lang-yaml=\"`timeslices`\" pulumi-lang-java=\"`timeslices`\"\u003e`timeslices`\u003c/span\u003e budgeting method uses the number of good slices and total slices during the time window. A slice is an arbitrary time window (smaller than the overall SLO time window) that is either considered good or bad, calculated from the timeslice threshold and the ratio of good over total events that happened during the slice window. A budgeting method is required and must be either occurrences or timeslices.\n"},"description":{"type":"string","description":"A description for the SLO.\n"},"groupBies":{"type":"array","items":{"type":"string"},"description":"Optional group by fields to use to generate an SLO per distinct value.\n"},"histogramCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicator:KibanaSloHistogramCustomIndicator"}},"kqlCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicator:KibanaSloKqlCustomIndicator"}},"metricCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicator:KibanaSloMetricCustomIndicator"}},"name":{"type":"string","description":"The name of the SLO.\n"},"objectives":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloObjective:KibanaSloObjective"},"description":"The target objective is the value the SLO needs to meet during the time window. If a timeslices budgeting method is used, we also need to define the timesliceTarget which can be different than the overall SLO target.\n"},"settings":{"$ref":"#/types/elasticstack:index%2FKibanaSloSettings:KibanaSloSettings","description":"The default settings should be sufficient for most users, but if needed, these properties can be overwritten.\n"},"sloId":{"type":"string","description":"An ID (8 to 48 characters) that contains only letters, numbers, hyphens, and underscores. If omitted, a UUIDv1 will be generated server-side.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags for the SLO.\n"},"timeWindows":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimeWindow:KibanaSloTimeWindow"},"description":"Currently support `calendarAligned` and \u003cspan pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\"\u003e`rolling`\u003c/span\u003e time windows. Any duration greater than 1 day can be used: days, weeks, months, quarters, years. Rolling time window requires a duration, e.g. \u003cspan pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\"\u003e`1w`\u003c/span\u003e for one week, and type: \u003cspan pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\"\u003e`rolling`\u003c/span\u003e. SLOs defined with such time window, will only consider the SLI data from the last duration period as a moving window. Calendar aligned time window requires a duration, limited to `1M` for monthly or \u003cspan pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\"\u003e`1w`\u003c/span\u003e for weekly, and type: `calendarAligned`.\n"},"timesliceMetricIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicator:KibanaSloTimesliceMetricIndicator"},"description":"Defines a timeslice metric indicator for SLO.\n"}},"type":"object","required":["budgetingMethod","description","groupBies","name","sloId","spaceId"],"inputProperties":{"apmAvailabilityIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmAvailabilityIndicator:KibanaSloApmAvailabilityIndicator"}},"apmLatencyIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmLatencyIndicator:KibanaSloApmLatencyIndicator"}},"budgetingMethod":{"type":"string","description":"An \u003cspan pulumi-lang-nodejs=\"`occurrences`\" pulumi-lang-dotnet=\"`Occurrences`\" pulumi-lang-go=\"`occurrences`\" pulumi-lang-python=\"`occurrences`\" pulumi-lang-yaml=\"`occurrences`\" pulumi-lang-java=\"`occurrences`\"\u003e`occurrences`\u003c/span\u003e budgeting method uses the number of good and total events during the time window. A \u003cspan pulumi-lang-nodejs=\"`timeslices`\" pulumi-lang-dotnet=\"`Timeslices`\" pulumi-lang-go=\"`timeslices`\" pulumi-lang-python=\"`timeslices`\" pulumi-lang-yaml=\"`timeslices`\" pulumi-lang-java=\"`timeslices`\"\u003e`timeslices`\u003c/span\u003e budgeting method uses the number of good slices and total slices during the time window. A slice is an arbitrary time window (smaller than the overall SLO time window) that is either considered good or bad, calculated from the timeslice threshold and the ratio of good over total events that happened during the slice window. A budgeting method is required and must be either occurrences or timeslices.\n"},"description":{"type":"string","description":"A description for the SLO.\n"},"groupBies":{"type":"array","items":{"type":"string"},"description":"Optional group by fields to use to generate an SLO per distinct value.\n"},"histogramCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicator:KibanaSloHistogramCustomIndicator"}},"kqlCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicator:KibanaSloKqlCustomIndicator"}},"metricCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicator:KibanaSloMetricCustomIndicator"}},"name":{"type":"string","description":"The name of the SLO.\n"},"objectives":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloObjective:KibanaSloObjective"},"description":"The target objective is the value the SLO needs to meet during the time window. If a timeslices budgeting method is used, we also need to define the timesliceTarget which can be different than the overall SLO target.\n"},"settings":{"$ref":"#/types/elasticstack:index%2FKibanaSloSettings:KibanaSloSettings","description":"The default settings should be sufficient for most users, but if needed, these properties can be overwritten.\n"},"sloId":{"type":"string","description":"An ID (8 to 48 characters) that contains only letters, numbers, hyphens, and underscores. If omitted, a UUIDv1 will be generated server-side.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags for the SLO.\n"},"timeWindows":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimeWindow:KibanaSloTimeWindow"},"description":"Currently support `calendarAligned` and \u003cspan pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\"\u003e`rolling`\u003c/span\u003e time windows. Any duration greater than 1 day can be used: days, weeks, months, quarters, years. Rolling time window requires a duration, e.g. \u003cspan pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\"\u003e`1w`\u003c/span\u003e for one week, and type: \u003cspan pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\"\u003e`rolling`\u003c/span\u003e. SLOs defined with such time window, will only consider the SLI data from the last duration period as a moving window. Calendar aligned time window requires a duration, limited to `1M` for monthly or \u003cspan pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\"\u003e`1w`\u003c/span\u003e for weekly, and type: `calendarAligned`.\n"},"timesliceMetricIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicator:KibanaSloTimesliceMetricIndicator"},"description":"Defines a timeslice metric indicator for SLO.\n"}},"requiredInputs":["budgetingMethod","description"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSlo resources.\n","properties":{"apmAvailabilityIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmAvailabilityIndicator:KibanaSloApmAvailabilityIndicator"}},"apmLatencyIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmLatencyIndicator:KibanaSloApmLatencyIndicator"}},"budgetingMethod":{"type":"string","description":"An \u003cspan pulumi-lang-nodejs=\"`occurrences`\" pulumi-lang-dotnet=\"`Occurrences`\" pulumi-lang-go=\"`occurrences`\" pulumi-lang-python=\"`occurrences`\" pulumi-lang-yaml=\"`occurrences`\" pulumi-lang-java=\"`occurrences`\"\u003e`occurrences`\u003c/span\u003e budgeting method uses the number of good and total events during the time window. A \u003cspan pulumi-lang-nodejs=\"`timeslices`\" pulumi-lang-dotnet=\"`Timeslices`\" pulumi-lang-go=\"`timeslices`\" pulumi-lang-python=\"`timeslices`\" pulumi-lang-yaml=\"`timeslices`\" pulumi-lang-java=\"`timeslices`\"\u003e`timeslices`\u003c/span\u003e budgeting method uses the number of good slices and total slices during the time window. A slice is an arbitrary time window (smaller than the overall SLO time window) that is either considered good or bad, calculated from the timeslice threshold and the ratio of good over total events that happened during the slice window. A budgeting method is required and must be either occurrences or timeslices.\n"},"description":{"type":"string","description":"A description for the SLO.\n"},"groupBies":{"type":"array","items":{"type":"string"},"description":"Optional group by fields to use to generate an SLO per distinct value.\n"},"histogramCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicator:KibanaSloHistogramCustomIndicator"}},"kqlCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicator:KibanaSloKqlCustomIndicator"}},"metricCustomIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicator:KibanaSloMetricCustomIndicator"}},"name":{"type":"string","description":"The name of the SLO.\n"},"objectives":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloObjective:KibanaSloObjective"},"description":"The target objective is the value the SLO needs to meet during the time window. If a timeslices budgeting method is used, we also need to define the timesliceTarget which can be different than the overall SLO target.\n"},"settings":{"$ref":"#/types/elasticstack:index%2FKibanaSloSettings:KibanaSloSettings","description":"The default settings should be sufficient for most users, but if needed, these properties can be overwritten.\n"},"sloId":{"type":"string","description":"An ID (8 to 48 characters) that contains only letters, numbers, hyphens, and underscores. If omitted, a UUIDv1 will be generated server-side.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags for the SLO.\n"},"timeWindows":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimeWindow:KibanaSloTimeWindow"},"description":"Currently support `calendarAligned` and \u003cspan pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\"\u003e`rolling`\u003c/span\u003e time windows. Any duration greater than 1 day can be used: days, weeks, months, quarters, years. Rolling time window requires a duration, e.g. \u003cspan pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\"\u003e`1w`\u003c/span\u003e for one week, and type: \u003cspan pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\"\u003e`rolling`\u003c/span\u003e. SLOs defined with such time window, will only consider the SLI data from the last duration period as a moving window. Calendar aligned time window requires a duration, limited to `1M` for monthly or \u003cspan pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\"\u003e`1w`\u003c/span\u003e for weekly, and type: `calendarAligned`.\n"},"timesliceMetricIndicators":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicator:KibanaSloTimesliceMetricIndicator"},"description":"Defines a timeslice metric indicator for SLO.\n"}},"type":"object"}},"elasticstack:index/kibanaSpace:KibanaSpace":{"description":"Creates a Kibana space. See the [spaces API documentation](https://www.elastic.co/guide/en/kibana/master/spaces-api-post.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.KibanaSpace(\"example\", {\n    spaceId: \"test_space\",\n    name: \"Test Space\",\n    description: \"A fresh space for testing visualisations\",\n    disabledFeatures: [\n        \"ingestManager\",\n        \"enterpriseSearch\",\n    ],\n    initials: \"ts\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.KibanaSpace(\"example\",\n    space_id=\"test_space\",\n    name=\"Test Space\",\n    description=\"A fresh space for testing visualisations\",\n    disabled_features=[\n        \"ingestManager\",\n        \"enterpriseSearch\",\n    ],\n    initials=\"ts\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.KibanaSpace(\"example\", new()\n    {\n        SpaceId = \"test_space\",\n        Name = \"Test Space\",\n        Description = \"A fresh space for testing visualisations\",\n        DisabledFeatures = new[]\n        {\n            \"ingestManager\",\n            \"enterpriseSearch\",\n        },\n        Initials = \"ts\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaSpace(ctx, \"example\", \u0026elasticstack.KibanaSpaceArgs{\n\t\t\tSpaceId:     pulumi.String(\"test_space\"),\n\t\t\tName:        pulumi.String(\"Test Space\"),\n\t\t\tDescription: pulumi.String(\"A fresh space for testing visualisations\"),\n\t\t\tDisabledFeatures: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ingestManager\"),\n\t\t\t\tpulumi.String(\"enterpriseSearch\"),\n\t\t\t},\n\t\t\tInitials: pulumi.String(\"ts\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSpace;\nimport com.pulumi.elasticstack.KibanaSpaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KibanaSpace(\"example\", KibanaSpaceArgs.builder()\n            .spaceId(\"test_space\")\n            .name(\"Test Space\")\n            .description(\"A fresh space for testing visualisations\")\n            .disabledFeatures(            \n                \"ingestManager\",\n                \"enterpriseSearch\")\n            .initials(\"ts\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:KibanaSpace\n    properties:\n      spaceId: test_space\n      name: Test Space\n      description: A fresh space for testing visualisations\n      disabledFeatures:\n        - ingestManager\n        - enterpriseSearch\n      initials: ts\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaSpace:KibanaSpace my_space \u003ccluster_uuid\u003e/\u003cspace id\u003e\n```\n\n","properties":{"color":{"type":"string","description":"The hexadecimal color code used in the space avatar. By default, the color is automatically generated from the space name.\n"},"description":{"type":"string","description":"The description for the space.\n"},"disabledFeatures":{"type":"array","items":{"type":"string"},"description":"The list of disabled features for the space. To get a list of available feature IDs, use the Features API (https://www.elastic.co/guide/en/kibana/master/features-api-get.html).\n"},"imageUrl":{"type":"string","description":"The data-URL encoded image to display in the space avatar.\n"},"initials":{"type":"string","description":"The initials shown in the space avatar. By default, the initials are automatically generated from the space name. Initials must be 1 or 2 characters.\n"},"name":{"type":"string","description":"The display name for the space.\n"},"solution":{"type":"string","description":"The solution view for the space. Valid options are \u003cspan pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\"\u003e`security`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`oblt`\" pulumi-lang-dotnet=\"`Oblt`\" pulumi-lang-go=\"`oblt`\" pulumi-lang-python=\"`oblt`\" pulumi-lang-yaml=\"`oblt`\" pulumi-lang-java=\"`oblt`\"\u003e`oblt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`classic`\" pulumi-lang-dotnet=\"`Classic`\" pulumi-lang-go=\"`classic`\" pulumi-lang-python=\"`classic`\" pulumi-lang-yaml=\"`classic`\" pulumi-lang-java=\"`classic`\"\u003e`classic`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"The space ID that is part of the Kibana URL when inside the space.\n"}},"type":"object","required":["color","disabledFeatures","initials","name","solution","spaceId"],"inputProperties":{"color":{"type":"string","description":"The hexadecimal color code used in the space avatar. By default, the color is automatically generated from the space name.\n"},"description":{"type":"string","description":"The description for the space.\n"},"disabledFeatures":{"type":"array","items":{"type":"string"},"description":"The list of disabled features for the space. To get a list of available feature IDs, use the Features API (https://www.elastic.co/guide/en/kibana/master/features-api-get.html).\n"},"imageUrl":{"type":"string","description":"The data-URL encoded image to display in the space avatar.\n"},"initials":{"type":"string","description":"The initials shown in the space avatar. By default, the initials are automatically generated from the space name. Initials must be 1 or 2 characters.\n"},"name":{"type":"string","description":"The display name for the space.\n"},"solution":{"type":"string","description":"The solution view for the space. Valid options are \u003cspan pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\"\u003e`security`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`oblt`\" pulumi-lang-dotnet=\"`Oblt`\" pulumi-lang-go=\"`oblt`\" pulumi-lang-python=\"`oblt`\" pulumi-lang-yaml=\"`oblt`\" pulumi-lang-java=\"`oblt`\"\u003e`oblt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`classic`\" pulumi-lang-dotnet=\"`Classic`\" pulumi-lang-go=\"`classic`\" pulumi-lang-python=\"`classic`\" pulumi-lang-yaml=\"`classic`\" pulumi-lang-java=\"`classic`\"\u003e`classic`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"The space ID that is part of the Kibana URL when inside the space.\n"}},"requiredInputs":["spaceId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSpace resources.\n","properties":{"color":{"type":"string","description":"The hexadecimal color code used in the space avatar. By default, the color is automatically generated from the space name.\n"},"description":{"type":"string","description":"The description for the space.\n"},"disabledFeatures":{"type":"array","items":{"type":"string"},"description":"The list of disabled features for the space. To get a list of available feature IDs, use the Features API (https://www.elastic.co/guide/en/kibana/master/features-api-get.html).\n"},"imageUrl":{"type":"string","description":"The data-URL encoded image to display in the space avatar.\n"},"initials":{"type":"string","description":"The initials shown in the space avatar. By default, the initials are automatically generated from the space name. Initials must be 1 or 2 characters.\n"},"name":{"type":"string","description":"The display name for the space.\n"},"solution":{"type":"string","description":"The solution view for the space. Valid options are \u003cspan pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\"\u003e`security`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`oblt`\" pulumi-lang-dotnet=\"`Oblt`\" pulumi-lang-go=\"`oblt`\" pulumi-lang-python=\"`oblt`\" pulumi-lang-yaml=\"`oblt`\" pulumi-lang-java=\"`oblt`\"\u003e`oblt`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\"\u003e`es`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`classic`\" pulumi-lang-dotnet=\"`Classic`\" pulumi-lang-go=\"`classic`\" pulumi-lang-python=\"`classic`\" pulumi-lang-yaml=\"`classic`\" pulumi-lang-java=\"`classic`\"\u003e`classic`\u003c/span\u003e.\n"},"spaceId":{"type":"string","description":"The space ID that is part of the Kibana URL when inside the space.\n"}},"type":"object"}},"elasticstack:index/kibanaSyntheticsMonitor:KibanaSyntheticsMonitor":{"description":"Creates or updates a Kibana synthetics monitor. See [API docs](https://www.elastic.co/guide/en/kibana/current/add-monitor-api.html)\n\n## Supported monitor types\n\n * \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e\n * \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e\n * \u003cspan pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\"\u003e`icmp`\u003c/span\u003e\n * \u003cspan pulumi-lang-nodejs=\"`browser`\" pulumi-lang-dotnet=\"`Browser`\" pulumi-lang-go=\"`browser`\" pulumi-lang-python=\"`browser`\" pulumi-lang-yaml=\"`browser`\" pulumi-lang-java=\"`browser`\"\u003e`browser`\u003c/span\u003e\n\nThe monitor type is determined by the fields in the \u003cspan pulumi-lang-nodejs=\"`suite`\" pulumi-lang-dotnet=\"`Suite`\" pulumi-lang-go=\"`suite`\" pulumi-lang-python=\"`suite`\" pulumi-lang-yaml=\"`suite`\" pulumi-lang-java=\"`suite`\"\u003e`suite`\u003c/span\u003e block. See the [API docs](https://www.elastic.co/guide/en/kibana/current/add-monitor-api.html#add-monitor-api-request-body) for more details on which fields are required for each monitor type.\n\n**NOTE:** Due-to nature of partial update API, reset values to defaults is not supported.\nIn case you would like to reset an optional monitor value, please set it explicitly or delete and create new monitor.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myMonitor = new elasticstack.KibanaSyntheticsMonitor(\"my_monitor\", {\n    name: \"Example http monitor\",\n    spaceId: \"default\",\n    schedule: 10,\n    locations: [\"us_west\"],\n    enabled: false,\n    tags: [\"tag\"],\n    labels: {\n        environment: \"production\",\n        team: \"platform\",\n        service: \"web-app\",\n    },\n    alert: {\n        status: {\n            enabled: true,\n        },\n        tls: {\n            enabled: false,\n        },\n    },\n    serviceName: \"example apm service\",\n    timeout: 30,\n    http: {\n        url: \"http://localhost:8080\",\n        sslVerificationMode: \"full\",\n        sslSupportedProtocols: [\"TLSv1.2\"],\n        maxRedirects: 10,\n        mode: \"all\",\n        ipv4: true,\n        ipv6: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmy_monitor = elasticstack.KibanaSyntheticsMonitor(\"my_monitor\",\n    name=\"Example http monitor\",\n    space_id=\"default\",\n    schedule=10,\n    locations=[\"us_west\"],\n    enabled=False,\n    tags=[\"tag\"],\n    labels={\n        \"environment\": \"production\",\n        \"team\": \"platform\",\n        \"service\": \"web-app\",\n    },\n    alert={\n        \"status\": {\n            \"enabled\": True,\n        },\n        \"tls\": {\n            \"enabled\": False,\n        },\n    },\n    service_name=\"example apm service\",\n    timeout=30,\n    http={\n        \"url\": \"http://localhost:8080\",\n        \"ssl_verification_mode\": \"full\",\n        \"ssl_supported_protocols\": [\"TLSv1.2\"],\n        \"max_redirects\": 10,\n        \"mode\": \"all\",\n        \"ipv4\": True,\n        \"ipv6\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myMonitor = new Elasticstack.KibanaSyntheticsMonitor(\"my_monitor\", new()\n    {\n        Name = \"Example http monitor\",\n        SpaceId = \"default\",\n        Schedule = 10,\n        Locations = new[]\n        {\n            \"us_west\",\n        },\n        Enabled = false,\n        Tags = new[]\n        {\n            \"tag\",\n        },\n        Labels = \n        {\n            { \"environment\", \"production\" },\n            { \"team\", \"platform\" },\n            { \"service\", \"web-app\" },\n        },\n        Alert = new Elasticstack.Inputs.KibanaSyntheticsMonitorAlertArgs\n        {\n            Status = new Elasticstack.Inputs.KibanaSyntheticsMonitorAlertStatusArgs\n            {\n                Enabled = true,\n            },\n            Tls = new Elasticstack.Inputs.KibanaSyntheticsMonitorAlertTlsArgs\n            {\n                Enabled = false,\n            },\n        },\n        ServiceName = \"example apm service\",\n        Timeout = 30,\n        Http = new Elasticstack.Inputs.KibanaSyntheticsMonitorHttpArgs\n        {\n            Url = \"http://localhost:8080\",\n            SslVerificationMode = \"full\",\n            SslSupportedProtocols = new[]\n            {\n                \"TLSv1.2\",\n            },\n            MaxRedirects = 10,\n            Mode = \"all\",\n            Ipv4 = true,\n            Ipv6 = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaSyntheticsMonitor(ctx, \"my_monitor\", \u0026elasticstack.KibanaSyntheticsMonitorArgs{\n\t\t\tName:     pulumi.String(\"Example http monitor\"),\n\t\t\tSpaceId:  pulumi.String(\"default\"),\n\t\t\tSchedule: pulumi.Float64(10),\n\t\t\tLocations: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us_west\"),\n\t\t\t},\n\t\t\tEnabled: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"production\"),\n\t\t\t\t\"team\":        pulumi.String(\"platform\"),\n\t\t\t\t\"service\":     pulumi.String(\"web-app\"),\n\t\t\t},\n\t\t\tAlert: \u0026elasticstack.KibanaSyntheticsMonitorAlertArgs{\n\t\t\t\tStatus: \u0026elasticstack.KibanaSyntheticsMonitorAlertStatusArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tTls: \u0026elasticstack.KibanaSyntheticsMonitorAlertTlsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceName: pulumi.String(\"example apm service\"),\n\t\t\tTimeout:     pulumi.Float64(30),\n\t\t\tHttp: \u0026elasticstack.KibanaSyntheticsMonitorHttpArgs{\n\t\t\t\tUrl:                 pulumi.String(\"http://localhost:8080\"),\n\t\t\t\tSslVerificationMode: pulumi.String(\"full\"),\n\t\t\t\tSslSupportedProtocols: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"TLSv1.2\"),\n\t\t\t\t},\n\t\t\t\tMaxRedirects: pulumi.Float64(10),\n\t\t\t\tMode:         pulumi.String(\"all\"),\n\t\t\t\tIpv4:         pulumi.Bool(true),\n\t\t\t\tIpv6:         pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSyntheticsMonitor;\nimport com.pulumi.elasticstack.KibanaSyntheticsMonitorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSyntheticsMonitorAlertArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSyntheticsMonitorAlertStatusArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSyntheticsMonitorAlertTlsArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSyntheticsMonitorHttpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myMonitor = new KibanaSyntheticsMonitor(\"myMonitor\", KibanaSyntheticsMonitorArgs.builder()\n            .name(\"Example http monitor\")\n            .spaceId(\"default\")\n            .schedule(10.0)\n            .locations(\"us_west\")\n            .enabled(false)\n            .tags(\"tag\")\n            .labels(Map.ofEntries(\n                Map.entry(\"environment\", \"production\"),\n                Map.entry(\"team\", \"platform\"),\n                Map.entry(\"service\", \"web-app\")\n            ))\n            .alert(KibanaSyntheticsMonitorAlertArgs.builder()\n                .status(KibanaSyntheticsMonitorAlertStatusArgs.builder()\n                    .enabled(true)\n                    .build())\n                .tls(KibanaSyntheticsMonitorAlertTlsArgs.builder()\n                    .enabled(false)\n                    .build())\n                .build())\n            .serviceName(\"example apm service\")\n            .timeout(30.0)\n            .http(KibanaSyntheticsMonitorHttpArgs.builder()\n                .url(\"http://localhost:8080\")\n                .sslVerificationMode(\"full\")\n                .sslSupportedProtocols(\"TLSv1.2\")\n                .maxRedirects(10.0)\n                .mode(\"all\")\n                .ipv4(true)\n                .ipv6(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myMonitor:\n    type: elasticstack:KibanaSyntheticsMonitor\n    name: my_monitor\n    properties:\n      name: Example http monitor\n      spaceId: default\n      schedule: 10\n      locations:\n        - us_west\n      enabled: false\n      tags:\n        - tag\n      labels:\n        environment: production\n        team: platform\n        service: web-app\n      alert:\n        status:\n          enabled: true\n        tls:\n          enabled: false\n      serviceName: example apm service\n      timeout: 30\n      http:\n        url: http://localhost:8080\n        sslVerificationMode: full\n        sslSupportedProtocols:\n          - TLSv1.2\n        maxRedirects: '10'\n        mode: all\n        ipv4: true\n        ipv6: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaSyntheticsMonitor:KibanaSyntheticsMonitor my_monitor \u003cspace id\u003e/\u003cmonitor_id\u003e\n```\n\n","properties":{"alert":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorAlert:KibanaSyntheticsMonitorAlert","description":"Alert configuration. Default: `{ status: { enabled: true }, tls: { enabled: true } }`.\n"},"browser":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorBrowser:KibanaSyntheticsMonitorBrowser","description":"Browser Monitor specific fields\n"},"enabled":{"type":"boolean","description":"Whether the monitor is enabled. Default: \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n"},"http":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorHttp:KibanaSyntheticsMonitorHttp","description":"HTTP Monitor specific fields\n"},"icmp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorIcmp:KibanaSyntheticsMonitorIcmp","description":"ICMP Monitor specific fields\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value pairs of labels to associate with the monitor. Labels can be used for filtering and grouping monitors.\n"},"locations":{"type":"array","items":{"type":"string"},"description":"Where to deploy the monitor. Monitors can be deployed in multiple locations so that you can detect differences in availability and response times across those locations.\n"},"name":{"type":"string","description":"The monitor's name.\n"},"namespace":{"type":"string","description":"The data stream namespace. Note: if you change its value, kibana creates new datastream. A user needs permissions for new/old datastream in update case to be able to see full monitor history. The \u003cspan pulumi-lang-nodejs=\"`namespace`\" pulumi-lang-dotnet=\"`Namespace`\" pulumi-lang-go=\"`namespace`\" pulumi-lang-python=\"`namespace`\" pulumi-lang-yaml=\"`namespace`\" pulumi-lang-java=\"`namespace`\"\u003e`namespace`\u003c/span\u003e field should be lowercase and not contain spaces. The namespace must not include any of the following characters: *, \\, /, ?, \", \u003c, \u003e, |, whitespace, ,, #, :, or -. Default: \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e\n"},"params":{"type":"string","description":"Monitor parameters. Raw JSON object, use \u003cspan pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\"\u003e`jsonencode`\u003c/span\u003e function to represent JSON\n"},"privateLocations":{"type":"array","items":{"type":"string"},"description":"These Private Locations refer to locations hosted and managed by you, whereas locations are hosted by Elastic. You can specify a Private Location using the location's name.\n"},"retestOnFailure":{"type":"boolean","description":"Enable or disable retesting when a monitor fails. By default, monitors are automatically retested if the monitor goes from \"up\" to \"down\". If the result of the retest is also \"down\", an error will be created, and if configured, an alert sent. Then the monitor will resume running according to the defined schedule. Using retest*on*failure can reduce noise related to transient problems. Default: \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"schedule":{"type":"number","description":"The monitor's schedule in minutes. Supported values are 1, 3, 5, 10, 15, 30, 60, 120 and 240.\n"},"serviceName":{"type":"string","description":"The APM service name.\n"},"spaceId":{"type":"string","description":"Kibana space. The space ID that is part of the Kibana URL when inside the space. Space IDs are limited to lowercase alphanumeric, underscore, and hyphen characters (a-z, 0-9, _, and -). You are cannot change the ID with the update operation.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags.\n"},"tcp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorTcp:KibanaSyntheticsMonitorTcp","description":"TCP Monitor specific fields\n"},"timeout":{"type":"number","description":"The monitor timeout in seconds, monitor will fail if it doesn't complete within this time. Default: \u003cspan pulumi-lang-nodejs=\"`16`\" pulumi-lang-dotnet=\"`16`\" pulumi-lang-go=\"`16`\" pulumi-lang-python=\"`16`\" pulumi-lang-yaml=\"`16`\" pulumi-lang-java=\"`16`\"\u003e`16`\u003c/span\u003e\n"}},"type":"object","required":["alert","enabled","name","namespace","schedule","serviceName","spaceId","timeout"],"inputProperties":{"alert":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorAlert:KibanaSyntheticsMonitorAlert","description":"Alert configuration. Default: `{ status: { enabled: true }, tls: { enabled: true } }`.\n"},"browser":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorBrowser:KibanaSyntheticsMonitorBrowser","description":"Browser Monitor specific fields\n"},"enabled":{"type":"boolean","description":"Whether the monitor is enabled. Default: \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n"},"http":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorHttp:KibanaSyntheticsMonitorHttp","description":"HTTP Monitor specific fields\n"},"icmp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorIcmp:KibanaSyntheticsMonitorIcmp","description":"ICMP Monitor specific fields\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value pairs of labels to associate with the monitor. Labels can be used for filtering and grouping monitors.\n"},"locations":{"type":"array","items":{"type":"string"},"description":"Where to deploy the monitor. Monitors can be deployed in multiple locations so that you can detect differences in availability and response times across those locations.\n"},"name":{"type":"string","description":"The monitor's name.\n"},"namespace":{"type":"string","description":"The data stream namespace. Note: if you change its value, kibana creates new datastream. A user needs permissions for new/old datastream in update case to be able to see full monitor history. The \u003cspan pulumi-lang-nodejs=\"`namespace`\" pulumi-lang-dotnet=\"`Namespace`\" pulumi-lang-go=\"`namespace`\" pulumi-lang-python=\"`namespace`\" pulumi-lang-yaml=\"`namespace`\" pulumi-lang-java=\"`namespace`\"\u003e`namespace`\u003c/span\u003e field should be lowercase and not contain spaces. The namespace must not include any of the following characters: *, \\, /, ?, \", \u003c, \u003e, |, whitespace, ,, #, :, or -. Default: \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e\n"},"params":{"type":"string","description":"Monitor parameters. Raw JSON object, use \u003cspan pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\"\u003e`jsonencode`\u003c/span\u003e function to represent JSON\n"},"privateLocations":{"type":"array","items":{"type":"string"},"description":"These Private Locations refer to locations hosted and managed by you, whereas locations are hosted by Elastic. You can specify a Private Location using the location's name.\n"},"retestOnFailure":{"type":"boolean","description":"Enable or disable retesting when a monitor fails. By default, monitors are automatically retested if the monitor goes from \"up\" to \"down\". If the result of the retest is also \"down\", an error will be created, and if configured, an alert sent. Then the monitor will resume running according to the defined schedule. Using retest*on*failure can reduce noise related to transient problems. Default: \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"schedule":{"type":"number","description":"The monitor's schedule in minutes. Supported values are 1, 3, 5, 10, 15, 30, 60, 120 and 240.\n"},"serviceName":{"type":"string","description":"The APM service name.\n"},"spaceId":{"type":"string","description":"Kibana space. The space ID that is part of the Kibana URL when inside the space. Space IDs are limited to lowercase alphanumeric, underscore, and hyphen characters (a-z, 0-9, _, and -). You are cannot change the ID with the update operation.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags.\n"},"tcp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorTcp:KibanaSyntheticsMonitorTcp","description":"TCP Monitor specific fields\n"},"timeout":{"type":"number","description":"The monitor timeout in seconds, monitor will fail if it doesn't complete within this time. Default: \u003cspan pulumi-lang-nodejs=\"`16`\" pulumi-lang-dotnet=\"`16`\" pulumi-lang-go=\"`16`\" pulumi-lang-python=\"`16`\" pulumi-lang-yaml=\"`16`\" pulumi-lang-java=\"`16`\"\u003e`16`\u003c/span\u003e\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSyntheticsMonitor resources.\n","properties":{"alert":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorAlert:KibanaSyntheticsMonitorAlert","description":"Alert configuration. Default: `{ status: { enabled: true }, tls: { enabled: true } }`.\n"},"browser":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorBrowser:KibanaSyntheticsMonitorBrowser","description":"Browser Monitor specific fields\n"},"enabled":{"type":"boolean","description":"Whether the monitor is enabled. Default: \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e\n"},"http":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorHttp:KibanaSyntheticsMonitorHttp","description":"HTTP Monitor specific fields\n"},"icmp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorIcmp:KibanaSyntheticsMonitorIcmp","description":"ICMP Monitor specific fields\n"},"labels":{"type":"object","additionalProperties":{"type":"string"},"description":"Key-value pairs of labels to associate with the monitor. Labels can be used for filtering and grouping monitors.\n"},"locations":{"type":"array","items":{"type":"string"},"description":"Where to deploy the monitor. Monitors can be deployed in multiple locations so that you can detect differences in availability and response times across those locations.\n"},"name":{"type":"string","description":"The monitor's name.\n"},"namespace":{"type":"string","description":"The data stream namespace. Note: if you change its value, kibana creates new datastream. A user needs permissions for new/old datastream in update case to be able to see full monitor history. The \u003cspan pulumi-lang-nodejs=\"`namespace`\" pulumi-lang-dotnet=\"`Namespace`\" pulumi-lang-go=\"`namespace`\" pulumi-lang-python=\"`namespace`\" pulumi-lang-yaml=\"`namespace`\" pulumi-lang-java=\"`namespace`\"\u003e`namespace`\u003c/span\u003e field should be lowercase and not contain spaces. The namespace must not include any of the following characters: *, \\, /, ?, \", \u003c, \u003e, |, whitespace, ,, #, :, or -. Default: \u003cspan pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\"\u003e`default`\u003c/span\u003e\n"},"params":{"type":"string","description":"Monitor parameters. Raw JSON object, use \u003cspan pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\"\u003e`jsonencode`\u003c/span\u003e function to represent JSON\n"},"privateLocations":{"type":"array","items":{"type":"string"},"description":"These Private Locations refer to locations hosted and managed by you, whereas locations are hosted by Elastic. You can specify a Private Location using the location's name.\n"},"retestOnFailure":{"type":"boolean","description":"Enable or disable retesting when a monitor fails. By default, monitors are automatically retested if the monitor goes from \"up\" to \"down\". If the result of the retest is also \"down\", an error will be created, and if configured, an alert sent. Then the monitor will resume running according to the defined schedule. Using retest*on*failure can reduce noise related to transient problems. Default: \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"schedule":{"type":"number","description":"The monitor's schedule in minutes. Supported values are 1, 3, 5, 10, 15, 30, 60, 120 and 240.\n"},"serviceName":{"type":"string","description":"The APM service name.\n"},"spaceId":{"type":"string","description":"Kibana space. The space ID that is part of the Kibana URL when inside the space. Space IDs are limited to lowercase alphanumeric, underscore, and hyphen characters (a-z, 0-9, _, and -). You are cannot change the ID with the update operation.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags.\n"},"tcp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorTcp:KibanaSyntheticsMonitorTcp","description":"TCP Monitor specific fields\n"},"timeout":{"type":"number","description":"The monitor timeout in seconds, monitor will fail if it doesn't complete within this time. Default: \u003cspan pulumi-lang-nodejs=\"`16`\" pulumi-lang-dotnet=\"`16`\" pulumi-lang-go=\"`16`\" pulumi-lang-python=\"`16`\" pulumi-lang-yaml=\"`16`\" pulumi-lang-java=\"`16`\"\u003e`16`\u003c/span\u003e\n"}},"type":"object"}},"elasticstack:index/kibanaSyntheticsParameter:KibanaSyntheticsParameter":{"description":"Creates or updates a Kibana synthetics parameter.\n\nSee [Working with secrets and sensitive values](https://www.elastic.co/docs/solutions/observability/synthetics/work-with-params-secrets)\nand [API docs](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-synthetics)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.KibanaSyntheticsParameter(\"example\", {\n    key: \"example_key\",\n    value: \"example_value\",\n    description: \"Example description\",\n    tags: [\n        \"tag-a\",\n        \"tag-b\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.KibanaSyntheticsParameter(\"example\",\n    key=\"example_key\",\n    value=\"example_value\",\n    description=\"Example description\",\n    tags=[\n        \"tag-a\",\n        \"tag-b\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = new Elasticstack.KibanaSyntheticsParameter(\"example\", new()\n    {\n        Key = \"example_key\",\n        Value = \"example_value\",\n        Description = \"Example description\",\n        Tags = new[]\n        {\n            \"tag-a\",\n            \"tag-b\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.NewKibanaSyntheticsParameter(ctx, \"example\", \u0026elasticstack.KibanaSyntheticsParameterArgs{\n\t\t\tKey:         pulumi.String(\"example_key\"),\n\t\t\tValue:       pulumi.String(\"example_value\"),\n\t\t\tDescription: pulumi.String(\"Example description\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag-a\"),\n\t\t\t\tpulumi.String(\"tag-b\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.KibanaSyntheticsParameter;\nimport com.pulumi.elasticstack.KibanaSyntheticsParameterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var example = new KibanaSyntheticsParameter(\"example\", KibanaSyntheticsParameterArgs.builder()\n            .key(\"example_key\")\n            .value(\"example_value\")\n            .description(\"Example description\")\n            .tags(            \n                \"tag-a\",\n                \"tag-b\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:KibanaSyntheticsParameter\n    properties:\n      key: example_key\n      value: example_value\n      description: Example description\n      tags:\n        - tag-a\n        - tag-b\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaSyntheticsParameter:KibanaSyntheticsParameter my_param \u003cspace id\u003e/\u003cparam_id\u003e\n```\n\n","properties":{"description":{"type":"string","description":"A description of the parameter.\n"},"key":{"type":"string","description":"The key of the parameter.\n"},"shareAcrossSpaces":{"type":"boolean","description":"Whether the parameter should be shared across spaces.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags to categorize the parameter.\n"},"value":{"type":"string","description":"The value associated with the parameter.\n","secret":true}},"type":"object","required":["description","key","shareAcrossSpaces","tags","value"],"inputProperties":{"description":{"type":"string","description":"A description of the parameter.\n"},"key":{"type":"string","description":"The key of the parameter.\n"},"shareAcrossSpaces":{"type":"boolean","description":"Whether the parameter should be shared across spaces.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags to categorize the parameter.\n"},"value":{"type":"string","description":"The value associated with the parameter.\n","secret":true}},"requiredInputs":["key","value"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSyntheticsParameter resources.\n","properties":{"description":{"type":"string","description":"A description of the parameter.\n"},"key":{"type":"string","description":"The key of the parameter.\n"},"shareAcrossSpaces":{"type":"boolean","description":"Whether the parameter should be shared across spaces.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags to categorize the parameter.\n"},"value":{"type":"string","description":"The value associated with the parameter.\n","secret":true}},"type":"object"}},"elasticstack:index/kibanaSyntheticsPrivateLocation:KibanaSyntheticsPrivateLocation":{"description":"Creates or updates a Kibana synthetics private location.\n\nSee [Monitor via a private agent](https://www.elastic.co/guide/en/observability/current/synthetics-private-location.html#monitor-via-private-agent)\nand [API docs](https://www.elastic.co/guide/en/kibana/current/create-private-location-api.html)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst sample = new elasticstack.FleetAgentPolicy(\"sample\", {\n    name: \"Sample Agent Policy\",\n    namespace: \"default\",\n    description: \"A sample agent policy\",\n    monitorLogs: true,\n    monitorMetrics: true,\n    skipDestroy: false,\n});\nconst example = new elasticstack.KibanaSyntheticsPrivateLocation(\"example\", {\n    label: \"example label\",\n    agentPolicyId: sample.policyId,\n    tags: [\n        \"tag-a\",\n        \"tag-b\",\n    ],\n    geo: {\n        lat: 40.7128,\n        lon: 74.006,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nsample = elasticstack.FleetAgentPolicy(\"sample\",\n    name=\"Sample Agent Policy\",\n    namespace=\"default\",\n    description=\"A sample agent policy\",\n    monitor_logs=True,\n    monitor_metrics=True,\n    skip_destroy=False)\nexample = elasticstack.KibanaSyntheticsPrivateLocation(\"example\",\n    label=\"example label\",\n    agent_policy_id=sample.policy_id,\n    tags=[\n        \"tag-a\",\n        \"tag-b\",\n    ],\n    geo={\n        \"lat\": 40.7128,\n        \"lon\": 74.006,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sample = new Elasticstack.FleetAgentPolicy(\"sample\", new()\n    {\n        Name = \"Sample Agent Policy\",\n        Namespace = \"default\",\n        Description = \"A sample agent policy\",\n        MonitorLogs = true,\n        MonitorMetrics = true,\n        SkipDestroy = false,\n    });\n\n    var example = new Elasticstack.KibanaSyntheticsPrivateLocation(\"example\", new()\n    {\n        Label = \"example label\",\n        AgentPolicyId = sample.PolicyId,\n        Tags = new[]\n        {\n            \"tag-a\",\n            \"tag-b\",\n        },\n        Geo = new Elasticstack.Inputs.KibanaSyntheticsPrivateLocationGeoArgs\n        {\n            Lat = 40.7128,\n            Lon = 74.006,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsample, err := elasticstack.NewFleetAgentPolicy(ctx, \"sample\", \u0026elasticstack.FleetAgentPolicyArgs{\n\t\t\tName:           pulumi.String(\"Sample Agent Policy\"),\n\t\t\tNamespace:      pulumi.String(\"default\"),\n\t\t\tDescription:    pulumi.String(\"A sample agent policy\"),\n\t\t\tMonitorLogs:    pulumi.Bool(true),\n\t\t\tMonitorMetrics: pulumi.Bool(true),\n\t\t\tSkipDestroy:    pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewKibanaSyntheticsPrivateLocation(ctx, \"example\", \u0026elasticstack.KibanaSyntheticsPrivateLocationArgs{\n\t\t\tLabel:         pulumi.String(\"example label\"),\n\t\t\tAgentPolicyId: sample.PolicyId,\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag-a\"),\n\t\t\t\tpulumi.String(\"tag-b\"),\n\t\t\t},\n\t\t\tGeo: \u0026elasticstack.KibanaSyntheticsPrivateLocationGeoArgs{\n\t\t\t\tLat: pulumi.Float64(40.7128),\n\t\t\t\tLon: pulumi.Float64(74.006),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.FleetAgentPolicy;\nimport com.pulumi.elasticstack.FleetAgentPolicyArgs;\nimport com.pulumi.elasticstack.KibanaSyntheticsPrivateLocation;\nimport com.pulumi.elasticstack.KibanaSyntheticsPrivateLocationArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSyntheticsPrivateLocationGeoArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var sample = new FleetAgentPolicy(\"sample\", FleetAgentPolicyArgs.builder()\n            .name(\"Sample Agent Policy\")\n            .namespace(\"default\")\n            .description(\"A sample agent policy\")\n            .monitorLogs(true)\n            .monitorMetrics(true)\n            .skipDestroy(false)\n            .build());\n\n        var example = new KibanaSyntheticsPrivateLocation(\"example\", KibanaSyntheticsPrivateLocationArgs.builder()\n            .label(\"example label\")\n            .agentPolicyId(sample.policyId())\n            .tags(            \n                \"tag-a\",\n                \"tag-b\")\n            .geo(KibanaSyntheticsPrivateLocationGeoArgs.builder()\n                .lat(40.7128)\n                .lon(74.006)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  sample:\n    type: elasticstack:FleetAgentPolicy\n    properties:\n      name: Sample Agent Policy\n      namespace: default\n      description: A sample agent policy\n      monitorLogs: true\n      monitorMetrics: true\n      skipDestroy: false\n  example:\n    type: elasticstack:KibanaSyntheticsPrivateLocation\n    properties:\n      label: example label\n      agentPolicyId: ${sample.policyId}\n      tags:\n        - tag-a\n        - tag-b\n      geo:\n        lat: 40.7128\n        lon: 74.006\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/kibanaSyntheticsPrivateLocation:KibanaSyntheticsPrivateLocation my_location \u003cspace id\u003e/\u003cprivate_location_id\u003e\n```\n\n","properties":{"agentPolicyId":{"type":"string","description":"The ID of the agent policy associated with the private location. To create a private location for synthetics monitor you need to create an agent policy in fleet and use its agentPolicyId\n"},"geo":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationGeo:KibanaSyntheticsPrivateLocationGeo","description":"Geographic coordinates (WGS84) for the location\n"},"label":{"type":"string","description":"A label for the private location, used as unique identifier\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags to categorize the private location.\n"}},"type":"object","required":["agentPolicyId","label"],"inputProperties":{"agentPolicyId":{"type":"string","description":"The ID of the agent policy associated with the private location. To create a private location for synthetics monitor you need to create an agent policy in fleet and use its agentPolicyId\n"},"geo":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationGeo:KibanaSyntheticsPrivateLocationGeo","description":"Geographic coordinates (WGS84) for the location\n"},"label":{"type":"string","description":"A label for the private location, used as unique identifier\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags to categorize the private location.\n"}},"requiredInputs":["agentPolicyId","label"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSyntheticsPrivateLocation resources.\n","properties":{"agentPolicyId":{"type":"string","description":"The ID of the agent policy associated with the private location. To create a private location for synthetics monitor you need to create an agent policy in fleet and use its agentPolicyId\n"},"geo":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationGeo:KibanaSyntheticsPrivateLocationGeo","description":"Geographic coordinates (WGS84) for the location\n"},"label":{"type":"string","description":"A label for the private location, used as unique identifier\n"},"tags":{"type":"array","items":{"type":"string"},"description":"An array of tags to categorize the private location.\n"}},"type":"object"}}},"functions":{"elasticstack:index/getElasticsearchEnrichPolicy:getElasticsearchEnrichPolicy":{"description":"Returns information about an enrich policy. See the [enrich policy API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/get-enrich-policy-api.html) for more details.\n\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchEnrichPolicy.\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchEnrichPolicyElasticsearchConnection:getElasticsearchEnrichPolicyElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"name":{"type":"string","description":"The name of the policy.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getElasticsearchEnrichPolicy.\n","properties":{"elasticsearchConnections":{"deprecationMessage":"Deprecated","description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchEnrichPolicyElasticsearchConnection:getElasticsearchEnrichPolicyElasticsearchConnection"},"type":"array"},"enrichFields":{"description":"Fields to add to matching incoming documents. These fields must be present in the source indices.\n","items":{"type":"string"},"type":"array"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"indices":{"description":"Array of one or more source indices used to create the enrich index.\n","items":{"type":"string"},"type":"array"},"matchField":{"description":"Field from the source indices used to match incoming documents.\n","type":"string"},"name":{"description":"The name of the policy.\n","type":"string"},"policyType":{"description":"The type of enrich policy, can be one of geo_match, match, range.\n","type":"string"},"query":{"description":"Query used to filter documents in the enrich index. The policy only uses documents matching this query to enrich incoming documents. Defaults to a\u003cspan pulumi-lang-nodejs=\" matchAll \" pulumi-lang-dotnet=\" MatchAll \" pulumi-lang-go=\" matchAll \" pulumi-lang-python=\" match_all \" pulumi-lang-yaml=\" matchAll \" pulumi-lang-java=\" matchAll \"\u003e match_all \u003c/span\u003equery.\n","type":"string"}},"required":["enrichFields","id","indices","matchField","name","policyType","query"],"type":"object"}},"elasticstack:index/getElasticsearchIndexTemplate:getElasticsearchIndexTemplate":{"description":"Retrieves information about an existing index template definition. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-template.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst ilm_history_7 = elasticstack.getElasticsearchIndexTemplate({\n    name: \"ilm-history-7\",\n});\nexport const template = ilm_history_7;\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nilm_history_7 = elasticstack.get_elasticsearch_index_template(name=\"ilm-history-7\")\npulumi.export(\"template\", ilm_history_7)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var ilm_history_7 = Elasticstack.GetElasticsearchIndexTemplate.Invoke(new()\n    {\n        Name = \"ilm-history-7\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"template\"] = ilm_history_7,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tilm_history_7, err := elasticstack.LookupElasticsearchIndexTemplate(ctx, \u0026elasticstack.LookupElasticsearchIndexTemplateArgs{\n\t\t\tName: \"ilm-history-7\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"template\", ilm_history_7)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIndexTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var ilm-history-7 = ElasticstackFunctions.getElasticsearchIndexTemplate(GetElasticsearchIndexTemplateArgs.builder()\n            .name(\"ilm-history-7\")\n            .build());\n\n        ctx.export(\"template\", ilm_history_7);\n    }\n}\n```\n```yaml\nvariables:\n  ilm-history-7:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIndexTemplate\n      arguments:\n        name: ilm-history-7\noutputs:\n  template: ${[\"ilm-history-7\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIndexTemplate.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateElasticsearchConnection:getElasticsearchIndexTemplateElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"name":{"type":"string","description":"The name of the index template.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getElasticsearchIndexTemplate.\n","properties":{"composedOfs":{"description":"An ordered list of component template names.\n","items":{"type":"string"},"type":"array"},"dataStreams":{"description":"If this object is included, the template is used to create data streams and their backing indices. Supports an empty object.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateDataStream:getElasticsearchIndexTemplateDataStream"},"type":"array"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateElasticsearchConnection:getElasticsearchIndexTemplateElasticsearchConnection","deprecationMessage":"Deprecated","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"ignoreMissingComponentTemplates":{"description":"A list of component template names that are ignored if missing.\n","items":{"type":"string"},"type":"array"},"indexPatterns":{"description":"Array of wildcard (*) expressions used to match the names of data streams and indices during creation.\n","items":{"type":"string"},"type":"array"},"metadata":{"description":"Optional user metadata about the index template.\n","type":"string"},"name":{"description":"The name of the index template.\n","type":"string"},"priority":{"description":"Priority to determine index template precedence when a new data stream or index is created.\n","type":"number"},"templates":{"description":"Template to be applied. It may optionally include an aliases, mappings, lifecycle, or settings configuration.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplate:getElasticsearchIndexTemplateTemplate"},"type":"array"},"version":{"description":"Version number used to manage index templates externally.\n","type":"number"}},"required":["composedOfs","dataStreams","id","ignoreMissingComponentTemplates","indexPatterns","metadata","name","priority","templates","version"],"type":"object"}},"elasticstack:index/getElasticsearchIndices:getElasticsearchIndices":{"description":"Retrieves information about existing Elasticsearch indices. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-index.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst securityIndices = elasticstack.getElasticsearchIndices({\n    target: \".security-*\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nsecurity_indices = elasticstack.get_elasticsearch_indices(target=\".security-*\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var securityIndices = Elasticstack.GetElasticsearchIndices.Invoke(new()\n    {\n        Target = \".security-*\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.GetElasticsearchIndices(ctx, \u0026elasticstack.GetElasticsearchIndicesArgs{\n\t\t\tTarget: pulumi.StringRef(\".security-*\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIndicesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var securityIndices = ElasticstackFunctions.getElasticsearchIndices(GetElasticsearchIndicesArgs.builder()\n            .target(\".security-*\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  securityIndices:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIndices\n      arguments:\n        target: .security-*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIndices.\n","properties":{"target":{"type":"string","description":"Comma-separated list of data streams, indices, and aliases used to limit the request. Supports wildcards (*). To target all data streams and indices, omit this attribute or use * or _all.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIndices.\n","properties":{"id":{"description":"Generated ID for the indices.\n","type":"string"},"indices":{"description":"The list of indices.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndicesIndex:getElasticsearchIndicesIndex"},"type":"array"},"target":{"description":"Comma-separated list of data streams, indices, and aliases used to limit the request. Supports wildcards (*). To target all data streams and indices, omit this attribute or use * or _all.\n","type":"string"}},"required":["id","indices"],"type":"object"}},"elasticstack:index/getElasticsearchInfo:getElasticsearchInfo":{"description":"Gets information about the Elastic cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst clusterInfo = elasticstack.getElasticsearchInfo({});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ncluster_info = elasticstack.get_elasticsearch_info()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var clusterInfo = Elasticstack.GetElasticsearchInfo.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.GetElasticsearchInfo(ctx, \u0026elasticstack.GetElasticsearchInfoArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchInfoArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var clusterInfo = ElasticstackFunctions.getElasticsearchInfo(GetElasticsearchInfoArgs.builder()\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  clusterInfo:\n    fn::invoke:\n      function: elasticstack:getElasticsearchInfo\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchInfo.\n","properties":{"id":{"type":"string","description":"The ID of this resource.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchInfo.\n","properties":{"clusterName":{"description":"Name of the cluster, based on the Cluster name setting setting.\n","type":"string"},"clusterUuid":{"description":"Unique identifier for the cluster.\n","type":"string"},"id":{"description":"The ID of this resource.\n","type":"string"},"name":{"description":"Name of the node.\n","type":"string"},"tagline":{"description":"Elasticsearh tag line.\n","type":"string"},"versions":{"description":"Contains statistics about the number of nodes selected by the request's node filters.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchInfoVersion:getElasticsearchInfoVersion"},"type":"array"}},"required":["clusterName","clusterUuid","id","name","tagline","versions"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorAppend:getElasticsearchIngestProcessorAppend":{"description":"Helper data source which can be used to create the configuration for an append processor. This processor appends one or more values to an existing array if the field already exists and it is an array. Converts a scalar to an array and appends one or more values to it if the field exists and it is a scalar. Creates an array containing the provided values if the field doesn’t exist. See the [append processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/append-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst tags = elasticstack.getElasticsearchIngestProcessorAppend({\n    field: \"tags\",\n    values: [\n        \"production\",\n        \"{{{app}}}\",\n        \"{{{owner}}}\",\n    ],\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"append-ingest\",\n    processors: [tags.then(tags =\u003e tags.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntags = elasticstack.get_elasticsearch_ingest_processor_append(field=\"tags\",\n    values=[\n        \"production\",\n        \"{{{app}}}\",\n        \"{{{owner}}}\",\n    ])\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"append-ingest\",\n    processors=[tags.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var tags = Elasticstack.GetElasticsearchIngestProcessorAppend.Invoke(new()\n    {\n        Field = \"tags\",\n        Values = new[]\n        {\n            \"production\",\n            \"{{{app}}}\",\n            \"{{{owner}}}\",\n        },\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"append-ingest\",\n        Processors = new[]\n        {\n            tags.Apply(getElasticsearchIngestProcessorAppendResult =\u003e getElasticsearchIngestProcessorAppendResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttags, err := elasticstack.GetElasticsearchIngestProcessorAppend(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorAppendArgs{\n\t\t\tField: \"tags\",\n\t\t\tValues: []string{\n\t\t\t\t\"production\",\n\t\t\t\t\"{{{app}}}\",\n\t\t\t\t\"{{{owner}}}\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"append-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(tags.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorAppendArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var tags = ElasticstackFunctions.getElasticsearchIngestProcessorAppend(GetElasticsearchIngestProcessorAppendArgs.builder()\n            .field(\"tags\")\n            .values(            \n                \"production\",\n                \"{{{app}}}\",\n                \"{{{owner}}}\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"append-ingest\")\n            .processors(tags.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: append-ingest\n      processors:\n        - ${tags.json}\nvariables:\n  tags:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorAppend\n      arguments:\n        field: tags\n        values:\n          - production\n          - '{{{app}}}'\n          - '{{{owner}}}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorAppend.\n","properties":{"allowDuplicates":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the processor does not append values already present in the field.\n"},"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to be appended to.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"mediaType":{"type":"string","description":"The media type for encoding value. Applies only when value is a template snippet. Must be one of `application/json`, `text/plain`, or `application/x-www-form-urlencoded`. Supported only from Elasticsearch version **7.15**.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"values":{"type":"array","items":{"type":"string"},"description":"The value to be appended.\n"}},"type":"object","required":["field","values"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorAppend.\n","properties":{"allowDuplicates":{"description":"If \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e, the processor does not append values already present in the field.\n","type":"boolean"},"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to be appended to.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"mediaType":{"description":"The media type for encoding value. Applies only when value is a template snippet. Must be one of `application/json`, `text/plain`, or `application/x-www-form-urlencoded`. Supported only from Elasticsearch version **7.15**.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"values":{"description":"The value to be appended.\n","items":{"type":"string"},"type":"array"}},"required":["field","id","json","values"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorBytes:getElasticsearchIngestProcessorBytes":{"description":"Helper data source which can be used to create the configuration for a bytes processor. The processor converts a human readable byte value (e.g. 1kb) to its value in bytes (e.g. 1024). See the [bytes processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/bytes-processor.html) for more details.\n\nIf the field is an array of strings, all members of the array will be converted.\n\nSupported human readable units are \"b\", \"kb\", \"mb\", \"gb\", \"tb\", \"pb\" case insensitive. An error will occur if the field is not a supported format or resultant value exceeds 2^63.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst bytes = elasticstack.getElasticsearchIngestProcessorBytes({\n    field: \"file.size\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"bytes-ingest\",\n    processors: [bytes.then(bytes =\u003e bytes.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nbytes = elasticstack.get_elasticsearch_ingest_processor_bytes(field=\"file.size\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"bytes-ingest\",\n    processors=[bytes.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var bytes = Elasticstack.GetElasticsearchIngestProcessorBytes.Invoke(new()\n    {\n        Field = \"file.size\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"bytes-ingest\",\n        Processors = new[]\n        {\n            bytes.Apply(getElasticsearchIngestProcessorBytesResult =\u003e getElasticsearchIngestProcessorBytesResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbytes, err := elasticstack.GetElasticsearchIngestProcessorBytes(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorBytesArgs{\n\t\t\tField: \"file.size\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"bytes-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(bytes.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorBytesArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var bytes = ElasticstackFunctions.getElasticsearchIngestProcessorBytes(GetElasticsearchIngestProcessorBytesArgs.builder()\n            .field(\"file.size\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"bytes-ingest\")\n            .processors(bytes.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: bytes-ingest\n      processors:\n        - ${bytes.json}\nvariables:\n  bytes:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorBytes\n      arguments:\n        field: file.size\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorBytes.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to convert\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorBytes.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to convert\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorCircle:getElasticsearchIngestProcessorCircle":{"description":"Helper data source which can be used to create the configuration for an circle processor. This processor converts circle definitions of shapes to regular polygons which approximate them. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-circle-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst circle = elasticstack.getElasticsearchIngestProcessorCircle({\n    field: \"circle\",\n    errorDistance: 28.1,\n    shapeType: \"geo_shape\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"circle-ingest\",\n    processors: [circle.then(circle =\u003e circle.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ncircle = elasticstack.get_elasticsearch_ingest_processor_circle(field=\"circle\",\n    error_distance=28.1,\n    shape_type=\"geo_shape\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"circle-ingest\",\n    processors=[circle.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var circle = Elasticstack.GetElasticsearchIngestProcessorCircle.Invoke(new()\n    {\n        Field = \"circle\",\n        ErrorDistance = 28.1,\n        ShapeType = \"geo_shape\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"circle-ingest\",\n        Processors = new[]\n        {\n            circle.Apply(getElasticsearchIngestProcessorCircleResult =\u003e getElasticsearchIngestProcessorCircleResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcircle, err := elasticstack.GetElasticsearchIngestProcessorCircle(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorCircleArgs{\n\t\t\tField:         \"circle\",\n\t\t\tErrorDistance: 28.1,\n\t\t\tShapeType:     \"geo_shape\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"circle-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(circle.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorCircleArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var circle = ElasticstackFunctions.getElasticsearchIngestProcessorCircle(GetElasticsearchIngestProcessorCircleArgs.builder()\n            .field(\"circle\")\n            .errorDistance(28.1)\n            .shapeType(\"geo_shape\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"circle-ingest\")\n            .processors(circle.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: circle-ingest\n      processors:\n        - ${circle.json}\nvariables:\n  circle:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorCircle\n      arguments:\n        field: circle\n        errorDistance: 28.1\n        shapeType: geo_shape\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorCircle.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"errorDistance":{"type":"number","description":"The difference between the resulting inscribed distance from center to side and the circle’s radius (measured in meters for \u003cspan pulumi-lang-nodejs=\"`geoShape`\" pulumi-lang-dotnet=\"`GeoShape`\" pulumi-lang-go=\"`geoShape`\" pulumi-lang-python=\"`geo_shape`\" pulumi-lang-yaml=\"`geoShape`\" pulumi-lang-java=\"`geoShape`\"\u003e`geo_shape`\u003c/span\u003e, unit-less for \u003cspan pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\"\u003e`shape`\u003c/span\u003e)\n"},"field":{"type":"string","description":"The string-valued field to trim whitespace from.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"shapeType":{"type":"string","description":"Which field mapping type is to be used when processing the circle.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place\n"}},"type":"object","required":["errorDistance","field","shapeType"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorCircle.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"errorDistance":{"description":"The difference between the resulting inscribed distance from center to side and the circle’s radius (measured in meters for \u003cspan pulumi-lang-nodejs=\"`geoShape`\" pulumi-lang-dotnet=\"`GeoShape`\" pulumi-lang-go=\"`geoShape`\" pulumi-lang-python=\"`geo_shape`\" pulumi-lang-yaml=\"`geoShape`\" pulumi-lang-java=\"`geoShape`\"\u003e`geo_shape`\u003c/span\u003e, unit-less for \u003cspan pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\"\u003e`shape`\u003c/span\u003e)\n","type":"number"},"field":{"description":"The string-valued field to trim whitespace from.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"shapeType":{"description":"Which field mapping type is to be used when processing the circle.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place\n","type":"string"}},"required":["errorDistance","field","id","json","shapeType"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorCommunityId:getElasticsearchIngestProcessorCommunityId":{"description":"Helper data source which can be used to create the configuration for a community ID processor. This processor computes the Community ID for network flow data as defined in the Community ID Specification. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/community-id-processor.html\nYou can use a community ID to correlate network events related to a single flow.\n\nThe community ID processor reads network flow data from related [Elastic Common Schema (ECS)](https://www.elastic.co/guide/en/ecs/1.12) fields by default. If you use the ECS, no configuration is required.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst community = elasticstack.getElasticsearchIngestProcessorCommunityId({});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"community-ingest\",\n    processors: [community.then(community =\u003e community.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ncommunity = elasticstack.get_elasticsearch_ingest_processor_community_id()\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"community-ingest\",\n    processors=[community.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var community = Elasticstack.GetElasticsearchIngestProcessorCommunityId.Invoke();\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"community-ingest\",\n        Processors = new[]\n        {\n            community.Apply(getElasticsearchIngestProcessorCommunityIdResult =\u003e getElasticsearchIngestProcessorCommunityIdResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcommunity, err := elasticstack.GetElasticsearchIngestProcessorCommunityId(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorCommunityIdArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"community-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(community.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorCommunityIdArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var community = ElasticstackFunctions.getElasticsearchIngestProcessorCommunityId(GetElasticsearchIngestProcessorCommunityIdArgs.builder()\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"community-ingest\")\n            .processors(community.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: community-ingest\n      processors:\n        - ${community.json}\nvariables:\n  community:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorCommunityId\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorCommunityId.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"destinationIp":{"type":"string","description":"Field containing the destination IP address.\n"},"destinationPort":{"type":"number","description":"Field containing the destination port.\n"},"ianaNumber":{"type":"number","description":"Field containing the IANA number.\n"},"icmpCode":{"type":"number","description":"Field containing the ICMP code.\n"},"icmpType":{"type":"number","description":"Field containing the ICMP type.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"seed":{"type":"number","description":"Seed for the community ID hash. Must be between 0 and 65535 (inclusive). The seed can prevent hash collisions between network domains, such as a staging and production network that use the same addressing scheme.\n"},"sourceIp":{"type":"string","description":"Field containing the source IP address.\n"},"sourcePort":{"type":"number","description":"Field containing the source port.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"Output field for the community ID.\n"},"transport":{"type":"string","description":"Field containing the transport protocol. Used only when the \u003cspan pulumi-lang-nodejs=\"`ianaNumber`\" pulumi-lang-dotnet=\"`IanaNumber`\" pulumi-lang-go=\"`ianaNumber`\" pulumi-lang-python=\"`iana_number`\" pulumi-lang-yaml=\"`ianaNumber`\" pulumi-lang-java=\"`ianaNumber`\"\u003e`iana_number`\u003c/span\u003e field is not present.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorCommunityId.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"destinationIp":{"description":"Field containing the destination IP address.\n","type":"string"},"destinationPort":{"description":"Field containing the destination port.\n","type":"number"},"ianaNumber":{"description":"Field containing the IANA number.\n","type":"number"},"icmpCode":{"description":"Field containing the ICMP code.\n","type":"number"},"icmpType":{"description":"Field containing the ICMP type.\n","type":"number"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"seed":{"description":"Seed for the community ID hash. Must be between 0 and 65535 (inclusive). The seed can prevent hash collisions between network domains, such as a staging and production network that use the same addressing scheme.\n","type":"number"},"sourceIp":{"description":"Field containing the source IP address.\n","type":"string"},"sourcePort":{"description":"Field containing the source port.\n","type":"number"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"Output field for the community ID.\n","type":"string"},"transport":{"description":"Field containing the transport protocol. Used only when the \u003cspan pulumi-lang-nodejs=\"`ianaNumber`\" pulumi-lang-dotnet=\"`IanaNumber`\" pulumi-lang-go=\"`ianaNumber`\" pulumi-lang-python=\"`iana_number`\" pulumi-lang-yaml=\"`ianaNumber`\" pulumi-lang-java=\"`ianaNumber`\"\u003e`iana_number`\u003c/span\u003e field is not present.\n","type":"string"}},"required":["id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorConvert:getElasticsearchIngestProcessorConvert":{"description":"Helper data source which can be used to create the configuration for a convert processor. This processor converts a field in the currently ingested document to a different type, such as converting a string to an integer. See the [convert processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/convert-processor.html) for more details.\n\nThe supported types include: \n- \u003cspan pulumi-lang-nodejs=\"`integer`\" pulumi-lang-dotnet=\"`Integer`\" pulumi-lang-go=\"`integer`\" pulumi-lang-python=\"`integer`\" pulumi-lang-yaml=\"`integer`\" pulumi-lang-java=\"`integer`\"\u003e`integer`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`long`\" pulumi-lang-dotnet=\"`Long`\" pulumi-lang-go=\"`long`\" pulumi-lang-python=\"`long`\" pulumi-lang-yaml=\"`long`\" pulumi-lang-java=\"`long`\"\u003e`long`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\"\u003e`float`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`double`\" pulumi-lang-dotnet=\"`Double`\" pulumi-lang-go=\"`double`\" pulumi-lang-python=\"`double`\" pulumi-lang-yaml=\"`double`\" pulumi-lang-java=\"`double`\"\u003e`double`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e\n- \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e\n\nSpecifying \u003cspan pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\"\u003e`boolean`\u003c/span\u003e will set the field to true if its string value is equal to true (ignoring case), to false if its string value is equal to false (ignoring case), or it will throw an exception otherwise.\n\nSpecifying \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e will set the target field to the value of \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e if it contains a valid IPv4 or IPv6 address that can be indexed into an IP field type.\n\nSpecifying \u003cspan pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\"\u003e`auto`\u003c/span\u003e will attempt to convert the string-valued \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e into the closest non-string, non-IP type. For example, a field whose value is \"true\" will be converted to its respective boolean type: true. Do note that float takes precedence of double in auto. A value of \"242.15\" will \"automatically\" be converted to 242.15 of type \u003cspan pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\"\u003e`float`\u003c/span\u003e. If a provided field cannot be appropriately converted, the processor will still process successfully and leave the field value as-is. In such a case, \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e will be updated with the unconverted field value.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst convert = elasticstack.getElasticsearchIngestProcessorConvert({\n    description: \"converts the content of the id field to an integer\",\n    field: \"id\",\n    type: \"integer\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"convert-ingest\",\n    processors: [convert.then(convert =\u003e convert.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nconvert = elasticstack.get_elasticsearch_ingest_processor_convert(description=\"converts the content of the id field to an integer\",\n    field=\"id\",\n    type=\"integer\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"convert-ingest\",\n    processors=[convert.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var convert = Elasticstack.GetElasticsearchIngestProcessorConvert.Invoke(new()\n    {\n        Description = \"converts the content of the id field to an integer\",\n        Field = \"id\",\n        Type = \"integer\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"convert-ingest\",\n        Processors = new[]\n        {\n            convert.Apply(getElasticsearchIngestProcessorConvertResult =\u003e getElasticsearchIngestProcessorConvertResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tconvert, err := elasticstack.GetElasticsearchIngestProcessorConvert(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorConvertArgs{\n\t\t\tDescription: pulumi.StringRef(\"converts the content of the id field to an integer\"),\n\t\t\tField:       \"id\",\n\t\t\tType:        \"integer\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"convert-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(convert.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorConvertArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var convert = ElasticstackFunctions.getElasticsearchIngestProcessorConvert(GetElasticsearchIngestProcessorConvertArgs.builder()\n            .description(\"converts the content of the id field to an integer\")\n            .field(\"id\")\n            .type(\"integer\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"convert-ingest\")\n            .processors(convert.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: convert-ingest\n      processors:\n        - ${convert.json}\nvariables:\n  convert:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorConvert\n      arguments:\n        description: converts the content of the id field to an integer\n        field: id\n        type: integer\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorConvert.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field whose value is to be converted.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to.\n"},"type":{"type":"string","description":"The type to convert the existing value to\n"}},"type":"object","required":["field","type"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorConvert.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field whose value is to be converted.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to.\n","type":"string"},"type":{"description":"The type to convert the existing value to\n","type":"string"}},"required":["field","id","json","type"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorCsv:getElasticsearchIngestProcessorCsv":{"description":"Helper data source which can be used to create the configuration for a CSV processor. This processor extracts fields from CSV line out of a single text field within a document. Any empty field in CSV will be skipped. See the [CSV processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/csv-processor.html) for more details.\n\nIf the \u003cspan pulumi-lang-nodejs=\"`trim`\" pulumi-lang-dotnet=\"`Trim`\" pulumi-lang-go=\"`trim`\" pulumi-lang-python=\"`trim`\" pulumi-lang-yaml=\"`trim`\" pulumi-lang-java=\"`trim`\"\u003e`trim`\u003c/span\u003e option is enabled then any whitespace in the beginning and in the end of each unquoted field will be trimmed. For example with configuration above, a value of A, B will result in field field2 having value {nbsp}B (with space at the beginning). If trim is enabled A, B will result in field field2 having value B (no whitespace). Quoted fields will be left untouched.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst csv = elasticstack.getElasticsearchIngestProcessorCsv({\n    field: \"my_field\",\n    targetFields: [\n        \"field1\",\n        \"field2\",\n    ],\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"csv-ingest\",\n    processors: [csv.then(csv =\u003e csv.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ncsv = elasticstack.get_elasticsearch_ingest_processor_csv(field=\"my_field\",\n    target_fields=[\n        \"field1\",\n        \"field2\",\n    ])\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"csv-ingest\",\n    processors=[csv.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var csv = Elasticstack.GetElasticsearchIngestProcessorCsv.Invoke(new()\n    {\n        Field = \"my_field\",\n        TargetFields = new[]\n        {\n            \"field1\",\n            \"field2\",\n        },\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"csv-ingest\",\n        Processors = new[]\n        {\n            csv.Apply(getElasticsearchIngestProcessorCsvResult =\u003e getElasticsearchIngestProcessorCsvResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcsv, err := elasticstack.GetElasticsearchIngestProcessorCsv(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorCsvArgs{\n\t\t\tField: \"my_field\",\n\t\t\tTargetFields: []string{\n\t\t\t\t\"field1\",\n\t\t\t\t\"field2\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"csv-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(csv.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorCsvArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var csv = ElasticstackFunctions.getElasticsearchIngestProcessorCsv(GetElasticsearchIngestProcessorCsvArgs.builder()\n            .field(\"my_field\")\n            .targetFields(            \n                \"field1\",\n                \"field2\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"csv-ingest\")\n            .processors(csv.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: csv-ingest\n      processors:\n        - ${csv.json}\nvariables:\n  csv:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorCsv\n      arguments:\n        field: my_field\n        targetFields:\n          - field1\n          - field2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorCsv.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"emptyValue":{"type":"string","description":"Value used to fill empty fields, empty fields will be skipped if this is not provided.\n"},"field":{"type":"string","description":"The field to extract data from.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"quote":{"type":"string","description":"Quote used in CSV, has to be single character string\n"},"separator":{"type":"string","description":"Separator used in CSV, has to be single character string.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetFields":{"type":"array","items":{"type":"string"},"description":"The array of fields to assign extracted values to.\n"},"trim":{"type":"boolean","description":"Trim whitespaces in unquoted fields.\n"}},"type":"object","required":["field","targetFields"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorCsv.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"emptyValue":{"description":"Value used to fill empty fields, empty fields will be skipped if this is not provided.\n","type":"string"},"field":{"description":"The field to extract data from.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"quote":{"description":"Quote used in CSV, has to be single character string\n","type":"string"},"separator":{"description":"Separator used in CSV, has to be single character string.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetFields":{"description":"The array of fields to assign extracted values to.\n","items":{"type":"string"},"type":"array"},"trim":{"description":"Trim whitespaces in unquoted fields.\n","type":"boolean"}},"required":["field","id","json","targetFields"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorDate:getElasticsearchIngestProcessorDate":{"description":"Helper data source which can be used to create the configuration for a date processor. This processor parses dates from fields, and then uses the date or timestamp as the timestamp for the document. See the [date processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/date-processor.html) for more details.\n\nBy default, the date processor adds the parsed date as a new field called `@timestamp`. You can specify a different field by setting the \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e configuration parameter. Multiple date formats are supported as part of the same date processor definition. They will be used sequentially to attempt parsing the date field, in the same order they were defined as part of the processor definition.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst date = elasticstack.getElasticsearchIngestProcessorDate({\n    field: \"initial_date\",\n    targetField: \"timestamp\",\n    formats: [\"dd/MM/yyyy HH:mm:ss\"],\n    timezone: \"Europe/Amsterdam\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"date-ingest\",\n    processors: [date.then(date =\u003e date.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndate = elasticstack.get_elasticsearch_ingest_processor_date(field=\"initial_date\",\n    target_field=\"timestamp\",\n    formats=[\"dd/MM/yyyy HH:mm:ss\"],\n    timezone=\"Europe/Amsterdam\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"date-ingest\",\n    processors=[date.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var date = Elasticstack.GetElasticsearchIngestProcessorDate.Invoke(new()\n    {\n        Field = \"initial_date\",\n        TargetField = \"timestamp\",\n        Formats = new[]\n        {\n            \"dd/MM/yyyy HH:mm:ss\",\n        },\n        Timezone = \"Europe/Amsterdam\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"date-ingest\",\n        Processors = new[]\n        {\n            date.Apply(getElasticsearchIngestProcessorDateResult =\u003e getElasticsearchIngestProcessorDateResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdate, err := elasticstack.GetElasticsearchIngestProcessorDate(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorDateArgs{\n\t\t\tField:       \"initial_date\",\n\t\t\tTargetField: pulumi.StringRef(\"timestamp\"),\n\t\t\tFormats: []string{\n\t\t\t\t\"dd/MM/yyyy HH:mm:ss\",\n\t\t\t},\n\t\t\tTimezone: pulumi.StringRef(\"Europe/Amsterdam\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"date-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(date.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorDateArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var date = ElasticstackFunctions.getElasticsearchIngestProcessorDate(GetElasticsearchIngestProcessorDateArgs.builder()\n            .field(\"initial_date\")\n            .targetField(\"timestamp\")\n            .formats(\"dd/MM/yyyy HH:mm:ss\")\n            .timezone(\"Europe/Amsterdam\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"date-ingest\")\n            .processors(date.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: date-ingest\n      processors:\n        - ${date.json}\nvariables:\n  date:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorDate\n      arguments:\n        field: initial_date\n        targetField: timestamp\n        formats:\n          - dd/MM/yyyy HH:mm:ss\n        timezone: Europe/Amsterdam\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorDate.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to get the date from.\n"},"formats":{"type":"array","items":{"type":"string"},"description":"An array of the expected date formats.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"locale":{"type":"string","description":"The locale to use when parsing the date, relevant when parsing month names or week days.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"outputFormat":{"type":"string","description":"The format to use when writing the date to \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field that will hold the parsed date.\n"},"timezone":{"type":"string","description":"The timezone to use when parsing the date.\n"}},"type":"object","required":["field","formats"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorDate.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to get the date from.\n","type":"string"},"formats":{"description":"An array of the expected date formats.\n","items":{"type":"string"},"type":"array"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"locale":{"description":"The locale to use when parsing the date, relevant when parsing month names or week days.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"outputFormat":{"description":"The format to use when writing the date to \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field that will hold the parsed date.\n","type":"string"},"timezone":{"description":"The timezone to use when parsing the date.\n","type":"string"}},"required":["field","formats","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorDateIndexName:getElasticsearchIngestProcessorDateIndexName":{"description":"Helper data source which can be used to create the configuration for a date index name processor. The purpose of this processor is to point documents to the right time based index based on a date or timestamp field in a document by using the date math index name support. See the [date index name processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/date-index-name-processor.html) for more details.\n\nThe processor sets the _index metadata field with a date math index name expression based on the provided index name prefix, a date or timestamp field in the documents being processed and the provided date rounding.\n\nFirst, this processor fetches the date or timestamp from a field in the document being processed. Optionally, date formatting can be configured on how the field’s value should be parsed into a date. Then this date, the provided index name prefix and the provided date rounding get formatted into a date math index name expression. Also here optionally date formatting can be specified on how the date should be formatted into a date math index name expression.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst dateIndexName = elasticstack.getElasticsearchIngestProcessorDateIndexName({\n    description: \"monthly date-time index naming\",\n    field: \"date1\",\n    indexNamePrefix: \"my-index-\",\n    dateRounding: \"M\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"date-index-name-ingest\",\n    processors: [dateIndexName.then(dateIndexName =\u003e dateIndexName.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndate_index_name = elasticstack.get_elasticsearch_ingest_processor_date_index_name(description=\"monthly date-time index naming\",\n    field=\"date1\",\n    index_name_prefix=\"my-index-\",\n    date_rounding=\"M\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"date-index-name-ingest\",\n    processors=[date_index_name.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dateIndexName = Elasticstack.GetElasticsearchIngestProcessorDateIndexName.Invoke(new()\n    {\n        Description = \"monthly date-time index naming\",\n        Field = \"date1\",\n        IndexNamePrefix = \"my-index-\",\n        DateRounding = \"M\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"date-index-name-ingest\",\n        Processors = new[]\n        {\n            dateIndexName.Apply(getElasticsearchIngestProcessorDateIndexNameResult =\u003e getElasticsearchIngestProcessorDateIndexNameResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdateIndexName, err := elasticstack.GetElasticsearchIngestProcessorDateIndexName(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorDateIndexNameArgs{\n\t\t\tDescription:     pulumi.StringRef(\"monthly date-time index naming\"),\n\t\t\tField:           \"date1\",\n\t\t\tIndexNamePrefix: pulumi.StringRef(\"my-index-\"),\n\t\t\tDateRounding:    \"M\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"date-index-name-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(dateIndexName.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorDateIndexNameArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dateIndexName = ElasticstackFunctions.getElasticsearchIngestProcessorDateIndexName(GetElasticsearchIngestProcessorDateIndexNameArgs.builder()\n            .description(\"monthly date-time index naming\")\n            .field(\"date1\")\n            .indexNamePrefix(\"my-index-\")\n            .dateRounding(\"M\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"date-index-name-ingest\")\n            .processors(dateIndexName.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: date-index-name-ingest\n      processors:\n        - ${dateIndexName.json}\nvariables:\n  dateIndexName:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorDateIndexName\n      arguments:\n        description: monthly date-time index naming\n        field: date1\n        indexNamePrefix: my-index-\n        dateRounding: M\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorDateIndexName.\n","properties":{"dateFormats":{"type":"array","items":{"type":"string"},"description":"An array of the expected date formats for parsing dates / timestamps in the document being preprocessed.\n"},"dateRounding":{"type":"string","description":"How to round the date when formatting the date into the index name.\n"},"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to get the date or timestamp from.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"indexNameFormat":{"type":"string","description":"The format to be used when printing the parsed date into the index name.\n"},"indexNamePrefix":{"type":"string","description":"A prefix of the index name to be prepended before the printed date.\n"},"locale":{"type":"string","description":"The locale to use when parsing the date from the document being preprocessed, relevant when parsing month names or week days.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"timezone":{"type":"string","description":"The timezone to use when parsing the date and when date math index supports resolves expressions into concrete index names.\n"}},"type":"object","required":["dateRounding","field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorDateIndexName.\n","properties":{"dateFormats":{"description":"An array of the expected date formats for parsing dates / timestamps in the document being preprocessed.\n","items":{"type":"string"},"type":"array"},"dateRounding":{"description":"How to round the date when formatting the date into the index name.\n","type":"string"},"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to get the date or timestamp from.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"indexNameFormat":{"description":"The format to be used when printing the parsed date into the index name.\n","type":"string"},"indexNamePrefix":{"description":"A prefix of the index name to be prepended before the printed date.\n","type":"string"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"locale":{"description":"The locale to use when parsing the date from the document being preprocessed, relevant when parsing month names or week days.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"timezone":{"description":"The timezone to use when parsing the date and when date math index supports resolves expressions into concrete index names.\n","type":"string"}},"required":["dateRounding","field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorDissect:getElasticsearchIngestProcessorDissect":{"description":"Helper data source which can be used to create the configuration for a dissect processor. This processor extracts structured fields out of a single text field within a document. See the [dissect processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/dissect-processor.html#dissect-processor) for more details.\n\nSimilar to the Grok Processor, dissect also extracts structured fields out of a single text field within a document. However unlike the Grok Processor, dissect does not use Regular Expressions. This allows dissect’s syntax to be simple and for some cases faster than the Grok Processor.\n\nDissect matches a single text field against a defined pattern.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst dissect = elasticstack.getElasticsearchIngestProcessorDissect({\n    field: \"message\",\n    pattern: \"%{clientip} %{ident} %{auth} [%{@timestamp}] \\\"%{verb} %{request} HTTP/%{httpversion}\\\" %{status} %{size}\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"dissect-ingest\",\n    processors: [dissect.then(dissect =\u003e dissect.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndissect = elasticstack.get_elasticsearch_ingest_processor_dissect(field=\"message\",\n    pattern=\"%{clientip} %{ident} %{auth} [%{@timestamp}] \\\"%{verb} %{request} HTTP/%{httpversion}\\\" %{status} %{size}\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"dissect-ingest\",\n    processors=[dissect.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dissect = Elasticstack.GetElasticsearchIngestProcessorDissect.Invoke(new()\n    {\n        Field = \"message\",\n        Pattern = \"%{clientip} %{ident} %{auth} [%{@timestamp}] \\\"%{verb} %{request} HTTP/%{httpversion}\\\" %{status} %{size}\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"dissect-ingest\",\n        Processors = new[]\n        {\n            dissect.Apply(getElasticsearchIngestProcessorDissectResult =\u003e getElasticsearchIngestProcessorDissectResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdissect, err := elasticstack.GetElasticsearchIngestProcessorDissect(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorDissectArgs{\n\t\t\tField:   \"message\",\n\t\t\tPattern: \"%{clientip} %{ident} %{auth} [%{@timestamp}] \\\"%{verb} %{request} HTTP/%{httpversion}\\\" %{status} %{size}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"dissect-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(dissect.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorDissectArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dissect = ElasticstackFunctions.getElasticsearchIngestProcessorDissect(GetElasticsearchIngestProcessorDissectArgs.builder()\n            .field(\"message\")\n            .pattern(\"%{clientip} %{ident} %{auth} [%{@timestamp}] \\\"%{verb} %{request} HTTP/%{httpversion}\\\" %{status} %{size}\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"dissect-ingest\")\n            .processors(dissect.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: dissect-ingest\n      processors:\n        - ${dissect.json}\nvariables:\n  dissect:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorDissect\n      arguments:\n        field: message\n        pattern: '%{clientip} %{ident} %{auth} [%{@timestamp}] \"%{verb} %{request} HTTP/%{httpversion}\" %{status} %{size}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorDissect.\n","properties":{"appendSeparator":{"type":"string","description":"The character(s) that separate the appended fields.\n"},"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to dissect.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"pattern":{"type":"string","description":"The pattern to apply to the field.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object","required":["field","pattern"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorDissect.\n","properties":{"appendSeparator":{"description":"The character(s) that separate the appended fields.\n","type":"string"},"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to dissect.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"pattern":{"description":"The pattern to apply to the field.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["field","id","json","pattern"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorDotExpander:getElasticsearchIngestProcessorDotExpander":{"description":"Helper data source which can be used to create the configuration for a dot expander processor. This processor expands a field with dots into an object field. See the [dot expand processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/dot-expand-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst dotExpander = elasticstack.getElasticsearchIngestProcessorDotExpander({\n    field: \"foo.bar\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"dot-expander-ingest\",\n    processors: [dotExpander.then(dotExpander =\u003e dotExpander.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndot_expander = elasticstack.get_elasticsearch_ingest_processor_dot_expander(field=\"foo.bar\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"dot-expander-ingest\",\n    processors=[dot_expander.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var dotExpander = Elasticstack.GetElasticsearchIngestProcessorDotExpander.Invoke(new()\n    {\n        Field = \"foo.bar\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"dot-expander-ingest\",\n        Processors = new[]\n        {\n            dotExpander.Apply(getElasticsearchIngestProcessorDotExpanderResult =\u003e getElasticsearchIngestProcessorDotExpanderResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdotExpander, err := elasticstack.GetElasticsearchIngestProcessorDotExpander(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorDotExpanderArgs{\n\t\t\tField: \"foo.bar\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"dot-expander-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(dotExpander.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorDotExpanderArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var dotExpander = ElasticstackFunctions.getElasticsearchIngestProcessorDotExpander(GetElasticsearchIngestProcessorDotExpanderArgs.builder()\n            .field(\"foo.bar\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"dot-expander-ingest\")\n            .processors(dotExpander.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: dot-expander-ingest\n      processors:\n        - ${dotExpander.json}\nvariables:\n  dotExpander:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorDotExpander\n      arguments:\n        field: foo.bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorDotExpander.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to expand into an object field. If set to *, all top-level fields will be expanded.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"override":{"type":"boolean","description":"Controls the behavior when there is already an existing nested object that conflicts with the expanded field.\n"},"path":{"type":"string","description":"The field that contains the field to expand.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorDotExpander.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to expand into an object field. If set to *, all top-level fields will be expanded.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"override":{"description":"Controls the behavior when there is already an existing nested object that conflicts with the expanded field.\n","type":"boolean"},"path":{"description":"The field that contains the field to expand.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorDrop:getElasticsearchIngestProcessorDrop":{"description":"Helper data source which can be used to create the configuration for a drop processor. This processor drops the document without raising any errors. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/drop-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst drop = elasticstack.getElasticsearchIngestProcessorDrop({\n    \"if\": \"ctx.network_name == 'Guest'\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"drop-ingest\",\n    processors: [drop.then(drop =\u003e drop.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndrop = elasticstack.get_elasticsearch_ingest_processor_drop(if_=\"ctx.network_name == 'Guest'\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"drop-ingest\",\n    processors=[drop.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var drop = Elasticstack.GetElasticsearchIngestProcessorDrop.Invoke(new()\n    {\n        If = \"ctx.network_name == 'Guest'\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"drop-ingest\",\n        Processors = new[]\n        {\n            drop.Apply(getElasticsearchIngestProcessorDropResult =\u003e getElasticsearchIngestProcessorDropResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdrop, err := elasticstack.GetElasticsearchIngestProcessorDrop(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorDropArgs{\n\t\t\tIf: pulumi.StringRef(\"ctx.network_name == 'Guest'\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"drop-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(drop.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorDropArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var drop = ElasticstackFunctions.getElasticsearchIngestProcessorDrop(GetElasticsearchIngestProcessorDropArgs.builder()\n            .if_(\"ctx.network_name == 'Guest'\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"drop-ingest\")\n            .processors(drop.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: drop-ingest\n      processors:\n        - ${drop.json}\nvariables:\n  drop:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorDrop\n      arguments:\n        if: ctx.network_name == 'Guest'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorDrop.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorDrop.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorEnrich:getElasticsearchIngestProcessorEnrich":{"description":"Helper data source which can be used to create the configuration for an enrich processor. The enrich processor can enrich documents with data from another index. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/enrich-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// the policy must exist before using this processor\n// See example at: https://www.elastic.co/guide/en/elasticsearch/reference/current/match-enrich-policy-type.html\nconst enrich = elasticstack.getElasticsearchIngestProcessorEnrich({\n    policyName: \"users-policy\",\n    field: \"email\",\n    targetField: \"user\",\n    maxMatches: 1,\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"enrich-ingest\",\n    processors: [enrich.then(enrich =\u003e enrich.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# the policy must exist before using this processor\n# See example at: https://www.elastic.co/guide/en/elasticsearch/reference/current/match-enrich-policy-type.html\nenrich = elasticstack.get_elasticsearch_ingest_processor_enrich(policy_name=\"users-policy\",\n    field=\"email\",\n    target_field=\"user\",\n    max_matches=1)\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"enrich-ingest\",\n    processors=[enrich.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    // the policy must exist before using this processor\n    // See example at: https://www.elastic.co/guide/en/elasticsearch/reference/current/match-enrich-policy-type.html\n    var enrich = Elasticstack.GetElasticsearchIngestProcessorEnrich.Invoke(new()\n    {\n        PolicyName = \"users-policy\",\n        Field = \"email\",\n        TargetField = \"user\",\n        MaxMatches = 1,\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"enrich-ingest\",\n        Processors = new[]\n        {\n            enrich.Apply(getElasticsearchIngestProcessorEnrichResult =\u003e getElasticsearchIngestProcessorEnrichResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// the policy must exist before using this processor\n\t\t// See example at: https://www.elastic.co/guide/en/elasticsearch/reference/current/match-enrich-policy-type.html\n\t\tenrich, err := elasticstack.GetElasticsearchIngestProcessorEnrich(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorEnrichArgs{\n\t\t\tPolicyName:  \"users-policy\",\n\t\t\tField:       \"email\",\n\t\t\tTargetField: \"user\",\n\t\t\tMaxMatches:  pulumi.Float64Ref(1),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"enrich-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(enrich.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorEnrichArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // the policy must exist before using this processor\n        // See example at: https://www.elastic.co/guide/en/elasticsearch/reference/current/match-enrich-policy-type.html\n        final var enrich = ElasticstackFunctions.getElasticsearchIngestProcessorEnrich(GetElasticsearchIngestProcessorEnrichArgs.builder()\n            .policyName(\"users-policy\")\n            .field(\"email\")\n            .targetField(\"user\")\n            .maxMatches(1)\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"enrich-ingest\")\n            .processors(enrich.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: enrich-ingest\n      processors:\n        - ${enrich.json}\nvariables:\n  # the policy must exist before using this processor\n  # // See example at: https://www.elastic.co/guide/en/elasticsearch/reference/current/match-enrich-policy-type.html\n  enrich:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorEnrich\n      arguments:\n        policyName: users-policy\n        field: email\n        targetField: user\n        maxMatches: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorEnrich.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field in the input document that matches the policies\u003cspan pulumi-lang-nodejs=\" matchField \" pulumi-lang-dotnet=\" MatchField \" pulumi-lang-go=\" matchField \" pulumi-lang-python=\" match_field \" pulumi-lang-yaml=\" matchField \" pulumi-lang-java=\" matchField \"\u003e match_field \u003c/span\u003eused to retrieve the enrichment data.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"maxMatches":{"type":"number","description":"The maximum number of matched documents to include under the configured target field.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"override":{"type":"boolean","description":"If processor will update fields with pre-existing non-null-valued field.\n"},"policyName":{"type":"string","description":"The name of the enrich policy to use.\n"},"shapeRelation":{"type":"string","description":"A spatial relation operator used to match the geoshape of incoming documents to documents in the enrich index.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"Field added to incoming documents to contain enrich data.\n"}},"type":"object","required":["field","policyName","targetField"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorEnrich.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field in the input document that matches the policies\u003cspan pulumi-lang-nodejs=\" matchField \" pulumi-lang-dotnet=\" MatchField \" pulumi-lang-go=\" matchField \" pulumi-lang-python=\" match_field \" pulumi-lang-yaml=\" matchField \" pulumi-lang-java=\" matchField \"\u003e match_field \u003c/span\u003eused to retrieve the enrichment data.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"maxMatches":{"description":"The maximum number of matched documents to include under the configured target field.\n","type":"number"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"override":{"description":"If processor will update fields with pre-existing non-null-valued field.\n","type":"boolean"},"policyName":{"description":"The name of the enrich policy to use.\n","type":"string"},"shapeRelation":{"description":"A spatial relation operator used to match the geoshape of incoming documents to documents in the enrich index.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"Field added to incoming documents to contain enrich data.\n","type":"string"}},"required":["field","id","json","policyName","targetField"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorFail:getElasticsearchIngestProcessorFail":{"description":"Helper data source which can be used to create the configuration for a fail processor. This processor raises an exception. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/fail-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst fail = elasticstack.getElasticsearchIngestProcessorFail({\n    \"if\": \"ctx.tags.contains('production') != true\",\n    message: \"The production tag is not present, found tags: {{{tags}}}\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"fail-ingest\",\n    processors: [fail.then(fail =\u003e fail.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nfail = elasticstack.get_elasticsearch_ingest_processor_fail(if_=\"ctx.tags.contains('production') != true\",\n    message=\"The production tag is not present, found tags: {{{tags}}}\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"fail-ingest\",\n    processors=[fail.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var fail = Elasticstack.GetElasticsearchIngestProcessorFail.Invoke(new()\n    {\n        If = \"ctx.tags.contains('production') != true\",\n        Message = \"The production tag is not present, found tags: {{{tags}}}\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"fail-ingest\",\n        Processors = new[]\n        {\n            fail.Apply(getElasticsearchIngestProcessorFailResult =\u003e getElasticsearchIngestProcessorFailResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfail, err := elasticstack.GetElasticsearchIngestProcessorFail(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorFailArgs{\n\t\t\tIf:      pulumi.StringRef(\"ctx.tags.contains('production') != true\"),\n\t\t\tMessage: \"The production tag is not present, found tags: {{{tags}}}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"fail-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(fail.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorFailArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var fail = ElasticstackFunctions.getElasticsearchIngestProcessorFail(GetElasticsearchIngestProcessorFailArgs.builder()\n            .if_(\"ctx.tags.contains('production') != true\")\n            .message(\"The production tag is not present, found tags: {{{tags}}}\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"fail-ingest\")\n            .processors(fail.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: fail-ingest\n      processors:\n        - ${fail.json}\nvariables:\n  fail:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorFail\n      arguments:\n        if: ctx.tags.contains('production') != true\n        message: 'The production tag is not present, found tags: {{{tags}}}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorFail.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"message":{"type":"string","description":"The error message thrown by the processor.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object","required":["message"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorFail.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"message":{"description":"The error message thrown by the processor.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["id","json","message"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorFingerprint:getElasticsearchIngestProcessorFingerprint":{"description":"Helper data source which can be used to create the configuration for a fingerprint processor. This processor computes a hash of the document’s content. See the [fingerprint processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/fingerprint-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst fingerprint = elasticstack.getElasticsearchIngestProcessorFingerprint({\n    fields: [\"user\"],\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"fingerprint-ingest\",\n    processors: [fingerprint.then(fingerprint =\u003e fingerprint.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nfingerprint = elasticstack.get_elasticsearch_ingest_processor_fingerprint(fields=[\"user\"])\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"fingerprint-ingest\",\n    processors=[fingerprint.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var fingerprint = Elasticstack.GetElasticsearchIngestProcessorFingerprint.Invoke(new()\n    {\n        Fields = new[]\n        {\n            \"user\",\n        },\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"fingerprint-ingest\",\n        Processors = new[]\n        {\n            fingerprint.Apply(getElasticsearchIngestProcessorFingerprintResult =\u003e getElasticsearchIngestProcessorFingerprintResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfingerprint, err := elasticstack.GetElasticsearchIngestProcessorFingerprint(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorFingerprintArgs{\n\t\t\tFields: []string{\n\t\t\t\t\"user\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"fingerprint-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(fingerprint.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorFingerprintArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var fingerprint = ElasticstackFunctions.getElasticsearchIngestProcessorFingerprint(GetElasticsearchIngestProcessorFingerprintArgs.builder()\n            .fields(\"user\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"fingerprint-ingest\")\n            .processors(fingerprint.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: fingerprint-ingest\n      processors:\n        - ${fingerprint.json}\nvariables:\n  fingerprint:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorFingerprint\n      arguments:\n        fields:\n          - user\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorFingerprint.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"fields":{"type":"array","items":{"type":"string"},"description":"Array of fields to include in the fingerprint.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the processor ignores any missing \u003cspan pulumi-lang-nodejs=\"`fields`\" pulumi-lang-dotnet=\"`Fields`\" pulumi-lang-go=\"`fields`\" pulumi-lang-python=\"`fields`\" pulumi-lang-yaml=\"`fields`\" pulumi-lang-java=\"`fields`\"\u003e`fields`\u003c/span\u003e. If all fields are missing, the processor silently exits without modifying the document.\n"},"method":{"type":"string","description":"The hash method used to compute the fingerprint.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"salt":{"type":"string","description":"Salt value for the hash function.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"Output field for the fingerprint.\n"}},"type":"object","required":["fields"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorFingerprint.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"fields":{"description":"Array of fields to include in the fingerprint.\n","items":{"type":"string"},"type":"array"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the processor ignores any missing \u003cspan pulumi-lang-nodejs=\"`fields`\" pulumi-lang-dotnet=\"`Fields`\" pulumi-lang-go=\"`fields`\" pulumi-lang-python=\"`fields`\" pulumi-lang-yaml=\"`fields`\" pulumi-lang-java=\"`fields`\"\u003e`fields`\u003c/span\u003e. If all fields are missing, the processor silently exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"method":{"description":"The hash method used to compute the fingerprint.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"salt":{"description":"Salt value for the hash function.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"Output field for the fingerprint.\n","type":"string"}},"required":["fields","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorForeach:getElasticsearchIngestProcessorForeach":{"description":"Helper data source which can be used to create the configuration for a foreach processor. This processor runs an ingest processor on each element of an array or object. See the [foreach processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/foreach-processor.html) for more details.\n\nAll ingest processors can run on array or object elements. However, if the number of elements is unknown, it can be cumbersome to process each one in the same way.\n\nThe \u003cspan pulumi-lang-nodejs=\"`foreach`\" pulumi-lang-dotnet=\"`Foreach`\" pulumi-lang-go=\"`foreach`\" pulumi-lang-python=\"`foreach`\" pulumi-lang-yaml=\"`foreach`\" pulumi-lang-java=\"`foreach`\"\u003e`foreach`\u003c/span\u003e processor lets you specify a \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e containing array or object values and a \u003cspan pulumi-lang-nodejs=\"`processor`\" pulumi-lang-dotnet=\"`Processor`\" pulumi-lang-go=\"`processor`\" pulumi-lang-python=\"`processor`\" pulumi-lang-yaml=\"`processor`\" pulumi-lang-java=\"`processor`\"\u003e`processor`\u003c/span\u003e to run on each element in the field.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst convert = elasticstack.getElasticsearchIngestProcessorConvert({\n    field: \"_ingest._value\",\n    type: \"integer\",\n});\nconst foreach = convert.then(convert =\u003e elasticstack.getElasticsearchIngestProcessorForeach({\n    field: \"values\",\n    processor: convert.json,\n}));\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"foreach-ingest\",\n    processors: [foreach.then(foreach =\u003e foreach.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nconvert = elasticstack.get_elasticsearch_ingest_processor_convert(field=\"_ingest._value\",\n    type=\"integer\")\nforeach = elasticstack.get_elasticsearch_ingest_processor_foreach(field=\"values\",\n    processor=convert.json)\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"foreach-ingest\",\n    processors=[foreach.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var convert = Elasticstack.GetElasticsearchIngestProcessorConvert.Invoke(new()\n    {\n        Field = \"_ingest._value\",\n        Type = \"integer\",\n    });\n\n    var @foreach = Elasticstack.GetElasticsearchIngestProcessorForeach.Invoke(new()\n    {\n        Field = \"values\",\n        Processor = convert.Apply(getElasticsearchIngestProcessorConvertResult =\u003e getElasticsearchIngestProcessorConvertResult.Json),\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"foreach-ingest\",\n        Processors = new[]\n        {\n            @foreach.Apply(@foreach =\u003e @foreach.Apply(getElasticsearchIngestProcessorForeachResult =\u003e getElasticsearchIngestProcessorForeachResult.Json)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tconvert, err := elasticstack.GetElasticsearchIngestProcessorConvert(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorConvertArgs{\n\t\t\tField: \"_ingest._value\",\n\t\t\tType:  \"integer\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforeach, err := elasticstack.GetElasticsearchIngestProcessorForeach(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorForeachArgs{\n\t\t\tField:     \"values\",\n\t\t\tProcessor: convert.Json,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"foreach-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(foreach.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorConvertArgs;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorForeachArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var convert = ElasticstackFunctions.getElasticsearchIngestProcessorConvert(GetElasticsearchIngestProcessorConvertArgs.builder()\n            .field(\"_ingest._value\")\n            .type(\"integer\")\n            .build());\n\n        final var foreach = ElasticstackFunctions.getElasticsearchIngestProcessorForeach(GetElasticsearchIngestProcessorForeachArgs.builder()\n            .field(\"values\")\n            .processor(convert.json())\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"foreach-ingest\")\n            .processors(foreach.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: foreach-ingest\n      processors:\n        - ${foreach.json}\nvariables:\n  convert:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorConvert\n      arguments:\n        field: _ingest._value\n        type: integer\n  foreach:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorForeach\n      arguments:\n        field: values\n        processor: ${convert.json}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorForeach.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"Field containing array or object values.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the processor silently exits without changing the document if the \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e or missing.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"processor":{"type":"string","description":"Ingest processor to run on each element.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object","required":["field","processor"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorForeach.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"Field containing array or object values.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the processor silently exits without changing the document if the \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e or missing.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"processor":{"description":"Ingest processor to run on each element.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["field","id","json","processor"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorGeoip:getElasticsearchIngestProcessorGeoip":{"description":"Helper data source which can be used to create the configuration for a geoip processor. The geoip processor adds information about the geographical location of an IPv4 or IPv6 address. See the [geoip processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/geoip-processor.html) for more details.\n\nBy default, the processor uses the GeoLite2 City, GeoLite2 Country, and GeoLite2 ASN GeoIP2 databases from MaxMind, shared under the CC BY-SA 4.0 license. Elasticsearch automatically downloads updates for these databases from the Elastic GeoIP endpoint: https://geoip.elastic.co/v1/database. To get download statistics for these updates, use the GeoIP stats API.\n\nIf your cluster can’t connect to the Elastic GeoIP endpoint or you want to manage your own updates, [see Manage your own GeoIP2 database updates](https://www.elastic.co/guide/en/elasticsearch/reference/current/geoip-processor.html#manage-geoip-database-updates).\n\nIf Elasticsearch can’t connect to the endpoint for 30 days all updated databases will become invalid. Elasticsearch will stop enriching documents with geoip data and will add `tags: [\"_geoip_expired_database\"]` field instead.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst geoip = elasticstack.getElasticsearchIngestProcessorGeoip({\n    field: \"ip\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"geoip-ingest\",\n    processors: [geoip.then(geoip =\u003e geoip.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ngeoip = elasticstack.get_elasticsearch_ingest_processor_geoip(field=\"ip\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"geoip-ingest\",\n    processors=[geoip.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var geoip = Elasticstack.GetElasticsearchIngestProcessorGeoip.Invoke(new()\n    {\n        Field = \"ip\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"geoip-ingest\",\n        Processors = new[]\n        {\n            geoip.Apply(getElasticsearchIngestProcessorGeoipResult =\u003e getElasticsearchIngestProcessorGeoipResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgeoip, err := elasticstack.GetElasticsearchIngestProcessorGeoip(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorGeoipArgs{\n\t\t\tField: \"ip\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"geoip-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(geoip.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorGeoipArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var geoip = ElasticstackFunctions.getElasticsearchIngestProcessorGeoip(GetElasticsearchIngestProcessorGeoipArgs.builder()\n            .field(\"ip\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"geoip-ingest\")\n            .processors(geoip.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: geoip-ingest\n      processors:\n        - ${geoip.json}\nvariables:\n  geoip:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorGeoip\n      arguments:\n        field: ip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorGeoip.\n","properties":{"databaseFile":{"type":"string","description":"The database filename referring to a database the module ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb) or a custom database in the `ingest-geoip` config directory.\n"},"field":{"type":"string","description":"The field to get the ip address from for the geographical lookup.\n"},"firstOnly":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e only first found geoip data will be returned, even if field contains array.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist, the processor quietly exits without modifying the document.\n"},"properties":{"type":"array","items":{"type":"string"},"description":"Controls what properties are added to the \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e based on the geoip lookup.\n"},"targetField":{"type":"string","description":"The field that will hold the geographical information looked up from the MaxMind database.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorGeoip.\n","properties":{"databaseFile":{"description":"The database filename referring to a database the module ships with (GeoLite2-City.mmdb, GeoLite2-Country.mmdb, or GeoLite2-ASN.mmdb) or a custom database in the `ingest-geoip` config directory.\n","type":"string"},"field":{"description":"The field to get the ip address from for the geographical lookup.\n","type":"string"},"firstOnly":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e only first found geoip data will be returned, even if field contains array.\n","type":"boolean"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"properties":{"description":"Controls what properties are added to the \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e based on the geoip lookup.\n","items":{"type":"string"},"type":"array"},"targetField":{"description":"The field that will hold the geographical information looked up from the MaxMind database.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorGrok:getElasticsearchIngestProcessorGrok":{"description":"Helper data source which can be used to create the configuration for a grok processor. This processor extracts structured fields out of a single text field within a document. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/grok-processor.html\n\nThis processor comes packaged with many [reusable patterns](https://github.com/elastic/elasticsearch/blob/master/libs/grok/src/main/resources/patterns).\n\nIf you need help building patterns to match your logs, you will find the [Grok Debugger](https://www.elastic.co/guide/en/kibana/master/xpack-grokdebugger.html) tool quite useful! [The Grok Constructor](https://grokconstructor.appspot.com/) is also a useful tool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst grok = elasticstack.getElasticsearchIngestProcessorGrok({\n    field: \"message\",\n    patterns: [\n        \"%{FAVORITE_DOG:pet}\",\n        \"%{FAVORITE_CAT:pet}\",\n    ],\n    patternDefinitions: {\n        FAVORITE_DOG: \"beagle\",\n        FAVORITE_CAT: \"burmese\",\n    },\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"grok-ingest\",\n    processors: [grok.then(grok =\u003e grok.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ngrok = elasticstack.get_elasticsearch_ingest_processor_grok(field=\"message\",\n    patterns=[\n        \"%{FAVORITE_DOG:pet}\",\n        \"%{FAVORITE_CAT:pet}\",\n    ],\n    pattern_definitions={\n        \"FAVORITE_DOG\": \"beagle\",\n        \"FAVORITE_CAT\": \"burmese\",\n    })\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"grok-ingest\",\n    processors=[grok.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var grok = Elasticstack.GetElasticsearchIngestProcessorGrok.Invoke(new()\n    {\n        Field = \"message\",\n        Patterns = new[]\n        {\n            \"%{FAVORITE_DOG:pet}\",\n            \"%{FAVORITE_CAT:pet}\",\n        },\n        PatternDefinitions = \n        {\n            { \"FAVORITE_DOG\", \"beagle\" },\n            { \"FAVORITE_CAT\", \"burmese\" },\n        },\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"grok-ingest\",\n        Processors = new[]\n        {\n            grok.Apply(getElasticsearchIngestProcessorGrokResult =\u003e getElasticsearchIngestProcessorGrokResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgrok, err := elasticstack.GetElasticsearchIngestProcessorGrok(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorGrokArgs{\n\t\t\tField: \"message\",\n\t\t\tPatterns: []string{\n\t\t\t\t\"%{FAVORITE_DOG:pet}\",\n\t\t\t\t\"%{FAVORITE_CAT:pet}\",\n\t\t\t},\n\t\t\tPatternDefinitions: map[string]interface{}{\n\t\t\t\t\"FAVORITE_DOG\": \"beagle\",\n\t\t\t\t\"FAVORITE_CAT\": \"burmese\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"grok-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(grok.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorGrokArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var grok = ElasticstackFunctions.getElasticsearchIngestProcessorGrok(GetElasticsearchIngestProcessorGrokArgs.builder()\n            .field(\"message\")\n            .patterns(            \n                \"%{FAVORITE_DOG:pet}\",\n                \"%{FAVORITE_CAT:pet}\")\n            .patternDefinitions(Map.ofEntries(\n                Map.entry(\"FAVORITE_DOG\", \"beagle\"),\n                Map.entry(\"FAVORITE_CAT\", \"burmese\")\n            ))\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"grok-ingest\")\n            .processors(grok.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: grok-ingest\n      processors:\n        - ${grok.json}\nvariables:\n  grok:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorGrok\n      arguments:\n        field: message\n        patterns:\n          - '%{FAVORITE_DOG:pet}'\n          - '%{FAVORITE_CAT:pet}'\n        patternDefinitions:\n          FAVORITE_DOG: beagle\n          FAVORITE_CAT: burmese\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorGrok.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"ecsCompatibility":{"type":"string","description":"Must be disabled or v1. If v1, the processor uses patterns with Elastic Common Schema (ECS) field names. **NOTE:** Supported only starting from version of Elasticsearch **7.16.x**.\n"},"field":{"type":"string","description":"The field to use for grok expression parsing\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"patternDefinitions":{"type":"object","additionalProperties":{"type":"string"},"description":"A map of pattern-name and pattern tuples defining custom patterns to be used by the current processor. Patterns matching existing names will override the pre-existing definition.\n"},"patterns":{"type":"array","items":{"type":"string"},"description":"An ordered list of grok expression to match and extract named captures with. Returns on the first expression in the list that matches.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"traceMatch":{"type":"boolean","description":"when true, `_ingest._grok_match_index` will be inserted into your matched document’s metadata with the index into the pattern found in \u003cspan pulumi-lang-nodejs=\"`patterns`\" pulumi-lang-dotnet=\"`Patterns`\" pulumi-lang-go=\"`patterns`\" pulumi-lang-python=\"`patterns`\" pulumi-lang-yaml=\"`patterns`\" pulumi-lang-java=\"`patterns`\"\u003e`patterns`\u003c/span\u003e that matched.\n"}},"type":"object","required":["field","patterns"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorGrok.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"ecsCompatibility":{"description":"Must be disabled or v1. If v1, the processor uses patterns with Elastic Common Schema (ECS) field names. **NOTE:** Supported only starting from version of Elasticsearch **7.16.x**.\n","type":"string"},"field":{"description":"The field to use for grok expression parsing\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"patternDefinitions":{"additionalProperties":{"type":"string"},"description":"A map of pattern-name and pattern tuples defining custom patterns to be used by the current processor. Patterns matching existing names will override the pre-existing definition.\n","type":"object"},"patterns":{"description":"An ordered list of grok expression to match and extract named captures with. Returns on the first expression in the list that matches.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"traceMatch":{"description":"when true, `_ingest._grok_match_index` will be inserted into your matched document’s metadata with the index into the pattern found in \u003cspan pulumi-lang-nodejs=\"`patterns`\" pulumi-lang-dotnet=\"`Patterns`\" pulumi-lang-go=\"`patterns`\" pulumi-lang-python=\"`patterns`\" pulumi-lang-yaml=\"`patterns`\" pulumi-lang-java=\"`patterns`\"\u003e`patterns`\u003c/span\u003e that matched.\n","type":"boolean"}},"required":["field","id","json","patterns"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorGsub:getElasticsearchIngestProcessorGsub":{"description":"Helper data source which can be used to create the configuration for a gsub processor. This processor converts a string field by applying a regular expression and a replacement. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/gsub-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst gsub = elasticstack.getElasticsearchIngestProcessorGsub({\n    field: \"field1\",\n    pattern: \"\\\\.\",\n    replacement: \"-\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"gsub-ingest\",\n    processors: [gsub.then(gsub =\u003e gsub.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ngsub = elasticstack.get_elasticsearch_ingest_processor_gsub(field=\"field1\",\n    pattern=\"\\\\.\",\n    replacement=\"-\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"gsub-ingest\",\n    processors=[gsub.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var gsub = Elasticstack.GetElasticsearchIngestProcessorGsub.Invoke(new()\n    {\n        Field = \"field1\",\n        Pattern = \"\\\\.\",\n        Replacement = \"-\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"gsub-ingest\",\n        Processors = new[]\n        {\n            gsub.Apply(getElasticsearchIngestProcessorGsubResult =\u003e getElasticsearchIngestProcessorGsubResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgsub, err := elasticstack.GetElasticsearchIngestProcessorGsub(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorGsubArgs{\n\t\t\tField:       \"field1\",\n\t\t\tPattern:     \"\\\\.\",\n\t\t\tReplacement: \"-\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"gsub-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(gsub.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorGsubArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var gsub = ElasticstackFunctions.getElasticsearchIngestProcessorGsub(GetElasticsearchIngestProcessorGsubArgs.builder()\n            .field(\"field1\")\n            .pattern(\"\\\\.\")\n            .replacement(\"-\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"gsub-ingest\")\n            .processors(gsub.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: gsub-ingest\n      processors:\n        - ${gsub.json}\nvariables:\n  gsub:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorGsub\n      arguments:\n        field: field1\n        pattern: \\.\n        replacement: '-'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorGsub.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to apply the replacement to.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"pattern":{"type":"string","description":"The pattern to be replaced.\n"},"replacement":{"type":"string","description":"The string to replace the matching patterns with.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n"}},"type":"object","required":["field","pattern","replacement"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorGsub.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to apply the replacement to.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"pattern":{"description":"The pattern to be replaced.\n","type":"string"},"replacement":{"description":"The string to replace the matching patterns with.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n","type":"string"}},"required":["field","id","json","pattern","replacement"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorHtmlStrip:getElasticsearchIngestProcessorHtmlStrip":{"description":"Helper data source which can be used to create the configuration for an HTML strip processor. This processor removes HTML tags from the field. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/htmlstrip-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst htmlStrip = elasticstack.getElasticsearchIngestProcessorHtmlStrip({\n    field: \"foo\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"strip-ingest\",\n    processors: [htmlStrip.then(htmlStrip =\u003e htmlStrip.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nhtml_strip = elasticstack.get_elasticsearch_ingest_processor_html_strip(field=\"foo\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"strip-ingest\",\n    processors=[html_strip.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var htmlStrip = Elasticstack.GetElasticsearchIngestProcessorHtmlStrip.Invoke(new()\n    {\n        Field = \"foo\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"strip-ingest\",\n        Processors = new[]\n        {\n            htmlStrip.Apply(getElasticsearchIngestProcessorHtmlStripResult =\u003e getElasticsearchIngestProcessorHtmlStripResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thtmlStrip, err := elasticstack.GetElasticsearchIngestProcessorHtmlStrip(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorHtmlStripArgs{\n\t\t\tField: \"foo\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"strip-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(htmlStrip.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorHtmlStripArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var htmlStrip = ElasticstackFunctions.getElasticsearchIngestProcessorHtmlStrip(GetElasticsearchIngestProcessorHtmlStripArgs.builder()\n            .field(\"foo\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"strip-ingest\")\n            .processors(htmlStrip.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: strip-ingest\n      processors:\n        - ${htmlStrip.json}\nvariables:\n  htmlStrip:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorHtmlStrip\n      arguments:\n        field: foo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorHtmlStrip.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to apply the replacement to.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorHtmlStrip.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to apply the replacement to.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorJoin:getElasticsearchIngestProcessorJoin":{"description":"Helper data source which can be used to create the configuration for a join processor. This processor joins each element of an array into a single string using a separator character between each element. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/join-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst join = elasticstack.getElasticsearchIngestProcessorJoin({\n    field: \"joined_array_field\",\n    separator: \"-\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"join-ingest\",\n    processors: [join.then(join =\u003e join.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\njoin = elasticstack.get_elasticsearch_ingest_processor_join(field=\"joined_array_field\",\n    separator=\"-\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"join-ingest\",\n    processors=[join.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @join = Elasticstack.GetElasticsearchIngestProcessorJoin.Invoke(new()\n    {\n        Field = \"joined_array_field\",\n        Separator = \"-\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"join-ingest\",\n        Processors = new[]\n        {\n            @join.Apply(@join =\u003e @join.Apply(getElasticsearchIngestProcessorJoinResult =\u003e getElasticsearchIngestProcessorJoinResult.Json)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tjoin, err := elasticstack.GetElasticsearchIngestProcessorJoin(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorJoinArgs{\n\t\t\tField:     \"joined_array_field\",\n\t\t\tSeparator: \"-\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"join-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(join.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorJoinArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var join = ElasticstackFunctions.getElasticsearchIngestProcessorJoin(GetElasticsearchIngestProcessorJoinArgs.builder()\n            .field(\"joined_array_field\")\n            .separator(\"-\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"join-ingest\")\n            .processors(join.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: join-ingest\n      processors:\n        - ${join.json}\nvariables:\n  join:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorJoin\n      arguments:\n        field: joined_array_field\n        separator: '-'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorJoin.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"Field containing array values to join.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"separator":{"type":"string","description":"The separator character.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n"}},"type":"object","required":["field","separator"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorJoin.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"Field containing array values to join.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"separator":{"description":"The separator character.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n","type":"string"}},"required":["field","id","json","separator"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorJson:getElasticsearchIngestProcessorJson":{"description":"Helper data source which can be used to create the configuration for a JSON processor. This processor converts a JSON string into a structured JSON object. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/json-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst jsonProc = elasticstack.getElasticsearchIngestProcessorJson({\n    field: \"string_source\",\n    targetField: \"json_target\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"json-ingest\",\n    processors: [jsonProc.then(jsonProc =\u003e jsonProc.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\njson_proc = elasticstack.get_elasticsearch_ingest_processor_json(field=\"string_source\",\n    target_field=\"json_target\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"json-ingest\",\n    processors=[json_proc.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var jsonProc = Elasticstack.GetElasticsearchIngestProcessorJson.Invoke(new()\n    {\n        Field = \"string_source\",\n        TargetField = \"json_target\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"json-ingest\",\n        Processors = new[]\n        {\n            jsonProc.Apply(getElasticsearchIngestProcessorJsonResult =\u003e getElasticsearchIngestProcessorJsonResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tjsonProc, err := elasticstack.GetElasticsearchIngestProcessorJson(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorJsonArgs{\n\t\t\tField:       \"string_source\",\n\t\t\tTargetField: pulumi.StringRef(\"json_target\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"json-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(jsonProc.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorJsonArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var jsonProc = ElasticstackFunctions.getElasticsearchIngestProcessorJson(GetElasticsearchIngestProcessorJsonArgs.builder()\n            .field(\"string_source\")\n            .targetField(\"json_target\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"json-ingest\")\n            .processors(jsonProc.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: json-ingest\n      processors:\n        - ${jsonProc.json}\nvariables:\n  jsonProc:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorJson\n      arguments:\n        field: string_source\n        targetField: json_target\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorJson.\n","properties":{"addToRoot":{"type":"boolean","description":"Flag that forces the parsed JSON to be added at the top level of the document. \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e must not be set when this option is chosen.\n"},"addToRootConflictStrategy":{"type":"string","description":"When set to \u003cspan pulumi-lang-nodejs=\"`replace`\" pulumi-lang-dotnet=\"`Replace`\" pulumi-lang-go=\"`replace`\" pulumi-lang-python=\"`replace`\" pulumi-lang-yaml=\"`replace`\" pulumi-lang-java=\"`replace`\"\u003e`replace`\u003c/span\u003e, root fields that conflict with fields from the parsed JSON will be overridden. When set to \u003cspan pulumi-lang-nodejs=\"`merge`\" pulumi-lang-dotnet=\"`Merge`\" pulumi-lang-go=\"`merge`\" pulumi-lang-python=\"`merge`\" pulumi-lang-yaml=\"`merge`\" pulumi-lang-java=\"`merge`\"\u003e`merge`\u003c/span\u003e, conflicting fields will be merged. Only applicable if \u003cspan pulumi-lang-nodejs=\"`addToRoot`\" pulumi-lang-dotnet=\"`AddToRoot`\" pulumi-lang-go=\"`addToRoot`\" pulumi-lang-python=\"`add_to_root`\" pulumi-lang-yaml=\"`addToRoot`\" pulumi-lang-java=\"`addToRoot`\"\u003e`add_to_root`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n"},"allowDuplicateKeys":{"type":"boolean","description":"When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the JSON parser will not fail if the JSON contains duplicate keys. Instead, the last encountered value for any duplicate key wins.\n"},"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to be parsed.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field that the converted structured object will be written into. Any existing content in this field will be overwritten.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorJson.\n","properties":{"addToRoot":{"description":"Flag that forces the parsed JSON to be added at the top level of the document. \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e must not be set when this option is chosen.\n","type":"boolean"},"addToRootConflictStrategy":{"description":"When set to \u003cspan pulumi-lang-nodejs=\"`replace`\" pulumi-lang-dotnet=\"`Replace`\" pulumi-lang-go=\"`replace`\" pulumi-lang-python=\"`replace`\" pulumi-lang-yaml=\"`replace`\" pulumi-lang-java=\"`replace`\"\u003e`replace`\u003c/span\u003e, root fields that conflict with fields from the parsed JSON will be overridden. When set to \u003cspan pulumi-lang-nodejs=\"`merge`\" pulumi-lang-dotnet=\"`Merge`\" pulumi-lang-go=\"`merge`\" pulumi-lang-python=\"`merge`\" pulumi-lang-yaml=\"`merge`\" pulumi-lang-java=\"`merge`\"\u003e`merge`\u003c/span\u003e, conflicting fields will be merged. Only applicable if \u003cspan pulumi-lang-nodejs=\"`addToRoot`\" pulumi-lang-dotnet=\"`AddToRoot`\" pulumi-lang-go=\"`addToRoot`\" pulumi-lang-python=\"`add_to_root`\" pulumi-lang-yaml=\"`addToRoot`\" pulumi-lang-java=\"`addToRoot`\"\u003e`add_to_root`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n","type":"string"},"allowDuplicateKeys":{"description":"When set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the JSON parser will not fail if the JSON contains duplicate keys. Instead, the last encountered value for any duplicate key wins.\n","type":"boolean"},"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to be parsed.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field that the converted structured object will be written into. Any existing content in this field will be overwritten.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorKv:getElasticsearchIngestProcessorKv":{"description":"Helper data source which can be used to create the configuration for a KV processor. This processor helps automatically parse messages (or specific event fields) which are of the foo=bar variety. See the [KV processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/kv-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst kv = elasticstack.getElasticsearchIngestProcessorKv({\n    field: \"message\",\n    fieldSplit: \" \",\n    valueSplit: \"=\",\n    excludeKeys: [\"tags\"],\n    prefix: \"setting_\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"kv-ingest\",\n    processors: [kv.then(kv =\u003e kv.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nkv = elasticstack.get_elasticsearch_ingest_processor_kv(field=\"message\",\n    field_split=\" \",\n    value_split=\"=\",\n    exclude_keys=[\"tags\"],\n    prefix=\"setting_\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"kv-ingest\",\n    processors=[kv.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var kv = Elasticstack.GetElasticsearchIngestProcessorKv.Invoke(new()\n    {\n        Field = \"message\",\n        FieldSplit = \" \",\n        ValueSplit = \"=\",\n        ExcludeKeys = new[]\n        {\n            \"tags\",\n        },\n        Prefix = \"setting_\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"kv-ingest\",\n        Processors = new[]\n        {\n            kv.Apply(getElasticsearchIngestProcessorKvResult =\u003e getElasticsearchIngestProcessorKvResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkv, err := elasticstack.GetElasticsearchIngestProcessorKv(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorKvArgs{\n\t\t\tField:      \"message\",\n\t\t\tFieldSplit: \" \",\n\t\t\tValueSplit: \"=\",\n\t\t\tExcludeKeys: []string{\n\t\t\t\t\"tags\",\n\t\t\t},\n\t\t\tPrefix: pulumi.StringRef(\"setting_\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"kv-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(kv.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorKvArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var kv = ElasticstackFunctions.getElasticsearchIngestProcessorKv(GetElasticsearchIngestProcessorKvArgs.builder()\n            .field(\"message\")\n            .fieldSplit(\" \")\n            .valueSplit(\"=\")\n            .excludeKeys(\"tags\")\n            .prefix(\"setting_\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"kv-ingest\")\n            .processors(kv.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: kv-ingest\n      processors:\n        - ${kv.json}\nvariables:\n  kv:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorKv\n      arguments:\n        field: message\n        fieldSplit: ' '\n        valueSplit: =\n        excludeKeys:\n          - tags\n        prefix: setting_\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorKv.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"excludeKeys":{"type":"array","items":{"type":"string"},"description":"List of keys to exclude from document\n"},"field":{"type":"string","description":"The field to be parsed. Supports template snippets.\n"},"fieldSplit":{"type":"string","description":"Regex pattern to use for splitting key-value pairs.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"includeKeys":{"type":"array","items":{"type":"string"},"description":"List of keys to filter and insert into document. Defaults to including all keys\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"prefix":{"type":"string","description":"Prefix to be added to extracted keys.\n"},"stripBrackets":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e strip brackets `()`, `\u003c\u003e`, `[]` as well as quotes `'` and `\"` from extracted values.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to insert the extracted keys into. Defaults to the root of the document.\n"},"trimKey":{"type":"string","description":"String of characters to trim from extracted keys.\n"},"trimValue":{"type":"string","description":"String of characters to trim from extracted values.\n"},"valueSplit":{"type":"string","description":"Regex pattern to use for splitting the key from the value within a key-value pair.\n"}},"type":"object","required":["field","fieldSplit","valueSplit"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorKv.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"excludeKeys":{"description":"List of keys to exclude from document\n","items":{"type":"string"},"type":"array"},"field":{"description":"The field to be parsed. Supports template snippets.\n","type":"string"},"fieldSplit":{"description":"Regex pattern to use for splitting key-value pairs.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"includeKeys":{"description":"List of keys to filter and insert into document. Defaults to including all keys\n","items":{"type":"string"},"type":"array"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"prefix":{"description":"Prefix to be added to extracted keys.\n","type":"string"},"stripBrackets":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e strip brackets `()`, `\u003c\u003e`, `[]` as well as quotes `'` and `\"` from extracted values.\n","type":"boolean"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to insert the extracted keys into. Defaults to the root of the document.\n","type":"string"},"trimKey":{"description":"String of characters to trim from extracted keys.\n","type":"string"},"trimValue":{"description":"String of characters to trim from extracted values.\n","type":"string"},"valueSplit":{"description":"Regex pattern to use for splitting the key from the value within a key-value pair.\n","type":"string"}},"required":["field","fieldSplit","id","json","valueSplit"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorLowercase:getElasticsearchIngestProcessorLowercase":{"description":"Helper data source which can be used to create the configuration for a lowercase processor. This processor converts a string to its lowercase equivalent. If the field is an array of strings, all members of the array will be converted. See the [lowercase processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/lowercase-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst lowercase = elasticstack.getElasticsearchIngestProcessorLowercase({\n    field: \"foo\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"lowercase-ingest\",\n    processors: [lowercase.then(lowercase =\u003e lowercase.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nlowercase = elasticstack.get_elasticsearch_ingest_processor_lowercase(field=\"foo\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"lowercase-ingest\",\n    processors=[lowercase.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var lowercase = Elasticstack.GetElasticsearchIngestProcessorLowercase.Invoke(new()\n    {\n        Field = \"foo\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"lowercase-ingest\",\n        Processors = new[]\n        {\n            lowercase.Apply(getElasticsearchIngestProcessorLowercaseResult =\u003e getElasticsearchIngestProcessorLowercaseResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlowercase, err := elasticstack.GetElasticsearchIngestProcessorLowercase(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorLowercaseArgs{\n\t\t\tField: \"foo\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"lowercase-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(lowercase.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorLowercaseArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var lowercase = ElasticstackFunctions.getElasticsearchIngestProcessorLowercase(GetElasticsearchIngestProcessorLowercaseArgs.builder()\n            .field(\"foo\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"lowercase-ingest\")\n            .processors(lowercase.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: lowercase-ingest\n      processors:\n        - ${lowercase.json}\nvariables:\n  lowercase:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorLowercase\n      arguments:\n        field: foo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorLowercase.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to make lowercase.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorLowercase.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to make lowercase.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorNetworkDirection:getElasticsearchIngestProcessorNetworkDirection":{"description":"Helper data source which can be used to create the configuration for a network direction processor. This processor calculates the network direction given a source IP address, destination IP address, and a list of internal networks. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/network-direction-processor.html\n\nThe network direction processor reads IP addresses from Elastic Common Schema (ECS) fields by default. If you use the ECS, only the \u003cspan pulumi-lang-nodejs=\"`internalNetworks`\" pulumi-lang-dotnet=\"`InternalNetworks`\" pulumi-lang-go=\"`internalNetworks`\" pulumi-lang-python=\"`internal_networks`\" pulumi-lang-yaml=\"`internalNetworks`\" pulumi-lang-java=\"`internalNetworks`\"\u003e`internal_networks`\u003c/span\u003e option must be specified.\n\nOne of either \u003cspan pulumi-lang-nodejs=\"`internalNetworks`\" pulumi-lang-dotnet=\"`InternalNetworks`\" pulumi-lang-go=\"`internalNetworks`\" pulumi-lang-python=\"`internal_networks`\" pulumi-lang-yaml=\"`internalNetworks`\" pulumi-lang-java=\"`internalNetworks`\"\u003e`internal_networks`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`internalNetworksField`\" pulumi-lang-dotnet=\"`InternalNetworksField`\" pulumi-lang-go=\"`internalNetworksField`\" pulumi-lang-python=\"`internal_networks_field`\" pulumi-lang-yaml=\"`internalNetworksField`\" pulumi-lang-java=\"`internalNetworksField`\"\u003e`internal_networks_field`\u003c/span\u003e must be specified. If \u003cspan pulumi-lang-nodejs=\"`internalNetworksField`\" pulumi-lang-dotnet=\"`InternalNetworksField`\" pulumi-lang-go=\"`internalNetworksField`\" pulumi-lang-python=\"`internal_networks_field`\" pulumi-lang-yaml=\"`internalNetworksField`\" pulumi-lang-java=\"`internalNetworksField`\"\u003e`internal_networks_field`\u003c/span\u003e is specified, it follows the behavior specified by \u003cspan pulumi-lang-nodejs=\"`ignoreMissing`\" pulumi-lang-dotnet=\"`IgnoreMissing`\" pulumi-lang-go=\"`ignoreMissing`\" pulumi-lang-python=\"`ignore_missing`\" pulumi-lang-yaml=\"`ignoreMissing`\" pulumi-lang-java=\"`ignoreMissing`\"\u003e`ignore_missing`\u003c/span\u003e.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst networkDirection = elasticstack.getElasticsearchIngestProcessorNetworkDirection({\n    internalNetworks: [\"private\"],\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"network-direction-ingest\",\n    processors: [networkDirection.then(networkDirection =\u003e networkDirection.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nnetwork_direction = elasticstack.get_elasticsearch_ingest_processor_network_direction(internal_networks=[\"private\"])\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"network-direction-ingest\",\n    processors=[network_direction.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var networkDirection = Elasticstack.GetElasticsearchIngestProcessorNetworkDirection.Invoke(new()\n    {\n        InternalNetworks = new[]\n        {\n            \"private\",\n        },\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"network-direction-ingest\",\n        Processors = new[]\n        {\n            networkDirection.Apply(getElasticsearchIngestProcessorNetworkDirectionResult =\u003e getElasticsearchIngestProcessorNetworkDirectionResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetworkDirection, err := elasticstack.GetElasticsearchIngestProcessorNetworkDirection(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorNetworkDirectionArgs{\n\t\t\tInternalNetworks: []string{\n\t\t\t\t\"private\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"network-direction-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(networkDirection.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorNetworkDirectionArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var networkDirection = ElasticstackFunctions.getElasticsearchIngestProcessorNetworkDirection(GetElasticsearchIngestProcessorNetworkDirectionArgs.builder()\n            .internalNetworks(\"private\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"network-direction-ingest\")\n            .processors(networkDirection.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: network-direction-ingest\n      processors:\n        - ${networkDirection.json}\nvariables:\n  networkDirection:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorNetworkDirection\n      arguments:\n        internalNetworks:\n          - private\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorNetworkDirection.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"destinationIp":{"type":"string","description":"Field containing the destination IP address.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"internalNetworks":{"type":"array","items":{"type":"string"},"description":"List of internal networks.\n"},"internalNetworksField":{"type":"string","description":"A field on the given document to read the\u003cspan pulumi-lang-nodejs=\" internalNetworks \" pulumi-lang-dotnet=\" InternalNetworks \" pulumi-lang-go=\" internalNetworks \" pulumi-lang-python=\" internal_networks \" pulumi-lang-yaml=\" internalNetworks \" pulumi-lang-java=\" internalNetworks \"\u003e internal_networks \u003c/span\u003econfiguration from.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"sourceIp":{"type":"string","description":"Field containing the source IP address.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"Output field for the network direction.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorNetworkDirection.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"destinationIp":{"description":"Field containing the destination IP address.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"internalNetworks":{"description":"List of internal networks.\n","items":{"type":"string"},"type":"array"},"internalNetworksField":{"description":"A field on the given document to read the\u003cspan pulumi-lang-nodejs=\" internalNetworks \" pulumi-lang-dotnet=\" InternalNetworks \" pulumi-lang-go=\" internalNetworks \" pulumi-lang-python=\" internal_networks \" pulumi-lang-yaml=\" internalNetworks \" pulumi-lang-java=\" internalNetworks \"\u003e internal_networks \u003c/span\u003econfiguration from.\n","type":"string"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"sourceIp":{"description":"Field containing the source IP address.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"Output field for the network direction.\n","type":"string"}},"required":["id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorPipeline:getElasticsearchIngestProcessorPipeline":{"description":"Helper data source which can be used to create the configuration for a pipeline processor. This processor executes another pipeline. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/pipeline-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst appendTags = elasticstack.getElasticsearchIngestProcessorAppend({\n    field: \"tags\",\n    values: [\n        \"production\",\n        \"{{{app}}}\",\n        \"{{{owner}}}\",\n    ],\n});\nconst pipelineA = new elasticstack.ElasticsearchIngestPipeline(\"pipeline_a\", {\n    name: \"pipeline_a\",\n    processors: [appendTags.then(appendTags =\u003e appendTags.json)],\n});\nconst fingerprint = elasticstack.getElasticsearchIngestProcessorFingerprint({\n    fields: [\"owner\"],\n});\n// use the above defined pipeline in our configuration\nconst pipeline = elasticstack.getElasticsearchIngestProcessorPipelineOutput({\n    name: pipelineA.name,\n});\nconst pipelineB = new elasticstack.ElasticsearchIngestPipeline(\"pipeline_b\", {\n    name: \"pipeline_b\",\n    processors: [\n        pipeline.apply(pipeline =\u003e pipeline.json),\n        fingerprint.then(fingerprint =\u003e fingerprint.json),\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nappend_tags = elasticstack.get_elasticsearch_ingest_processor_append(field=\"tags\",\n    values=[\n        \"production\",\n        \"{{{app}}}\",\n        \"{{{owner}}}\",\n    ])\npipeline_a = elasticstack.ElasticsearchIngestPipeline(\"pipeline_a\",\n    name=\"pipeline_a\",\n    processors=[append_tags.json])\nfingerprint = elasticstack.get_elasticsearch_ingest_processor_fingerprint(fields=[\"owner\"])\n# use the above defined pipeline in our configuration\npipeline = elasticstack.get_elasticsearch_ingest_processor_pipeline_output(name=pipeline_a.name)\npipeline_b = elasticstack.ElasticsearchIngestPipeline(\"pipeline_b\",\n    name=\"pipeline_b\",\n    processors=[\n        pipeline.json,\n        fingerprint.json,\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var appendTags = Elasticstack.GetElasticsearchIngestProcessorAppend.Invoke(new()\n    {\n        Field = \"tags\",\n        Values = new[]\n        {\n            \"production\",\n            \"{{{app}}}\",\n            \"{{{owner}}}\",\n        },\n    });\n\n    var pipelineA = new Elasticstack.ElasticsearchIngestPipeline(\"pipeline_a\", new()\n    {\n        Name = \"pipeline_a\",\n        Processors = new[]\n        {\n            appendTags.Apply(getElasticsearchIngestProcessorAppendResult =\u003e getElasticsearchIngestProcessorAppendResult.Json),\n        },\n    });\n\n    var fingerprint = Elasticstack.GetElasticsearchIngestProcessorFingerprint.Invoke(new()\n    {\n        Fields = new[]\n        {\n            \"owner\",\n        },\n    });\n\n    // use the above defined pipeline in our configuration\n    var pipeline = Elasticstack.GetElasticsearchIngestProcessorPipeline.Invoke(new()\n    {\n        Name = pipelineA.Name,\n    });\n\n    var pipelineB = new Elasticstack.ElasticsearchIngestPipeline(\"pipeline_b\", new()\n    {\n        Name = \"pipeline_b\",\n        Processors = new[]\n        {\n            pipeline.Apply(getElasticsearchIngestProcessorPipelineResult =\u003e getElasticsearchIngestProcessorPipelineResult.Json),\n            fingerprint.Apply(getElasticsearchIngestProcessorFingerprintResult =\u003e getElasticsearchIngestProcessorFingerprintResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tappendTags, err := elasticstack.GetElasticsearchIngestProcessorAppend(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorAppendArgs{\n\t\t\tField: \"tags\",\n\t\t\tValues: []string{\n\t\t\t\t\"production\",\n\t\t\t\t\"{{{app}}}\",\n\t\t\t\t\"{{{owner}}}\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpipelineA, err := elasticstack.NewElasticsearchIngestPipeline(ctx, \"pipeline_a\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"pipeline_a\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(appendTags.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfingerprint, err := elasticstack.GetElasticsearchIngestProcessorFingerprint(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorFingerprintArgs{\n\t\t\tFields: []string{\n\t\t\t\t\"owner\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// use the above defined pipeline in our configuration\n\t\tpipeline := elasticstack.GetElasticsearchIngestProcessorPipelineOutput(ctx, elasticstack.GetElasticsearchIngestProcessorPipelineOutputArgs{\n\t\t\tName: pipelineA.Name,\n\t\t}, nil)\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"pipeline_b\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"pipeline_b\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(pipeline.ApplyT(func(pipeline elasticstack.GetElasticsearchIngestProcessorPipelineResult) (*string, error) {\n\t\t\t\t\treturn \u0026pipeline.Json, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t\tpulumi.String(fingerprint.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorAppendArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorFingerprintArgs;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var appendTags = ElasticstackFunctions.getElasticsearchIngestProcessorAppend(GetElasticsearchIngestProcessorAppendArgs.builder()\n            .field(\"tags\")\n            .values(            \n                \"production\",\n                \"{{{app}}}\",\n                \"{{{owner}}}\")\n            .build());\n\n        var pipelineA = new ElasticsearchIngestPipeline(\"pipelineA\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"pipeline_a\")\n            .processors(appendTags.json())\n            .build());\n\n        final var fingerprint = ElasticstackFunctions.getElasticsearchIngestProcessorFingerprint(GetElasticsearchIngestProcessorFingerprintArgs.builder()\n            .fields(\"owner\")\n            .build());\n\n        // use the above defined pipeline in our configuration\n        final var pipeline = ElasticstackFunctions.getElasticsearchIngestProcessorPipeline(GetElasticsearchIngestProcessorPipelineArgs.builder()\n            .name(pipelineA.name())\n            .build());\n\n        var pipelineB = new ElasticsearchIngestPipeline(\"pipelineB\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"pipeline_b\")\n            .processors(            \n                pipeline.applyValue(_pipeline -\u003e _pipeline.json()),\n                fingerprint.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pipelineA:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: pipeline_a\n    properties:\n      name: pipeline_a\n      processors:\n        - ${appendTags.json}\n  pipelineB:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: pipeline_b\n    properties:\n      name: pipeline_b\n      processors:\n        - ${pipeline.json}\n        - ${fingerprint.json}\nvariables:\n  appendTags:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorAppend\n      arguments:\n        field: tags\n        values:\n          - production\n          - '{{{app}}}'\n          - '{{{owner}}}'\n  fingerprint:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorFingerprint\n      arguments:\n        fields:\n          - owner\n  # use the above defined pipeline in our configuration\n  pipeline:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorPipeline\n      arguments:\n        name: ${pipelineA.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorPipeline.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"name":{"type":"string","description":"The name of the pipeline to execute.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorPipeline.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"name":{"description":"The name of the pipeline to execute.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["id","json","name"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorRegisteredDomain:getElasticsearchIngestProcessorRegisteredDomain":{"description":"Helper data source which can be used to create the configuration for a registered domain processor. This processor extracts the registered domain (also known as the effective top-level domain or eTLD), sub-domain, and top-level domain from a fully qualified domain name (FQDN). See: https://www.elastic.co/guide/en/elasticsearch/reference/current/registered-domain-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst domain = elasticstack.getElasticsearchIngestProcessorRegisteredDomain({\n    field: \"fqdn\",\n    targetField: \"url\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"domain-ingest\",\n    processors: [domain.then(domain =\u003e domain.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndomain = elasticstack.get_elasticsearch_ingest_processor_registered_domain(field=\"fqdn\",\n    target_field=\"url\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"domain-ingest\",\n    processors=[domain.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var domain = Elasticstack.GetElasticsearchIngestProcessorRegisteredDomain.Invoke(new()\n    {\n        Field = \"fqdn\",\n        TargetField = \"url\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"domain-ingest\",\n        Processors = new[]\n        {\n            domain.Apply(getElasticsearchIngestProcessorRegisteredDomainResult =\u003e getElasticsearchIngestProcessorRegisteredDomainResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdomain, err := elasticstack.GetElasticsearchIngestProcessorRegisteredDomain(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorRegisteredDomainArgs{\n\t\t\tField:       \"fqdn\",\n\t\t\tTargetField: pulumi.StringRef(\"url\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"domain-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(domain.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorRegisteredDomainArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var domain = ElasticstackFunctions.getElasticsearchIngestProcessorRegisteredDomain(GetElasticsearchIngestProcessorRegisteredDomainArgs.builder()\n            .field(\"fqdn\")\n            .targetField(\"url\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"domain-ingest\")\n            .processors(domain.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: domain-ingest\n      processors:\n        - ${domain.json}\nvariables:\n  domain:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorRegisteredDomain\n      arguments:\n        field: fqdn\n        targetField: url\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorRegisteredDomain.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"Field containing the source FQDN.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"Object field containing extracted domain components. If an `\u003cempty string\u003e`, the processor adds components to the document’s root.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorRegisteredDomain.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"Field containing the source FQDN.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"Object field containing extracted domain components. If an `\u003cempty string\u003e`, the processor adds components to the document’s root.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorRemove:getElasticsearchIngestProcessorRemove":{"description":"Helper data source which can be used to create the configuration for a remove processor. This processor removes existing fields. See the [remove processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/remove-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst remove = elasticstack.getElasticsearchIngestProcessorRemove({\n    fields: [\n        \"user_agent\",\n        \"url\",\n    ],\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"remove-ingest\",\n    processors: [remove.then(remove =\u003e remove.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nremove = elasticstack.get_elasticsearch_ingest_processor_remove(fields=[\n    \"user_agent\",\n    \"url\",\n])\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"remove-ingest\",\n    processors=[remove.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @remove = Elasticstack.GetElasticsearchIngestProcessorRemove.Invoke(new()\n    {\n        Fields = new[]\n        {\n            \"user_agent\",\n            \"url\",\n        },\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"remove-ingest\",\n        Processors = new[]\n        {\n            @remove.Apply(@remove =\u003e @remove.Apply(getElasticsearchIngestProcessorRemoveResult =\u003e getElasticsearchIngestProcessorRemoveResult.Json)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tremove, err := elasticstack.GetElasticsearchIngestProcessorRemove(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorRemoveArgs{\n\t\t\tFields: []string{\n\t\t\t\t\"user_agent\",\n\t\t\t\t\"url\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"remove-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(remove.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorRemoveArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var remove = ElasticstackFunctions.getElasticsearchIngestProcessorRemove(GetElasticsearchIngestProcessorRemoveArgs.builder()\n            .fields(            \n                \"user_agent\",\n                \"url\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"remove-ingest\")\n            .processors(remove.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: remove-ingest\n      processors:\n        - ${remove.json}\nvariables:\n  remove:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorRemove\n      arguments:\n        fields:\n          - user_agent\n          - url\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorRemove.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"fields":{"type":"array","items":{"type":"string"},"description":"Fields to be removed.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object","required":["fields"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorRemove.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"fields":{"description":"Fields to be removed.\n","items":{"type":"string"},"type":"array"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["fields","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorRename:getElasticsearchIngestProcessorRename":{"description":"Helper data source which can be used to create the configuration for a rename processor. This processor renames an existing field. See the [rename processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/rename-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst rename = elasticstack.getElasticsearchIngestProcessorRename({\n    field: \"provider\",\n    targetField: \"cloud.provider\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"rename-ingest\",\n    processors: [rename.then(rename =\u003e rename.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nrename = elasticstack.get_elasticsearch_ingest_processor_rename(field=\"provider\",\n    target_field=\"cloud.provider\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"rename-ingest\",\n    processors=[rename.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rename = Elasticstack.GetElasticsearchIngestProcessorRename.Invoke(new()\n    {\n        Field = \"provider\",\n        TargetField = \"cloud.provider\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"rename-ingest\",\n        Processors = new[]\n        {\n            rename.Apply(getElasticsearchIngestProcessorRenameResult =\u003e getElasticsearchIngestProcessorRenameResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trename, err := elasticstack.GetElasticsearchIngestProcessorRename(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorRenameArgs{\n\t\t\tField:       \"provider\",\n\t\t\tTargetField: \"cloud.provider\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"rename-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(rename.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorRenameArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var rename = ElasticstackFunctions.getElasticsearchIngestProcessorRename(GetElasticsearchIngestProcessorRenameArgs.builder()\n            .field(\"provider\")\n            .targetField(\"cloud.provider\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"rename-ingest\")\n            .processors(rename.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: rename-ingest\n      processors:\n        - ${rename.json}\nvariables:\n  rename:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorRename\n      arguments:\n        field: provider\n        targetField: cloud.provider\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorRename.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to be renamed.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The new name of the field.\n"}},"type":"object","required":["field","targetField"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorRename.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to be renamed.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The new name of the field.\n","type":"string"}},"required":["field","id","json","targetField"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorReroute:getElasticsearchIngestProcessorReroute":{"description":"Helper data source which can be used to create the configuration for a reroute processor. This processor reroutes a document to a different data stream, index, or index alias. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/reroute-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst reroute = elasticstack.getElasticsearchIngestProcessorReroute({\n    destination: \"logs-generic-default\",\n    dataset: \"generic\",\n    namespace: \"default\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"reroute-ingest\",\n    processors: [reroute.then(reroute =\u003e reroute.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nreroute = elasticstack.get_elasticsearch_ingest_processor_reroute(destination=\"logs-generic-default\",\n    dataset=\"generic\",\n    namespace=\"default\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"reroute-ingest\",\n    processors=[reroute.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var reroute = Elasticstack.GetElasticsearchIngestProcessorReroute.Invoke(new()\n    {\n        Destination = \"logs-generic-default\",\n        Dataset = \"generic\",\n        Namespace = \"default\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"reroute-ingest\",\n        Processors = new[]\n        {\n            reroute.Apply(getElasticsearchIngestProcessorRerouteResult =\u003e getElasticsearchIngestProcessorRerouteResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\treroute, err := elasticstack.GetElasticsearchIngestProcessorReroute(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorRerouteArgs{\n\t\t\tDestination: pulumi.StringRef(\"logs-generic-default\"),\n\t\t\tDataset:     pulumi.StringRef(\"generic\"),\n\t\t\tNamespace:   pulumi.StringRef(\"default\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"reroute-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(reroute.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorRerouteArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var reroute = ElasticstackFunctions.getElasticsearchIngestProcessorReroute(GetElasticsearchIngestProcessorRerouteArgs.builder()\n            .destination(\"logs-generic-default\")\n            .dataset(\"generic\")\n            .namespace(\"default\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"reroute-ingest\")\n            .processors(reroute.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: reroute-ingest\n      processors:\n        - ${reroute.json}\nvariables:\n  reroute:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorReroute\n      arguments:\n        destination: logs-generic-default\n        dataset: generic\n        namespace: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorReroute.\n","properties":{"dataset":{"type":"string","description":"The destination dataset to route the document to.\n"},"description":{"type":"string","description":"Description of the processor.\n"},"destination":{"type":"string","description":"The destination data stream, index, or index alias to route the document to.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"namespace":{"type":"string","description":"The destination namespace to route the document to.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorReroute.\n","properties":{"dataset":{"description":"The destination dataset to route the document to.\n","type":"string"},"description":{"description":"Description of the processor.\n","type":"string"},"destination":{"description":"The destination data stream, index, or index alias to route the document to.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"namespace":{"description":"The destination namespace to route the document to.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorScript:getElasticsearchIngestProcessorScript":{"description":"Helper data source which can be used to create the configuration for a script processor. This processor runs an inline or stored script on incoming documents. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/script-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst script = elasticstack.getElasticsearchIngestProcessorScript({\n    description: \"Extract 'tags' from 'env' field\",\n    lang: \"painless\",\n    source: `String[] envSplit = ctx['env'].splitOnToken(params['delimiter']);\nArrayList tags = new ArrayList();\ntags.add(envSplit[params['position']].trim());\nctx['tags'] = tags;\n`,\n    params: JSON.stringify({\n        delimiter: \"-\",\n        position: 1,\n    }),\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"script-ingest\",\n    processors: [script.then(script =\u003e script.json)],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nscript = elasticstack.get_elasticsearch_ingest_processor_script(description=\"Extract 'tags' from 'env' field\",\n    lang=\"painless\",\n    source=\"\"\"String[] envSplit = ctx['env'].splitOnToken(params['delimiter']);\nArrayList tags = new ArrayList();\ntags.add(envSplit[params['position']].trim());\nctx['tags'] = tags;\n\"\"\",\n    params=json.dumps({\n        \"delimiter\": \"-\",\n        \"position\": 1,\n    }))\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"script-ingest\",\n    processors=[script.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var script = Elasticstack.GetElasticsearchIngestProcessorScript.Invoke(new()\n    {\n        Description = \"Extract 'tags' from 'env' field\",\n        Lang = \"painless\",\n        Source = @\"String[] envSplit = ctx['env'].splitOnToken(params['delimiter']);\nArrayList tags = new ArrayList();\ntags.add(envSplit[params['position']].trim());\nctx['tags'] = tags;\n\",\n        Params = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n        {\n            [\"delimiter\"] = \"-\",\n            [\"position\"] = 1,\n        }),\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"script-ingest\",\n        Processors = new[]\n        {\n            script.Apply(getElasticsearchIngestProcessorScriptResult =\u003e getElasticsearchIngestProcessorScriptResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"delimiter\": \"-\",\n\t\t\t\"position\":  1,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tscript, err := elasticstack.GetElasticsearchIngestProcessorScript(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorScriptArgs{\n\t\t\tDescription: pulumi.StringRef(\"Extract 'tags' from 'env' field\"),\n\t\t\tLang:        pulumi.StringRef(\"painless\"),\n\t\t\tSource:      pulumi.StringRef(\"String[] envSplit = ctx['env'].splitOnToken(params['delimiter']);\\nArrayList tags = new ArrayList();\\ntags.add(envSplit[params['position']].trim());\\nctx['tags'] = tags;\\n\"),\n\t\t\tParams:      pulumi.StringRef(json0),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"script-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(script.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorScriptArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var script = ElasticstackFunctions.getElasticsearchIngestProcessorScript(GetElasticsearchIngestProcessorScriptArgs.builder()\n            .description(\"Extract 'tags' from 'env' field\")\n            .lang(\"painless\")\n            .source(\"\"\"\nString[] envSplit = ctx['env'].splitOnToken(params['delimiter']);\nArrayList tags = new ArrayList();\ntags.add(envSplit[params['position']].trim());\nctx['tags'] = tags;\n            \"\"\")\n            .params(serializeJson(\n                jsonObject(\n                    jsonProperty(\"delimiter\", \"-\"),\n                    jsonProperty(\"position\", 1)\n                )))\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"script-ingest\")\n            .processors(script.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: script-ingest\n      processors:\n        - ${script.json}\nvariables:\n  script:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorScript\n      arguments:\n        description: Extract 'tags' from 'env' field\n        lang: painless\n        source: |\n          String[] envSplit = ctx['env'].splitOnToken(params['delimiter']);\n          ArrayList tags = new ArrayList();\n          tags.add(envSplit[params['position']].trim());\n          ctx['tags'] = tags;\n        params:\n          fn::toJSON:\n            delimiter: '-'\n            position: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorScript.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"lang":{"type":"string","description":"Script language.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"params":{"type":"string","description":"Object containing parameters for the script.\n"},"scriptId":{"type":"string","description":"ID of a stored script. If no \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e is specified, this parameter is required.\n"},"source":{"type":"string","description":"Inline script. If no id is specified, this parameter is required.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorScript.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"lang":{"description":"Script language.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"params":{"description":"Object containing parameters for the script.\n","type":"string"},"scriptId":{"description":"ID of a stored script. If no \u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e is specified, this parameter is required.\n","type":"string"},"source":{"description":"Inline script. If no id is specified, this parameter is required.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorSet:getElasticsearchIngestProcessorSet":{"description":"Helper data source which can be used to create the configuration for a set processor. This processor sets one field and associates it with the specified value. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/set-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst set = elasticstack.getElasticsearchIngestProcessorSet({\n    field: \"count\",\n    value: \"1\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"set-ingest\",\n    processors: [set.then(set =\u003e set.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nset = elasticstack.get_elasticsearch_ingest_processor_set(field=\"count\",\n    value=\"1\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"set-ingest\",\n    processors=[set.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @set = Elasticstack.GetElasticsearchIngestProcessorSet.Invoke(new()\n    {\n        Field = \"count\",\n        Value = \"1\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"set-ingest\",\n        Processors = new[]\n        {\n            @set.Apply(@set =\u003e @set.Apply(getElasticsearchIngestProcessorSetResult =\u003e getElasticsearchIngestProcessorSetResult.Json)),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tset, err := elasticstack.GetElasticsearchIngestProcessorSet(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorSetArgs{\n\t\t\tField: \"count\",\n\t\t\tValue: pulumi.StringRef(\"1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"set-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(set.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorSetArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var set = ElasticstackFunctions.getElasticsearchIngestProcessorSet(GetElasticsearchIngestProcessorSetArgs.builder()\n            .field(\"count\")\n            .value(\"1\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"set-ingest\")\n            .processors(set.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: set-ingest\n      processors:\n        - ${set.json}\nvariables:\n  set:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorSet\n      arguments:\n        field: count\n        value: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorSet.\n","properties":{"copyFrom":{"type":"string","description":"The origin field which will be copied to \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e, cannot set \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e simultaneously.\n"},"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to insert, upsert, or update.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreEmptyValue":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e is a template snippet that evaluates to \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e or the empty string, the processor quietly exits without modifying the document\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"mediaType":{"type":"string","description":"The media type for encoding value.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"override":{"type":"boolean","description":"If processor will update fields with pre-existing non-null-valued field.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"value":{"type":"string","description":"The value to be set for the field. Supports template snippets. May specify only one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorSet.\n","properties":{"copyFrom":{"description":"The origin field which will be copied to \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e, cannot set \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e simultaneously.\n","type":"string"},"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to insert, upsert, or update.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreEmptyValue":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e is a template snippet that evaluates to \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e or the empty string, the processor quietly exits without modifying the document\n","type":"boolean"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"mediaType":{"description":"The media type for encoding value.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"override":{"description":"If processor will update fields with pre-existing non-null-valued field.\n","type":"boolean"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"value":{"description":"The value to be set for the field. Supports template snippets. May specify only one of \u003cspan pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\"\u003e`value`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`copyFrom`\" pulumi-lang-dotnet=\"`CopyFrom`\" pulumi-lang-go=\"`copyFrom`\" pulumi-lang-python=\"`copy_from`\" pulumi-lang-yaml=\"`copyFrom`\" pulumi-lang-java=\"`copyFrom`\"\u003e`copy_from`\u003c/span\u003e.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorSetSecurityUser:getElasticsearchIngestProcessorSetSecurityUser":{"description":"Helper data source which can be used to create the configuration for a set security user processor. This processor sets user-related details (such as username, roles, email, full_name, metadata, api_key, realm and authentication_type) from the current authenticated user to the current document by pre-processing the ingest. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest-node-set-security-user-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst user = elasticstack.getElasticsearchIngestProcessorSetSecurityUser({\n    field: \"user\",\n    properties: [\n        \"username\",\n        \"realm\",\n    ],\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"user-ingest\",\n    processors: [user.then(user =\u003e user.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nuser = elasticstack.get_elasticsearch_ingest_processor_set_security_user(field=\"user\",\n    properties=[\n        \"username\",\n        \"realm\",\n    ])\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"user-ingest\",\n    processors=[user.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var user = Elasticstack.GetElasticsearchIngestProcessorSetSecurityUser.Invoke(new()\n    {\n        Field = \"user\",\n        Properties = new[]\n        {\n            \"username\",\n            \"realm\",\n        },\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"user-ingest\",\n        Processors = new[]\n        {\n            user.Apply(getElasticsearchIngestProcessorSetSecurityUserResult =\u003e getElasticsearchIngestProcessorSetSecurityUserResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuser, err := elasticstack.GetElasticsearchIngestProcessorSetSecurityUser(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorSetSecurityUserArgs{\n\t\t\tField: \"user\",\n\t\t\tProperties: []string{\n\t\t\t\t\"username\",\n\t\t\t\t\"realm\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"user-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(user.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorSetSecurityUserArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var user = ElasticstackFunctions.getElasticsearchIngestProcessorSetSecurityUser(GetElasticsearchIngestProcessorSetSecurityUserArgs.builder()\n            .field(\"user\")\n            .properties(            \n                \"username\",\n                \"realm\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"user-ingest\")\n            .processors(user.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: user-ingest\n      processors:\n        - ${user.json}\nvariables:\n  user:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorSetSecurityUser\n      arguments:\n        field: user\n        properties:\n          - username\n          - realm\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorSetSecurityUser.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to store the user information into.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"properties":{"type":"array","items":{"type":"string"},"description":"Controls what user related properties are added to the \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorSetSecurityUser.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to store the user information into.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"properties":{"description":"Controls what user related properties are added to the \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorSort:getElasticsearchIngestProcessorSort":{"description":"Helper data source which can be used to create the configuration for a sort processor. This processor sorts the elements of an array ascending or descending. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/sort-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst sort = elasticstack.getElasticsearchIngestProcessorSort({\n    field: \"array_field_to_sort\",\n    order: \"desc\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"sort-ingest\",\n    processors: [sort.then(sort =\u003e sort.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nsort = elasticstack.get_elasticsearch_ingest_processor_sort(field=\"array_field_to_sort\",\n    order=\"desc\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"sort-ingest\",\n    processors=[sort.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var sort = Elasticstack.GetElasticsearchIngestProcessorSort.Invoke(new()\n    {\n        Field = \"array_field_to_sort\",\n        Order = \"desc\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"sort-ingest\",\n        Processors = new[]\n        {\n            sort.Apply(getElasticsearchIngestProcessorSortResult =\u003e getElasticsearchIngestProcessorSortResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsort, err := elasticstack.GetElasticsearchIngestProcessorSort(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorSortArgs{\n\t\t\tField: \"array_field_to_sort\",\n\t\t\tOrder: pulumi.StringRef(\"desc\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"sort-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(sort.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorSortArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var sort = ElasticstackFunctions.getElasticsearchIngestProcessorSort(GetElasticsearchIngestProcessorSortArgs.builder()\n            .field(\"array_field_to_sort\")\n            .order(\"desc\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"sort-ingest\")\n            .processors(sort.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: sort-ingest\n      processors:\n        - ${sort.json}\nvariables:\n  sort:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorSort\n      arguments:\n        field: array_field_to_sort\n        order: desc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorSort.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to be sorted\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"order":{"type":"string","description":"The sort order to use. Accepts \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the sorted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorSort.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to be sorted\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"order":{"description":"The sort order to use. Accepts \u003cspan pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\"\u003e`asc`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\"\u003e`desc`\u003c/span\u003e.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the sorted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorSplit:getElasticsearchIngestProcessorSplit":{"description":"Helper data source which can be used to create the configuration for a split processor. This processor splits a field into an array using a separator character. See the [split processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/split-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst split = elasticstack.getElasticsearchIngestProcessorSplit({\n    field: \"my_field\",\n    separator: \"\\\\s+\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"split-ingest\",\n    processors: [split.then(split =\u003e split.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nsplit = elasticstack.get_elasticsearch_ingest_processor_split(field=\"my_field\",\n    separator=\"\\\\s+\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"split-ingest\",\n    processors=[split.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var split = Elasticstack.GetElasticsearchIngestProcessorSplit.Invoke(new()\n    {\n        Field = \"my_field\",\n        Separator = \"\\\\s+\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"split-ingest\",\n        Processors = new[]\n        {\n            split.Apply(getElasticsearchIngestProcessorSplitResult =\u003e getElasticsearchIngestProcessorSplitResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsplit, err := elasticstack.GetElasticsearchIngestProcessorSplit(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorSplitArgs{\n\t\t\tField:     \"my_field\",\n\t\t\tSeparator: \"\\\\s+\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"split-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(split.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorSplitArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var split = ElasticstackFunctions.getElasticsearchIngestProcessorSplit(GetElasticsearchIngestProcessorSplitArgs.builder()\n            .field(\"my_field\")\n            .separator(\"\\\\s+\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"split-ingest\")\n            .processors(split.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: split-ingest\n      processors:\n        - ${split.json}\nvariables:\n  split:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorSplit\n      arguments:\n        field: my_field\n        separator: \\s+\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorSplit.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to split\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"preserveTrailing":{"type":"boolean","description":"Preserves empty trailing fields, if any.\n"},"separator":{"type":"string","description":"A regex which matches the separator, eg `,` or `\\s+`\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n"}},"type":"object","required":["field","separator"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorSplit.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to split\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"preserveTrailing":{"description":"Preserves empty trailing fields, if any.\n","type":"boolean"},"separator":{"description":"A regex which matches the separator, eg `,` or `\\s+`\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n","type":"string"}},"required":["field","id","json","separator"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorTrim:getElasticsearchIngestProcessorTrim":{"description":"Helper data source which can be used to create the configuration for a trim processor. This processor trims whitespace from field. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/trim-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst trim = elasticstack.getElasticsearchIngestProcessorTrim({\n    field: \"foo\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"trim-ingest\",\n    processors: [trim.then(trim =\u003e trim.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntrim = elasticstack.get_elasticsearch_ingest_processor_trim(field=\"foo\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"trim-ingest\",\n    processors=[trim.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var trim = Elasticstack.GetElasticsearchIngestProcessorTrim.Invoke(new()\n    {\n        Field = \"foo\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"trim-ingest\",\n        Processors = new[]\n        {\n            trim.Apply(getElasticsearchIngestProcessorTrimResult =\u003e getElasticsearchIngestProcessorTrimResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttrim, err := elasticstack.GetElasticsearchIngestProcessorTrim(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorTrimArgs{\n\t\t\tField: \"foo\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"trim-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(trim.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorTrimArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var trim = ElasticstackFunctions.getElasticsearchIngestProcessorTrim(GetElasticsearchIngestProcessorTrimArgs.builder()\n            .field(\"foo\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"trim-ingest\")\n            .processors(trim.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: trim-ingest\n      processors:\n        - ${trim.json}\nvariables:\n  trim:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorTrim\n      arguments:\n        field: foo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorTrim.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The string-valued field to trim whitespace from.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the trimmed value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorTrim.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The string-valued field to trim whitespace from.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the trimmed value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorUppercase:getElasticsearchIngestProcessorUppercase":{"description":"Helper data source which can be used to create the configuration for an uppercase processor. This processor converts a string to its uppercase equivalent. If the field is an array of strings, all members of the array will be converted. See the [uppercase processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/uppercase-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst uppercase = elasticstack.getElasticsearchIngestProcessorUppercase({\n    field: \"foo\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"uppercase-ingest\",\n    processors: [uppercase.then(uppercase =\u003e uppercase.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nuppercase = elasticstack.get_elasticsearch_ingest_processor_uppercase(field=\"foo\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"uppercase-ingest\",\n    processors=[uppercase.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var uppercase = Elasticstack.GetElasticsearchIngestProcessorUppercase.Invoke(new()\n    {\n        Field = \"foo\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"uppercase-ingest\",\n        Processors = new[]\n        {\n            uppercase.Apply(getElasticsearchIngestProcessorUppercaseResult =\u003e getElasticsearchIngestProcessorUppercaseResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuppercase, err := elasticstack.GetElasticsearchIngestProcessorUppercase(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorUppercaseArgs{\n\t\t\tField: \"foo\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"uppercase-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(uppercase.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorUppercaseArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var uppercase = ElasticstackFunctions.getElasticsearchIngestProcessorUppercase(GetElasticsearchIngestProcessorUppercaseArgs.builder()\n            .field(\"foo\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"uppercase-ingest\")\n            .processors(uppercase.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: uppercase-ingest\n      processors:\n        - ${uppercase.json}\nvariables:\n  uppercase:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorUppercase\n      arguments:\n        field: foo\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorUppercase.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to make uppercase.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorUppercase.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to make uppercase.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorUriParts:getElasticsearchIngestProcessorUriParts":{"description":"Helper data source which can be used to create the configuration for a URI parts processor. This processor parses a Uniform Resource Identifier (URI) string and extracts its components as an object. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/uri-parts-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst parts = elasticstack.getElasticsearchIngestProcessorUriParts({\n    field: \"input_field\",\n    targetField: \"url\",\n    keepOriginal: true,\n    removeIfSuccessful: false,\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"parts-ingest\",\n    processors: [parts.then(parts =\u003e parts.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nparts = elasticstack.get_elasticsearch_ingest_processor_uri_parts(field=\"input_field\",\n    target_field=\"url\",\n    keep_original=True,\n    remove_if_successful=False)\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"parts-ingest\",\n    processors=[parts.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var parts = Elasticstack.GetElasticsearchIngestProcessorUriParts.Invoke(new()\n    {\n        Field = \"input_field\",\n        TargetField = \"url\",\n        KeepOriginal = true,\n        RemoveIfSuccessful = false,\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"parts-ingest\",\n        Processors = new[]\n        {\n            parts.Apply(getElasticsearchIngestProcessorUriPartsResult =\u003e getElasticsearchIngestProcessorUriPartsResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tparts, err := elasticstack.GetElasticsearchIngestProcessorUriParts(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorUriPartsArgs{\n\t\t\tField:              \"input_field\",\n\t\t\tTargetField:        pulumi.StringRef(\"url\"),\n\t\t\tKeepOriginal:       pulumi.BoolRef(true),\n\t\t\tRemoveIfSuccessful: pulumi.BoolRef(false),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"parts-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(parts.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorUriPartsArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var parts = ElasticstackFunctions.getElasticsearchIngestProcessorUriParts(GetElasticsearchIngestProcessorUriPartsArgs.builder()\n            .field(\"input_field\")\n            .targetField(\"url\")\n            .keepOriginal(true)\n            .removeIfSuccessful(false)\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"parts-ingest\")\n            .processors(parts.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: parts-ingest\n      processors:\n        - ${parts.json}\nvariables:\n  parts:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorUriParts\n      arguments:\n        field: input_field\n        targetField: url\n        keepOriginal: true\n        removeIfSuccessful: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorUriParts.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"Field containing the URI string.\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"keepOriginal":{"type":"boolean","description":"If true, the processor copies the unparsed URI to `\u003ctarget_field\u003e.original.`\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"removeIfSuccessful":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the processor removes the \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e after parsing the URI string. If parsing fails, the processor does not remove the \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"Output field for the URI object.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorUriParts.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"Field containing the URI string.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"keepOriginal":{"description":"If true, the processor copies the unparsed URI to `\u003ctarget_field\u003e.original.`\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"removeIfSuccessful":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e, the processor removes the \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e after parsing the URI string. If parsing fails, the processor does not remove the \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e.\n","type":"boolean"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"Output field for the URI object.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorUrldecode:getElasticsearchIngestProcessorUrldecode":{"description":"Helper data source which can be used to create the configuration for a URL-decode processor. This processor URL-decodes a string. See the [URL decode processor documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/urldecode-processor.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst urldecode = elasticstack.getElasticsearchIngestProcessorUrldecode({\n    field: \"my_url_to_decode\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"urldecode-ingest\",\n    processors: [urldecode.then(urldecode =\u003e urldecode.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nurldecode = elasticstack.get_elasticsearch_ingest_processor_urldecode(field=\"my_url_to_decode\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"urldecode-ingest\",\n    processors=[urldecode.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var urldecode = Elasticstack.GetElasticsearchIngestProcessorUrldecode.Invoke(new()\n    {\n        Field = \"my_url_to_decode\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"urldecode-ingest\",\n        Processors = new[]\n        {\n            urldecode.Apply(getElasticsearchIngestProcessorUrldecodeResult =\u003e getElasticsearchIngestProcessorUrldecodeResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\turldecode, err := elasticstack.GetElasticsearchIngestProcessorUrldecode(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorUrldecodeArgs{\n\t\t\tField: \"my_url_to_decode\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"urldecode-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(urldecode.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorUrldecodeArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var urldecode = ElasticstackFunctions.getElasticsearchIngestProcessorUrldecode(GetElasticsearchIngestProcessorUrldecodeArgs.builder()\n            .field(\"my_url_to_decode\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"urldecode-ingest\")\n            .processors(urldecode.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: urldecode-ingest\n      processors:\n        - ${urldecode.json}\nvariables:\n  urldecode:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorUrldecode\n      arguments:\n        field: my_url_to_decode\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorUrldecode.\n","properties":{"description":{"type":"string","description":"Description of the processor.\n"},"field":{"type":"string","description":"The field to decode\n"},"if":{"type":"string","description":"Conditionally execute the processor\n"},"ignoreFailure":{"type":"boolean","description":"Ignore failures for the processor.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"onFailures":{"type":"array","items":{"type":"string"},"description":"Handle failures for the processor.\n"},"tag":{"type":"string","description":"Identifier for the processor.\n"},"targetField":{"type":"string","description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorUrldecode.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to decode\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the converted value to, by default \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e is updated in-place.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorUserAgent:getElasticsearchIngestProcessorUserAgent":{"description":"Helper data source which can be used to create the configuration for a user agent processor. This processor extracts details from the user agent string a browser sends with its web requests. See: https://www.elastic.co/guide/en/elasticsearch/reference/current/user-agent-processor.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst agent = elasticstack.getElasticsearchIngestProcessorUserAgent({\n    field: \"agent\",\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"agent-ingest\",\n    processors: [agent.then(agent =\u003e agent.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nagent = elasticstack.get_elasticsearch_ingest_processor_user_agent(field=\"agent\")\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"agent-ingest\",\n    processors=[agent.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var agent = Elasticstack.GetElasticsearchIngestProcessorUserAgent.Invoke(new()\n    {\n        Field = \"agent\",\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"agent-ingest\",\n        Processors = new[]\n        {\n            agent.Apply(getElasticsearchIngestProcessorUserAgentResult =\u003e getElasticsearchIngestProcessorUserAgentResult.Json),\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := elasticstack.GetElasticsearchIngestProcessorUserAgent(ctx, \u0026elasticstack.GetElasticsearchIngestProcessorUserAgentArgs{\n\t\t\tField: \"agent\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchIngestPipeline(ctx, \"my_ingest_pipeline\", \u0026elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"agent-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(agent.Json),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorUserAgentArgs;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipeline;\nimport com.pulumi.elasticstack.ElasticsearchIngestPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var agent = ElasticstackFunctions.getElasticsearchIngestProcessorUserAgent(GetElasticsearchIngestProcessorUserAgentArgs.builder()\n            .field(\"agent\")\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"agent-ingest\")\n            .processors(agent.json())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myIngestPipeline:\n    type: elasticstack:ElasticsearchIngestPipeline\n    name: my_ingest_pipeline\n    properties:\n      name: agent-ingest\n      processors:\n        - ${agent.json}\nvariables:\n  agent:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorUserAgent\n      arguments:\n        field: agent\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorUserAgent.\n","properties":{"extractDeviceType":{"type":"boolean","description":"Extracts device type from the user agent string on a best-effort basis. Supported only starting from Elasticsearch version **8.0**\n"},"field":{"type":"string","description":"The field containing the user agent string.\n"},"ignoreMissing":{"type":"boolean","description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n"},"properties":{"type":"array","items":{"type":"string"},"description":"Controls what properties are added to \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e.\n"},"regexFile":{"type":"string","description":"The name of the file in the `config/ingest-user-agent` directory containing the regular expressions for parsing the user agent string.\n"},"targetField":{"type":"string","description":"The field that will be filled with the user agent details.\n"}},"type":"object","required":["field"]},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorUserAgent.\n","properties":{"extractDeviceType":{"description":"Extracts device type from the user agent string on a best-effort basis. Supported only starting from Elasticsearch version **8.0**\n","type":"boolean"},"field":{"description":"The field containing the user agent string.\n","type":"string"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"ignoreMissing":{"description":"If \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\"\u003e`field`\u003c/span\u003e does not exist or is \u003cspan pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\"\u003e`null`\u003c/span\u003e, the processor quietly exits without modifying the document.\n","type":"boolean"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"properties":{"description":"Controls what properties are added to \u003cspan pulumi-lang-nodejs=\"`targetField`\" pulumi-lang-dotnet=\"`TargetField`\" pulumi-lang-go=\"`targetField`\" pulumi-lang-python=\"`target_field`\" pulumi-lang-yaml=\"`targetField`\" pulumi-lang-java=\"`targetField`\"\u003e`target_field`\u003c/span\u003e.\n","items":{"type":"string"},"type":"array"},"regexFile":{"description":"The name of the file in the `config/ingest-user-agent` directory containing the regular expressions for parsing the user agent string.\n","type":"string"},"targetField":{"description":"The field that will be filled with the user agent details.\n","type":"string"}},"required":["field","id","json"],"type":"object"}},"elasticstack:index/getElasticsearchSecurityRole:getElasticsearchSecurityRole":{"description":"Retrieves roles in the native realm. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nexport = async () =\u003e {\n    const role = await elasticstack.getElasticsearchSecurityRole({\n        name: \"testrole\",\n    });\n    return {\n        role: role.name,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nrole = elasticstack.get_elasticsearch_security_role(name=\"testrole\")\npulumi.export(\"role\", role.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var role = Elasticstack.GetElasticsearchSecurityRole.Invoke(new()\n    {\n        Name = \"testrole\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"role\"] = role.Apply(getElasticsearchSecurityRoleResult =\u003e getElasticsearchSecurityRoleResult.Name),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\trole, err := elasticstack.LookupElasticsearchSecurityRole(ctx, \u0026elasticstack.LookupElasticsearchSecurityRoleArgs{\n\t\t\tName: \"testrole\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"role\", role.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchSecurityRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var role = ElasticstackFunctions.getElasticsearchSecurityRole(GetElasticsearchSecurityRoleArgs.builder()\n            .name(\"testrole\")\n            .build());\n\n        ctx.export(\"role\", role.name());\n    }\n}\n```\n```yaml\nvariables:\n  role:\n    fn::invoke:\n      function: elasticstack:getElasticsearchSecurityRole\n      arguments:\n        name: testrole\noutputs:\n  role: ${role.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSecurityRole.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleElasticsearchConnection:getElasticsearchSecurityRoleElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"name":{"type":"string","description":"The name of the role.\n"},"runAs":{"type":"array","items":{"type":"string"},"description":"A list of users that the owners of this role can impersonate.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getElasticsearchSecurityRole.\n","properties":{"applications":{"description":"A list of application privilege entries.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleApplication:getElasticsearchSecurityRoleApplication"},"type":"array"},"clusters":{"description":"A list of cluster privileges. These privileges define the cluster level actions that users with this role are able to execute.\n","items":{"type":"string"},"type":"array"},"description":{"description":"The description of the role.\n","type":"string"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleElasticsearchConnection:getElasticsearchSecurityRoleElasticsearchConnection","deprecationMessage":"Deprecated","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n"},"global":{"description":"An object defining global privileges.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"indices":{"description":"A list of indices permissions entries.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleIndex:getElasticsearchSecurityRoleIndex"},"type":"array"},"metadata":{"description":"Optional meta-data.\n","type":"string"},"name":{"description":"The name of the role.\n","type":"string"},"remoteIndices":{"description":"A list of remote indices permissions entries. Remote indices are effective for remote clusters configured with the API key based model. They have no effect for remote clusters configured with the certificate based model.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleRemoteIndex:getElasticsearchSecurityRoleRemoteIndex"},"type":"array"},"runAs":{"description":"A list of users that the owners of this role can impersonate.\n","items":{"type":"string"},"type":"array"}},"required":["applications","clusters","description","global","id","indices","metadata","name","remoteIndices"],"type":"object"}},"elasticstack:index/getElasticsearchSecurityRoleMapping:getElasticsearchSecurityRoleMapping":{"description":"Retrieves role mappings. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-role-mapping.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst mapping = elasticstack.getElasticsearchSecurityRoleMapping({\n    name: \"my_mapping\",\n});\nexport const user = mapping.then(mapping =\u003e mapping.name);\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmapping = elasticstack.get_elasticsearch_security_role_mapping(name=\"my_mapping\")\npulumi.export(\"user\", mapping.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var mapping = Elasticstack.GetElasticsearchSecurityRoleMapping.Invoke(new()\n    {\n        Name = \"my_mapping\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"user\"] = mapping.Apply(getElasticsearchSecurityRoleMappingResult =\u003e getElasticsearchSecurityRoleMappingResult.Name),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmapping, err := elasticstack.LookupElasticsearchSecurityRoleMapping(ctx, \u0026elasticstack.LookupElasticsearchSecurityRoleMappingArgs{\n\t\t\tName: \"my_mapping\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"user\", mapping.Name)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchSecurityRoleMappingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var mapping = ElasticstackFunctions.getElasticsearchSecurityRoleMapping(GetElasticsearchSecurityRoleMappingArgs.builder()\n            .name(\"my_mapping\")\n            .build());\n\n        ctx.export(\"user\", mapping.name());\n    }\n}\n```\n```yaml\nvariables:\n  mapping:\n    fn::invoke:\n      function: elasticstack:getElasticsearchSecurityRoleMapping\n      arguments:\n        name: my_mapping\noutputs:\n  user: ${mapping.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSecurityRoleMapping.\n","properties":{"elasticsearchConnections":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleMappingElasticsearchConnection:getElasticsearchSecurityRoleMappingElasticsearchConnection"},"description":"Elasticsearch connection configuration block.\n","deprecationMessage":"Deprecated"},"name":{"type":"string","description":"The distinct name that identifies the role mapping, used solely as an identifier.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getElasticsearchSecurityRoleMapping.\n","properties":{"elasticsearchConnections":{"deprecationMessage":"Deprecated","description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleMappingElasticsearchConnection:getElasticsearchSecurityRoleMappingElasticsearchConnection"},"type":"array"},"enabled":{"description":"Mappings that have \u003cspan pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\"\u003e`enabled`\u003c/span\u003e set to \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e are ignored when role mapping is performed.\n","type":"boolean"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"metadata":{"description":"Additional metadata that helps define which roles are assigned to each user. Keys beginning with `_` are reserved for system usage.\n","type":"string"},"name":{"description":"The distinct name that identifies the role mapping, used solely as an identifier.\n","type":"string"},"roleTemplates":{"description":"A list of mustache templates that will be evaluated to determine the roles names that should granted to the users that match the role mapping rules.\n","type":"string"},"roles":{"description":"A list of role names that are granted to the users that match the role mapping rules.\n","items":{"type":"string"},"type":"array"},"rules":{"description":"The rules that determine which users should be matched by the mapping. A rule is a logical condition that is expressed by using a JSON DSL.\n","type":"string"}},"required":["enabled","id","metadata","name","roleTemplates","roles","rules"],"type":"object"}},"elasticstack:index/getElasticsearchSecurityUser:getElasticsearchSecurityUser":{"description":"Get the information about the user in the ES cluster. See the [security API get user documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-user.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nexport = async () =\u003e {\n    const user = await elasticstack.getElasticsearchSecurityUser({\n        username: \"elastic\",\n    });\n    return {\n        user: user,\n    };\n}\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nuser = elasticstack.get_elasticsearch_security_user(username=\"elastic\")\npulumi.export(\"user\", user)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var user = Elasticstack.GetElasticsearchSecurityUser.Invoke(new()\n    {\n        Username = \"elastic\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"user\"] = user,\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tuser, err := elasticstack.LookupElasticsearchSecurityUser(ctx, \u0026elasticstack.LookupElasticsearchSecurityUserArgs{\n\t\t\tUsername: \"elastic\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"user\", user)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchSecurityUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var user = ElasticstackFunctions.getElasticsearchSecurityUser(GetElasticsearchSecurityUserArgs.builder()\n            .username(\"elastic\")\n            .build());\n\n        ctx.export(\"user\", user);\n    }\n}\n```\n```yaml\nvariables:\n  user:\n    fn::invoke:\n      function: elasticstack:getElasticsearchSecurityUser\n      arguments:\n        username: elastic\noutputs:\n  user: ${user}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSecurityUser.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityUserElasticsearchConnection:getElasticsearchSecurityUserElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"username":{"type":"string","description":"An identifier for the user\n"}},"type":"object","required":["username"]},"outputs":{"description":"A collection of values returned by getElasticsearchSecurityUser.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityUserElasticsearchConnection:getElasticsearchSecurityUserElasticsearchConnection","deprecationMessage":"Deprecated","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n"},"email":{"description":"The email of the user.\n","type":"string"},"enabled":{"description":"Specifies whether the user is enabled. The default value is true.\n","type":"boolean"},"fullName":{"description":"The full name of the user.\n","type":"string"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"metadata":{"description":"Arbitrary metadata that you want to associate with the user.\n","type":"string"},"roles":{"description":"A set of roles the user has. The roles determine the user’s access permissions. Default is [].\n","items":{"type":"string"},"type":"array"},"username":{"description":"An identifier for the user\n","type":"string"}},"required":["email","enabled","fullName","id","metadata","roles","username"],"type":"object"}},"elasticstack:index/getElasticsearchSnapshotRepository:getElasticsearchSnapshotRepository":{"description":"Gets information about the registered snapshot repositories.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myUrlRepoElasticsearchSnapshotRepository = new elasticstack.ElasticsearchSnapshotRepository(\"my_url_repo\", {\n    name: \"my_url_repo\",\n    url: {\n        url: \"https://example.com/repo\",\n    },\n});\nconst myFsRepoElasticsearchSnapshotRepository = new elasticstack.ElasticsearchSnapshotRepository(\"my_fs_repo\", {\n    name: \"my_fs_repo\",\n    fs: {\n        location: \"/tmp\",\n        compress: true,\n        maxRestoreBytesPerSec: \"10mb\",\n    },\n});\nconst myFsRepo = elasticstack.getElasticsearchSnapshotRepositoryOutput({\n    name: myFsRepoElasticsearchSnapshotRepository.name,\n});\nconst myUrlRepo = elasticstack.getElasticsearchSnapshotRepositoryOutput({\n    name: myUrlRepoElasticsearchSnapshotRepository.name,\n});\nexport const repoFsLocation = myFsRepo.apply(myFsRepo =\u003e myFsRepo.fs?.[0]?.location);\nexport const repoUrl = myUrlRepo.apply(myUrlRepo =\u003e myUrlRepo.urls?.[0]?.url);\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmy_url_repo_elasticsearch_snapshot_repository = elasticstack.ElasticsearchSnapshotRepository(\"my_url_repo\",\n    name=\"my_url_repo\",\n    url={\n        \"url\": \"https://example.com/repo\",\n    })\nmy_fs_repo_elasticsearch_snapshot_repository = elasticstack.ElasticsearchSnapshotRepository(\"my_fs_repo\",\n    name=\"my_fs_repo\",\n    fs={\n        \"location\": \"/tmp\",\n        \"compress\": True,\n        \"max_restore_bytes_per_sec\": \"10mb\",\n    })\nmy_fs_repo = elasticstack.get_elasticsearch_snapshot_repository_output(name=my_fs_repo_elasticsearch_snapshot_repository.name)\nmy_url_repo = elasticstack.get_elasticsearch_snapshot_repository_output(name=my_url_repo_elasticsearch_snapshot_repository.name)\npulumi.export(\"repoFsLocation\", my_fs_repo.fs[0].location)\npulumi.export(\"repoUrl\", my_url_repo.urls[0].url)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myUrlRepoElasticsearchSnapshotRepository = new Elasticstack.ElasticsearchSnapshotRepository(\"my_url_repo\", new()\n    {\n        Name = \"my_url_repo\",\n        Url = new Elasticstack.Inputs.ElasticsearchSnapshotRepositoryUrlArgs\n        {\n            Url = \"https://example.com/repo\",\n        },\n    });\n\n    var myFsRepoElasticsearchSnapshotRepository = new Elasticstack.ElasticsearchSnapshotRepository(\"my_fs_repo\", new()\n    {\n        Name = \"my_fs_repo\",\n        Fs = new Elasticstack.Inputs.ElasticsearchSnapshotRepositoryFsArgs\n        {\n            Location = \"/tmp\",\n            Compress = true,\n            MaxRestoreBytesPerSec = \"10mb\",\n        },\n    });\n\n    var myFsRepo = Elasticstack.GetElasticsearchSnapshotRepository.Invoke(new()\n    {\n        Name = myFsRepoElasticsearchSnapshotRepository.Name,\n    });\n\n    var myUrlRepo = Elasticstack.GetElasticsearchSnapshotRepository.Invoke(new()\n    {\n        Name = myUrlRepoElasticsearchSnapshotRepository.Name,\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"repoFsLocation\"] = myFsRepo.Apply(getElasticsearchSnapshotRepositoryResult =\u003e getElasticsearchSnapshotRepositoryResult.Fs[0]?.Location),\n        [\"repoUrl\"] = myUrlRepo.Apply(getElasticsearchSnapshotRepositoryResult =\u003e getElasticsearchSnapshotRepositoryResult.Urls[0]?.Url),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyUrlRepoElasticsearchSnapshotRepository, err := elasticstack.NewElasticsearchSnapshotRepository(ctx, \"my_url_repo\", \u0026elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_url_repo\"),\n\t\t\tUrl: \u0026elasticstack.ElasticsearchSnapshotRepositoryUrlArgs{\n\t\t\t\tUrl: pulumi.String(\"https://example.com/repo\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyFsRepoElasticsearchSnapshotRepository, err := elasticstack.NewElasticsearchSnapshotRepository(ctx, \"my_fs_repo\", \u0026elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_fs_repo\"),\n\t\t\tFs: \u0026elasticstack.ElasticsearchSnapshotRepositoryFsArgs{\n\t\t\t\tLocation:              pulumi.String(\"/tmp\"),\n\t\t\t\tCompress:              pulumi.Bool(true),\n\t\t\t\tMaxRestoreBytesPerSec: pulumi.String(\"10mb\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyFsRepo := elasticstack.LookupElasticsearchSnapshotRepositoryOutput(ctx, elasticstack.GetElasticsearchSnapshotRepositoryOutputArgs{\n\t\t\tName: myFsRepoElasticsearchSnapshotRepository.Name,\n\t\t}, nil)\n\t\tmyUrlRepo := elasticstack.LookupElasticsearchSnapshotRepositoryOutput(ctx, elasticstack.GetElasticsearchSnapshotRepositoryOutputArgs{\n\t\t\tName: myUrlRepoElasticsearchSnapshotRepository.Name,\n\t\t}, nil)\n\t\tctx.Export(\"repoFsLocation\", myFsRepo.ApplyT(func(myFsRepo elasticstack.GetElasticsearchSnapshotRepositoryResult) (*string, error) {\n\t\t\treturn \u0026myFsRepo.Fs[0].Location, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"repoUrl\", myUrlRepo.ApplyT(func(myUrlRepo elasticstack.GetElasticsearchSnapshotRepositoryResult) (*string, error) {\n\t\t\treturn \u0026myUrlRepo.Urls[0].Url, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticsearchSnapshotRepository;\nimport com.pulumi.elasticstack.ElasticsearchSnapshotRepositoryArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSnapshotRepositoryUrlArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSnapshotRepositoryFsArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchSnapshotRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var myUrlRepoElasticsearchSnapshotRepository = new ElasticsearchSnapshotRepository(\"myUrlRepoElasticsearchSnapshotRepository\", ElasticsearchSnapshotRepositoryArgs.builder()\n            .name(\"my_url_repo\")\n            .url(ElasticsearchSnapshotRepositoryUrlArgs.builder()\n                .url(\"https://example.com/repo\")\n                .build())\n            .build());\n\n        var myFsRepoElasticsearchSnapshotRepository = new ElasticsearchSnapshotRepository(\"myFsRepoElasticsearchSnapshotRepository\", ElasticsearchSnapshotRepositoryArgs.builder()\n            .name(\"my_fs_repo\")\n            .fs(ElasticsearchSnapshotRepositoryFsArgs.builder()\n                .location(\"/tmp\")\n                .compress(true)\n                .maxRestoreBytesPerSec(\"10mb\")\n                .build())\n            .build());\n\n        final var myFsRepo = ElasticstackFunctions.getElasticsearchSnapshotRepository(GetElasticsearchSnapshotRepositoryArgs.builder()\n            .name(myFsRepoElasticsearchSnapshotRepository.name())\n            .build());\n\n        final var myUrlRepo = ElasticstackFunctions.getElasticsearchSnapshotRepository(GetElasticsearchSnapshotRepositoryArgs.builder()\n            .name(myUrlRepoElasticsearchSnapshotRepository.name())\n            .build());\n\n        ctx.export(\"repoFsLocation\", myFsRepo.applyValue(_myFsRepo -\u003e _myFsRepo.fs()[0].location()));\n        ctx.export(\"repoUrl\", myUrlRepo.applyValue(_myUrlRepo -\u003e _myUrlRepo.urls()[0].url()));\n    }\n}\n```\n```yaml\nresources:\n  myUrlRepoElasticsearchSnapshotRepository:\n    type: elasticstack:ElasticsearchSnapshotRepository\n    name: my_url_repo\n    properties:\n      name: my_url_repo\n      url:\n        url: https://example.com/repo\n  myFsRepoElasticsearchSnapshotRepository:\n    type: elasticstack:ElasticsearchSnapshotRepository\n    name: my_fs_repo\n    properties:\n      name: my_fs_repo\n      fs:\n        location: /tmp\n        compress: true\n        maxRestoreBytesPerSec: 10mb\nvariables:\n  myFsRepo:\n    fn::invoke:\n      function: elasticstack:getElasticsearchSnapshotRepository\n      arguments:\n        name: ${myFsRepoElasticsearchSnapshotRepository.name}\n  myUrlRepo:\n    fn::invoke:\n      function: elasticstack:getElasticsearchSnapshotRepository\n      arguments:\n        name: ${myUrlRepoElasticsearchSnapshotRepository.name}\noutputs:\n  repoFsLocation: ${myFsRepo.fs[0].location}\n  repoUrl: ${myUrlRepo.urls[0].url}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSnapshotRepository.\n","properties":{"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryElasticsearchConnection:getElasticsearchSnapshotRepositoryElasticsearchConnection","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n","deprecationMessage":"Deprecated"},"name":{"type":"string","description":"Name of the snapshot repository.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getElasticsearchSnapshotRepository.\n","properties":{"azures":{"description":"Azure Blob storage as a repository. Set only if the type of the fetched repo is \u003cspan pulumi-lang-nodejs=\"`azure`\" pulumi-lang-dotnet=\"`Azure`\" pulumi-lang-go=\"`azure`\" pulumi-lang-python=\"`azure`\" pulumi-lang-yaml=\"`azure`\" pulumi-lang-java=\"`azure`\"\u003e`azure`\u003c/span\u003e.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryAzure:getElasticsearchSnapshotRepositoryAzure"},"type":"array"},"elasticsearchConnection":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryElasticsearchConnection:getElasticsearchSnapshotRepositoryElasticsearchConnection","deprecationMessage":"Deprecated","description":"Elasticsearch connection configuration block. This property will be removed in a future provider version. Configure the Elasticsearch connection via the provider configuration instead.\n"},"fs":{"description":"Shared filesystem repository. Set only if the type of the fetched repo is \u003cspan pulumi-lang-nodejs=\"`fs`\" pulumi-lang-dotnet=\"`Fs`\" pulumi-lang-go=\"`fs`\" pulumi-lang-python=\"`fs`\" pulumi-lang-yaml=\"`fs`\" pulumi-lang-java=\"`fs`\"\u003e`fs`\u003c/span\u003e.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryF:getElasticsearchSnapshotRepositoryF"},"type":"array"},"gcs":{"description":"Google Cloud Storage service as a repository. Set only if the type of the fetched repo is \u003cspan pulumi-lang-nodejs=\"`gcs`\" pulumi-lang-dotnet=\"`Gcs`\" pulumi-lang-go=\"`gcs`\" pulumi-lang-python=\"`gcs`\" pulumi-lang-yaml=\"`gcs`\" pulumi-lang-java=\"`gcs`\"\u003e`gcs`\u003c/span\u003e.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryGc:getElasticsearchSnapshotRepositoryGc"},"type":"array"},"hdfs":{"description":"HDFS File System as a repository. Set only if the type of the fetched repo is \u003cspan pulumi-lang-nodejs=\"`hdfs`\" pulumi-lang-dotnet=\"`Hdfs`\" pulumi-lang-go=\"`hdfs`\" pulumi-lang-python=\"`hdfs`\" pulumi-lang-yaml=\"`hdfs`\" pulumi-lang-java=\"`hdfs`\"\u003e`hdfs`\u003c/span\u003e.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryHdf:getElasticsearchSnapshotRepositoryHdf"},"type":"array"},"id":{"description":"Internal identifier of the resource\n","type":"string"},"name":{"description":"Name of the snapshot repository.\n","type":"string"},"s3s":{"description":"AWS S3 as a repository. Set only if the type of the fetched repo is \u003cspan pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\"\u003e`s3`\u003c/span\u003e.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryS3:getElasticsearchSnapshotRepositoryS3"},"type":"array"},"type":{"description":"Repository type.\n","type":"string"},"urls":{"description":"URL repository. Set only if the type of the fetched repo is \u003cspan pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\"\u003e`url`\u003c/span\u003e.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryUrl:getElasticsearchSnapshotRepositoryUrl"},"type":"array"}},"required":["azures","fs","gcs","hdfs","id","name","s3s","type","urls"],"type":"object"}},"elasticstack:index/getFleetEnrollmentTokens:getFleetEnrollmentTokens":{"description":"Retrieves Elasticsearch API keys used to enroll Elastic Agents in Fleet. See the [Fleet enrollment tokens documentation](https://www.elastic.co/guide/en/fleet/current/fleet-enrollment-tokens.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst test = elasticstack.getFleetEnrollmentTokens({\n    policyId: \"223b1bf8-240f-463f-8466-5062670d0754\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntest = elasticstack.get_fleet_enrollment_tokens(policy_id=\"223b1bf8-240f-463f-8466-5062670d0754\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Elasticstack.GetFleetEnrollmentTokens.Invoke(new()\n    {\n        PolicyId = \"223b1bf8-240f-463f-8466-5062670d0754\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.GetFleetEnrollmentTokens(ctx, \u0026elasticstack.GetFleetEnrollmentTokensArgs{\n\t\t\tPolicyId: pulumi.StringRef(\"223b1bf8-240f-463f-8466-5062670d0754\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetFleetEnrollmentTokensArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = ElasticstackFunctions.getFleetEnrollmentTokens(GetFleetEnrollmentTokensArgs.builder()\n            .policyId(\"223b1bf8-240f-463f-8466-5062670d0754\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: elasticstack:getFleetEnrollmentTokens\n      arguments:\n        policyId: 223b1bf8-240f-463f-8466-5062670d0754\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFleetEnrollmentTokens.\n","properties":{"policyId":{"type":"string","description":"The identifier of the target agent policy. When provided, only the enrollment tokens associated with this agent policy will be selected. Omit this value to select all enrollment tokens.\n"},"spaceId":{"type":"string","description":"The Kibana space ID to query enrollment tokens from. When the agent policy is space-scoped, this must be set to match the policy's space. If not specified, queries the default space.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFleetEnrollmentTokens.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"policyId":{"description":"The identifier of the target agent policy. When provided, only the enrollment tokens associated with this agent policy will be selected. Omit this value to select all enrollment tokens.\n","type":"string"},"spaceId":{"description":"The Kibana space ID to query enrollment tokens from. When the agent policy is space-scoped, this must be set to match the policy's space. If not specified, queries the default space.\n","type":"string"},"tokens":{"description":"A list of enrollment tokens.\n","items":{"$ref":"#/types/elasticstack:index%2FgetFleetEnrollmentTokensToken:getFleetEnrollmentTokensToken"},"type":"array"}},"required":["id","tokens"],"type":"object"}},"elasticstack:index/getFleetIntegration:getFleetIntegration":{"description":"This data source provides information about a Fleet integration package. Currently,\nthe data source will retrieve the latest available version of the package. Version\nselection is determined by the Fleet API, which is currently based on semantic\nversioning.\n\nBy default, the highest GA release version will be selected. If a\npackage is not GA (the version is below 1.0.0) or if a new non-GA version of the\npackage is to be selected (i.e., the GA version of the package is 1.5.0, but there's\na new 1.5.1-beta version available), then the \u003cspan pulumi-lang-nodejs=\"`prerelease`\" pulumi-lang-dotnet=\"`Prerelease`\" pulumi-lang-go=\"`prerelease`\" pulumi-lang-python=\"`prerelease`\" pulumi-lang-yaml=\"`prerelease`\" pulumi-lang-java=\"`prerelease`\"\u003e`prerelease`\u003c/span\u003e parameter in the plan\nshould be set to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst test = elasticstack.getFleetIntegration({\n    name: \"tcp\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ntest = elasticstack.get_fleet_integration(name=\"tcp\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var test = Elasticstack.GetFleetIntegration.Invoke(new()\n    {\n        Name = \"tcp\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.LookupFleetIntegration(ctx, \u0026elasticstack.LookupFleetIntegrationArgs{\n\t\t\tName: \"tcp\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetFleetIntegrationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var test = ElasticstackFunctions.getFleetIntegration(GetFleetIntegrationArgs.builder()\n            .name(\"tcp\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  test:\n    fn::invoke:\n      function: elasticstack:getFleetIntegration\n      arguments:\n        name: tcp\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getFleetIntegration.\n","properties":{"name":{"type":"string","description":"The integration package name.\n"},"prerelease":{"type":"boolean","description":"Include prerelease packages.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getFleetIntegration.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"name":{"description":"The integration package name.\n","type":"string"},"prerelease":{"description":"Include prerelease packages.\n","type":"boolean"},"version":{"description":"The integration package version.\n","type":"string"}},"required":["id","name","version"],"type":"object"}},"elasticstack:index/getKibanaActionConnector:getKibanaActionConnector":{"description":"Search for a connector by name, space id, and type. Note, that this data source will fail if more than one connector shares the same name.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = elasticstack.getKibanaActionConnector({\n    name: \"myslackconnector\",\n    spaceId: \"default\",\n    connectorTypeId: \".slack\",\n});\nexport const connectorId = example.then(example =\u003e example.connectorId);\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.get_kibana_action_connector(name=\"myslackconnector\",\n    space_id=\"default\",\n    connector_type_id=\".slack\")\npulumi.export(\"connectorId\", example.connector_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Elasticstack.GetKibanaActionConnector.Invoke(new()\n    {\n        Name = \"myslackconnector\",\n        SpaceId = \"default\",\n        ConnectorTypeId = \".slack\",\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"connectorId\"] = example.Apply(getKibanaActionConnectorResult =\u003e getKibanaActionConnectorResult.ConnectorId),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticstack.LookupKibanaActionConnector(ctx, \u0026elasticstack.LookupKibanaActionConnectorArgs{\n\t\t\tName:            \"myslackconnector\",\n\t\t\tSpaceId:         pulumi.StringRef(\"default\"),\n\t\t\tConnectorTypeId: pulumi.StringRef(\".slack\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"connectorId\", example.ConnectorId)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetKibanaActionConnectorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ElasticstackFunctions.getKibanaActionConnector(GetKibanaActionConnectorArgs.builder()\n            .name(\"myslackconnector\")\n            .spaceId(\"default\")\n            .connectorTypeId(\".slack\")\n            .build());\n\n        ctx.export(\"connectorId\", example.connectorId());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: elasticstack:getKibanaActionConnector\n      arguments:\n        name: myslackconnector\n        spaceId: default\n        connectorTypeId: .slack\noutputs:\n  connectorId: ${example.connectorId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKibanaActionConnector.\n","properties":{"connectorTypeId":{"type":"string","description":"The ID of the connector type, e.g. `.index`.\n"},"id":{"type":"string","description":"The ID of this resource.\n"},"name":{"type":"string","description":"The name of the connector. While this name does not have to be unique, a distinctive name can help you identify a connector.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getKibanaActionConnector.\n","properties":{"config":{"description":"The configuration for the connector. Configuration properties vary depending on the connector type.\n","type":"string"},"connectorId":{"description":"A UUID v1 or v4 randomly generated ID.\n","type":"string"},"connectorTypeId":{"description":"The ID of the connector type, e.g. `.index`.\n","type":"string"},"id":{"description":"The ID of this resource.\n","type":"string"},"isDeprecated":{"description":"Indicates whether the connector type is deprecated.\n","type":"boolean"},"isMissingSecrets":{"description":"Indicates whether secrets are missing for the connector.\n","type":"boolean"},"isPreconfigured":{"description":"Indicates whether it is a preconfigured connector.\n","type":"boolean"},"name":{"description":"The name of the connector. While this name does not have to be unique, a distinctive name can help you identify a connector.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n","type":"string"}},"required":["config","connectorId","id","isDeprecated","isMissingSecrets","isPreconfigured","name"],"type":"object"}},"elasticstack:index/getKibanaExportSavedObjects:getKibanaExportSavedObjects":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = elasticstack.getKibanaExportSavedObjects({\n    excludeExportDetails: true,\n    includeReferencesDeep: true,\n    objects: [{\n        type: \"dashboard\",\n        id: \"7c5f07ee-7e41-4d50-ae1f-dfe54cc87209\",\n    }],\n});\nexport const savedObjects = example.then(example =\u003e example.exportedObjects);\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.get_kibana_export_saved_objects(exclude_export_details=True,\n    include_references_deep=True,\n    objects=[{\n        \"type\": \"dashboard\",\n        \"id\": \"7c5f07ee-7e41-4d50-ae1f-dfe54cc87209\",\n    }])\npulumi.export(\"savedObjects\", example.exported_objects)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Elasticstack.GetKibanaExportSavedObjects.Invoke(new()\n    {\n        ExcludeExportDetails = true,\n        IncludeReferencesDeep = true,\n        Objects = new[]\n        {\n            new Elasticstack.Inputs.GetKibanaExportSavedObjectsObjectInputArgs\n            {\n                Type = \"dashboard\",\n                Id = \"7c5f07ee-7e41-4d50-ae1f-dfe54cc87209\",\n            },\n        },\n    });\n\n    return new Dictionary\u003cstring, object?\u003e\n    {\n        [\"savedObjects\"] = example.Apply(getKibanaExportSavedObjectsResult =\u003e getKibanaExportSavedObjectsResult.ExportedObjects),\n    };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := elasticstack.GetKibanaExportSavedObjects(ctx, \u0026elasticstack.GetKibanaExportSavedObjectsArgs{\n\t\t\tExcludeExportDetails:  pulumi.BoolRef(true),\n\t\t\tIncludeReferencesDeep: pulumi.BoolRef(true),\n\t\t\tObjects: []elasticstack.GetKibanaExportSavedObjectsObject{\n\t\t\t\t{\n\t\t\t\t\tType: \"dashboard\",\n\t\t\t\t\tId:   \"7c5f07ee-7e41-4d50-ae1f-dfe54cc87209\",\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"savedObjects\", example.ExportedObjects)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetKibanaExportSavedObjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ElasticstackFunctions.getKibanaExportSavedObjects(GetKibanaExportSavedObjectsArgs.builder()\n            .excludeExportDetails(true)\n            .includeReferencesDeep(true)\n            .objects(GetKibanaExportSavedObjectsObjectArgs.builder()\n                .type(\"dashboard\")\n                .id(\"7c5f07ee-7e41-4d50-ae1f-dfe54cc87209\")\n                .build())\n            .build());\n\n        ctx.export(\"savedObjects\", example.exportedObjects());\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: elasticstack:getKibanaExportSavedObjects\n      arguments:\n        excludeExportDetails: true\n        includeReferencesDeep: true\n        objects:\n          - type: dashboard\n            id: 7c5f07ee-7e41-4d50-ae1f-dfe54cc87209\noutputs:\n  savedObjects: ${example.exportedObjects}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKibanaExportSavedObjects.\n","properties":{"excludeExportDetails":{"type":"boolean","description":"Do not add export details. Defaults to true.\n"},"includeReferencesDeep":{"type":"boolean","description":"Include references to other saved objects recursively. Defaults to true.\n"},"objects":{"type":"array","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaExportSavedObjectsObject:getKibanaExportSavedObjectsObject"},"description":"List of objects to export.\n"},"spaceId":{"type":"string","description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n"}},"type":"object","required":["objects"]},"outputs":{"description":"A collection of values returned by getKibanaExportSavedObjects.\n","properties":{"excludeExportDetails":{"description":"Do not add export details. Defaults to true.\n","type":"boolean"},"exportedObjects":{"description":"The exported objects in NDJSON format.\n","type":"string"},"id":{"description":"Generated ID for the export.\n","type":"string"},"includeReferencesDeep":{"description":"Include references to other saved objects recursively. Defaults to true.\n","type":"boolean"},"objects":{"description":"List of objects to export.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaExportSavedObjectsObject:getKibanaExportSavedObjectsObject"},"type":"array"},"spaceId":{"description":"An identifier for the space. If\u003cspan pulumi-lang-nodejs=\" spaceId \" pulumi-lang-dotnet=\" SpaceId \" pulumi-lang-go=\" spaceId \" pulumi-lang-python=\" space_id \" pulumi-lang-yaml=\" spaceId \" pulumi-lang-java=\" spaceId \"\u003e space_id \u003c/span\u003eis not provided, the default space is used.\n","type":"string"}},"required":["exportedObjects","id","objects"],"type":"object"}},"elasticstack:index/getKibanaSecurityRole:getKibanaSecurityRole":{"description":"Retrieve a specific role. See the [role management API documentation](https://www.elastic.co/guide/en/kibana/current/role-management-specific-api-get.html) for more details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = elasticstack.getKibanaSecurityRole({\n    name: \"sample_role\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.get_kibana_security_role(name=\"sample_role\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var example = Elasticstack.GetKibanaSecurityRole.Invoke(new()\n    {\n        Name = \"sample_role\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.LookupKibanaSecurityRole(ctx, \u0026elasticstack.LookupKibanaSecurityRoleArgs{\n\t\t\tName: \"sample_role\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetKibanaSecurityRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var example = ElasticstackFunctions.getKibanaSecurityRole(GetKibanaSecurityRoleArgs.builder()\n            .name(\"sample_role\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  example:\n    fn::invoke:\n      function: elasticstack:getKibanaSecurityRole\n      arguments:\n        name: sample_role\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getKibanaSecurityRole.\n","properties":{"description":{"type":"string","description":"Description for the role\n"},"id":{"type":"string","description":"The ID of this resource.\n"},"metadata":{"type":"string","description":"Optional meta-data.\n"},"name":{"type":"string","description":"The name for the role.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getKibanaSecurityRole.\n","properties":{"description":{"description":"Description for the role\n","type":"string"},"elasticsearches":{"description":"Elasticsearch cluster and index privileges.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearch:getKibanaSecurityRoleElasticsearch"},"type":"array"},"id":{"description":"The ID of this resource.\n","type":"string"},"kibanas":{"description":"The list of objects that specify the Kibana privileges for the role.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleKibana:getKibanaSecurityRoleKibana"},"type":"array"},"metadata":{"description":"Optional meta-data.\n","type":"string"},"name":{"description":"The name for the role.\n","type":"string"}},"required":["elasticsearches","id","kibanas","metadata","name"],"type":"object"}},"elasticstack:index/getKibanaSpaces:getKibanaSpaces":{"description":"Use this data source to retrieve and get information about all existing Kibana spaces. See https://www.elastic.co/guide/en/kibana/master/spaces-api-get-all.html\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst allSpaces = elasticstack.getKibanaSpaces({});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nall_spaces = elasticstack.get_kibana_spaces()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var allSpaces = Elasticstack.GetKibanaSpaces.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/elasticstack/elasticstack\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := elasticstack.GetKibanaSpaces(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var allSpaces = ElasticstackFunctions.getKibanaSpaces(%!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference);\n\n    }\n}\n```\n```yaml\nvariables:\n  allSpaces:\n    fn::invoke:\n      function: elasticstack:getKibanaSpaces\n      arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getKibanaSpaces.\n","properties":{"id":{"description":"Generated ID for the spaces.\n","type":"string"},"spaces":{"description":"The list of spaces.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSpacesSpace:getKibanaSpacesSpace"},"type":"array"}},"required":["id","spaces"],"type":"object"}},"pulumi:providers:elasticstack/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"$ref":"#/resources/pulumi:providers:elasticstack"}},"type":"object","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}},"parameterization":{"baseProvider":{"name":"terraform-provider","version":"1.0.1"},"parameter":"eyJyZW1vdGUiOnsidXJsIjoicmVnaXN0cnkub3BlbnRvZnUub3JnL2VsYXN0aWMvZWxhc3RpY3N0YWNrIiwidmVyc2lvbiI6IjAuMTQuMiJ9fQ=="}}