{"attribution":"This Pulumi package is based on the [`elasticstack` Terraform Provider](https://github.com/elastic/terraform-provider-elasticstack).","config":{"variables":{"elasticsearches":{"description":"Elasticsearch connection configuration block.","items":{"$ref":"#/types/elasticstack:config%2Felasticsearches:elasticsearches"},"type":"array"},"fleets":{"description":"Fleet connection configuration block.","items":{"$ref":"#/types/elasticstack:config%2Ffleets:fleets"},"type":"array"},"kibanas":{"description":"Kibana connection configuration block.","items":{"$ref":"#/types/elasticstack:config%2Fkibanas:kibanas"},"type":"array"}}},"description":"A Pulumi provider dynamically bridged from elasticstack.","functions":{"elasticstack:index/getElasticsearchConnector:getElasticsearchConnector":{"description":"Reads an Elasticsearch content connector by <span pulumi-lang-nodejs=\"`connectorId`\" pulumi-lang-dotnet=\"`ConnectorId`\" pulumi-lang-go=\"`connectorId`\" pulumi-lang-python=\"`connector_id`\" pulumi-lang-yaml=\"`connectorId`\" pulumi-lang-java=\"`connectorId`\">`connector_id`</span> via `GET /_connector/{connector_id}`. Requires Elasticsearch **8.16.0** or later (the connector APIs are GA from 8.12.0, but the request body shapes the provider sends only stabilized in 8.16.0).\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst postgres = new elasticstack.ElasticsearchConnector(\"postgres\", {\n    connectorId: \"music-catalog\",\n    serviceType: \"postgresql\",\n    name: \"music catalog\",\n    description: \"Indexes the music catalog database.\",\n    indexName: \"search-music\",\n    language: \"english\",\n    pipeline: {\n        name: \"search-default-ingestion\",\n        extractBinaryContent: false,\n        reduceWhitespace: true,\n        runMlInference: false,\n    },\n    scheduling: {\n        full: {\n            enabled: true,\n            interval: \"0 0 * * * ?\",\n        },\n        incremental: {\n            enabled: false,\n            interval: \"0 0 0 * * ?\",\n        },\n        accessControl: {\n            enabled: false,\n            interval: \"0 0 0 * * ?\",\n        },\n    },\n    features: {\n        syncRules: {\n            basic: {\n                enabled: true,\n            },\n            advanced: {\n                enabled: false,\n            },\n        },\n        documentLevelSecurity: {\n            enabled: false,\n        },\n        incrementalSync: {\n            enabled: false,\n        },\n        nativeConnectorApiKeys: {\n            enabled: false,\n        },\n    },\n});\nconst lookup = elasticstack.getElasticsearchConnectorOutput({\n    connectorId: postgres.connectorId,\n});\nexport const connectorStatus = lookup.apply(lookup => lookup.status);\nexport const connectorConfiguration = lookup.apply(lookup => lookup.configuration);\nexport const connectorLastSynced = lookup.apply(lookup => lookup.lastSynced);\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\npostgres = elasticstack.ElasticsearchConnector(\"postgres\",\n    connector_id=\"music-catalog\",\n    service_type=\"postgresql\",\n    name=\"music catalog\",\n    description=\"Indexes the music catalog database.\",\n    index_name=\"search-music\",\n    language=\"english\",\n    pipeline={\n        \"name\": \"search-default-ingestion\",\n        \"extract_binary_content\": False,\n        \"reduce_whitespace\": True,\n        \"run_ml_inference\": False,\n    },\n    scheduling={\n        \"full\": {\n            \"enabled\": True,\n            \"interval\": \"0 0 * * * ?\",\n        },\n        \"incremental\": {\n            \"enabled\": False,\n            \"interval\": \"0 0 0 * * ?\",\n        },\n        \"access_control\": {\n            \"enabled\": False,\n            \"interval\": \"0 0 0 * * ?\",\n        },\n    },\n    features={\n        \"sync_rules\": {\n            \"basic\": {\n                \"enabled\": True,\n            },\n            \"advanced\": {\n                \"enabled\": False,\n            },\n        },\n        \"document_level_security\": {\n            \"enabled\": False,\n        },\n        \"incremental_sync\": {\n            \"enabled\": False,\n        },\n        \"native_connector_api_keys\": {\n            \"enabled\": False,\n        },\n    })\nlookup = elasticstack.get_elasticsearch_connector_output(connector_id=postgres.connector_id)\npulumi.export(\"connectorStatus\", lookup.status)\npulumi.export(\"connectorConfiguration\", lookup.configuration)\npulumi.export(\"connectorLastSynced\", lookup.last_synced)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var postgres = new Elasticstack.ElasticsearchConnector(\"postgres\", new()\n    {\n        ConnectorId = \"music-catalog\",\n        ServiceType = \"postgresql\",\n        Name = \"music catalog\",\n        Description = \"Indexes the music catalog database.\",\n        IndexName = \"search-music\",\n        Language = \"english\",\n        Pipeline = new Elasticstack.Inputs.ElasticsearchConnectorPipelineArgs\n        {\n            Name = \"search-default-ingestion\",\n            ExtractBinaryContent = false,\n            ReduceWhitespace = true,\n            RunMlInference = false,\n        },\n        Scheduling = new Elasticstack.Inputs.ElasticsearchConnectorSchedulingArgs\n        {\n            Full = new Elasticstack.Inputs.ElasticsearchConnectorSchedulingFullArgs\n            {\n                Enabled = true,\n                Interval = \"0 0 * * * ?\",\n            },\n            Incremental = new Elasticstack.Inputs.ElasticsearchConnectorSchedulingIncrementalArgs\n            {\n                Enabled = false,\n                Interval = \"0 0 0 * * ?\",\n            },\n            AccessControl = new Elasticstack.Inputs.ElasticsearchConnectorSchedulingAccessControlArgs\n            {\n                Enabled = false,\n                Interval = \"0 0 0 * * ?\",\n            },\n        },\n        Features = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesArgs\n        {\n            SyncRules = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesSyncRulesArgs\n            {\n                Basic = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesSyncRulesBasicArgs\n                {\n                    Enabled = true,\n                },\n                Advanced = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesSyncRulesAdvancedArgs\n                {\n                    Enabled = false,\n                },\n            },\n            DocumentLevelSecurity = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesDocumentLevelSecurityArgs\n            {\n                Enabled = false,\n            },\n            IncrementalSync = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesIncrementalSyncArgs\n            {\n                Enabled = false,\n            },\n            NativeConnectorApiKeys = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesNativeConnectorApiKeysArgs\n            {\n                Enabled = false,\n            },\n        },\n    });\n\n    var lookup = Elasticstack.GetElasticsearchConnector.Invoke(new()\n    {\n        ConnectorId = postgres.ConnectorId,\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"connectorStatus\"] = lookup.Apply(getElasticsearchConnectorResult => getElasticsearchConnectorResult.Status),\n        [\"connectorConfiguration\"] = lookup.Apply(getElasticsearchConnectorResult => getElasticsearchConnectorResult.Configuration),\n        [\"connectorLastSynced\"] = lookup.Apply(getElasticsearchConnectorResult => getElasticsearchConnectorResult.LastSynced),\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\tpostgres, err := elasticstack.NewElasticsearchConnector(ctx, \"postgres\", &elasticstack.ElasticsearchConnectorArgs{\n\t\t\tConnectorId: pulumi.String(\"music-catalog\"),\n\t\t\tServiceType: pulumi.String(\"postgresql\"),\n\t\t\tName:        pulumi.String(\"music catalog\"),\n\t\t\tDescription: pulumi.String(\"Indexes the music catalog database.\"),\n\t\t\tIndexName:   pulumi.String(\"search-music\"),\n\t\t\tLanguage:    pulumi.String(\"english\"),\n\t\t\tPipeline: &elasticstack.ElasticsearchConnectorPipelineArgs{\n\t\t\t\tName:                 pulumi.String(\"search-default-ingestion\"),\n\t\t\t\tExtractBinaryContent: pulumi.Bool(false),\n\t\t\t\tReduceWhitespace:     pulumi.Bool(true),\n\t\t\t\tRunMlInference:       pulumi.Bool(false),\n\t\t\t},\n\t\t\tScheduling: &elasticstack.ElasticsearchConnectorSchedulingArgs{\n\t\t\t\tFull: &elasticstack.ElasticsearchConnectorSchedulingFullArgs{\n\t\t\t\t\tEnabled:  pulumi.Bool(true),\n\t\t\t\t\tInterval: pulumi.String(\"0 0 * * * ?\"),\n\t\t\t\t},\n\t\t\t\tIncremental: &elasticstack.ElasticsearchConnectorSchedulingIncrementalArgs{\n\t\t\t\t\tEnabled:  pulumi.Bool(false),\n\t\t\t\t\tInterval: pulumi.String(\"0 0 0 * * ?\"),\n\t\t\t\t},\n\t\t\t\tAccessControl: &elasticstack.ElasticsearchConnectorSchedulingAccessControlArgs{\n\t\t\t\t\tEnabled:  pulumi.Bool(false),\n\t\t\t\t\tInterval: pulumi.String(\"0 0 0 * * ?\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFeatures: &elasticstack.ElasticsearchConnectorFeaturesArgs{\n\t\t\t\tSyncRules: &elasticstack.ElasticsearchConnectorFeaturesSyncRulesArgs{\n\t\t\t\t\tBasic: &elasticstack.ElasticsearchConnectorFeaturesSyncRulesBasicArgs{\n\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tAdvanced: &elasticstack.ElasticsearchConnectorFeaturesSyncRulesAdvancedArgs{\n\t\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDocumentLevelSecurity: &elasticstack.ElasticsearchConnectorFeaturesDocumentLevelSecurityArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tIncrementalSync: &elasticstack.ElasticsearchConnectorFeaturesIncrementalSyncArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tNativeConnectorApiKeys: &elasticstack.ElasticsearchConnectorFeaturesNativeConnectorApiKeysArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(false),\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\tlookup := elasticstack.LookupElasticsearchConnectorOutput(ctx, elasticstack.GetElasticsearchConnectorOutputArgs{\n\t\t\tConnectorId: postgres.ConnectorId,\n\t\t}, nil)\n\t\tctx.Export(\"connectorStatus\", lookup.ApplyT(func(lookup elasticstack.GetElasticsearchConnectorResult) (*string, error) {\n\t\t\treturn &lookup.Status, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"connectorConfiguration\", lookup.ApplyT(func(lookup elasticstack.GetElasticsearchConnectorResult) (*string, error) {\n\t\t\treturn &lookup.Configuration, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"connectorLastSynced\", lookup.ApplyT(func(lookup elasticstack.GetElasticsearchConnectorResult) (*string, error) {\n\t\t\treturn &lookup.LastSynced, 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.ElasticsearchConnector;\nimport com.pulumi.elasticstack.ElasticsearchConnectorArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorPipelineArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorSchedulingArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorSchedulingFullArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorSchedulingIncrementalArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorSchedulingAccessControlArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesSyncRulesArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesSyncRulesBasicArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesSyncRulesAdvancedArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesDocumentLevelSecurityArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesIncrementalSyncArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesNativeConnectorApiKeysArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchConnectorArgs;\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 postgres = new ElasticsearchConnector(\"postgres\", ElasticsearchConnectorArgs.builder()\n            .connectorId(\"music-catalog\")\n            .serviceType(\"postgresql\")\n            .name(\"music catalog\")\n            .description(\"Indexes the music catalog database.\")\n            .indexName(\"search-music\")\n            .language(\"english\")\n            .pipeline(ElasticsearchConnectorPipelineArgs.builder()\n                .name(\"search-default-ingestion\")\n                .extractBinaryContent(false)\n                .reduceWhitespace(true)\n                .runMlInference(false)\n                .build())\n            .scheduling(ElasticsearchConnectorSchedulingArgs.builder()\n                .full(ElasticsearchConnectorSchedulingFullArgs.builder()\n                    .enabled(true)\n                    .interval(\"0 0 * * * ?\")\n                    .build())\n                .incremental(ElasticsearchConnectorSchedulingIncrementalArgs.builder()\n                    .enabled(false)\n                    .interval(\"0 0 0 * * ?\")\n                    .build())\n                .accessControl(ElasticsearchConnectorSchedulingAccessControlArgs.builder()\n                    .enabled(false)\n                    .interval(\"0 0 0 * * ?\")\n                    .build())\n                .build())\n            .features(ElasticsearchConnectorFeaturesArgs.builder()\n                .syncRules(ElasticsearchConnectorFeaturesSyncRulesArgs.builder()\n                    .basic(ElasticsearchConnectorFeaturesSyncRulesBasicArgs.builder()\n                        .enabled(true)\n                        .build())\n                    .advanced(ElasticsearchConnectorFeaturesSyncRulesAdvancedArgs.builder()\n                        .enabled(false)\n                        .build())\n                    .build())\n                .documentLevelSecurity(ElasticsearchConnectorFeaturesDocumentLevelSecurityArgs.builder()\n                    .enabled(false)\n                    .build())\n                .incrementalSync(ElasticsearchConnectorFeaturesIncrementalSyncArgs.builder()\n                    .enabled(false)\n                    .build())\n                .nativeConnectorApiKeys(ElasticsearchConnectorFeaturesNativeConnectorApiKeysArgs.builder()\n                    .enabled(false)\n                    .build())\n                .build())\n            .build());\n\n        final var lookup = ElasticstackFunctions.getElasticsearchConnector(GetElasticsearchConnectorArgs.builder()\n            .connectorId(postgres.connectorId())\n            .build());\n\n        ctx.export(\"connectorStatus\", lookup.applyValue(_lookup -> _lookup.status()));\n        ctx.export(\"connectorConfiguration\", lookup.applyValue(_lookup -> _lookup.configuration()));\n        ctx.export(\"connectorLastSynced\", lookup.applyValue(_lookup -> _lookup.lastSynced()));\n    }\n}\n```\n```yaml\nresources:\n  postgres:\n    type: elasticstack:ElasticsearchConnector\n    properties:\n      connectorId: music-catalog\n      serviceType: postgresql\n      name: music catalog\n      description: Indexes the music catalog database.\n      indexName: search-music\n      language: english\n      pipeline:\n        name: search-default-ingestion\n        extractBinaryContent: false\n        reduceWhitespace: true\n        runMlInference: false\n      scheduling:\n        full:\n          enabled: true\n          interval: 0 0 * * * ?\n        incremental:\n          enabled: false\n          interval: 0 0 0 * * ?\n        accessControl:\n          enabled: false\n          interval: 0 0 0 * * ?\n      features:\n        syncRules:\n          basic:\n            enabled: true\n          advanced:\n            enabled: false\n        documentLevelSecurity:\n          enabled: false\n        incrementalSync:\n          enabled: false\n        nativeConnectorApiKeys:\n          enabled: false\nvariables:\n  lookup:\n    fn::invoke:\n      function: elasticstack:getElasticsearchConnector\n      arguments:\n        connectorId: ${postgres.connectorId}\noutputs:\n  connectorStatus: ${lookup.status}\n  connectorConfiguration: ${lookup.configuration}\n  connectorLastSynced: ${lookup.lastSynced}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchConnector.\n","properties":{"connectorId":{"description":"Unique connector identifier to look up.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorElasticsearchConnection:getElasticsearchConnectorElasticsearchConnection"},"type":"array"}},"required":["connectorId"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchConnector.\n","properties":{"apiKeyId":{"description":"ID of the API key used by the connector service for authorization.\n","type":"string"},"apiKeySecretId":{"description":"ID of the connector secret holding the API key (Elastic-managed connectors only).\n","type":"string"},"configuration":{"description":"Full registered configuration schema document from the connector service. JSON-encoded; use `jsondecode()` to inspect.\n","type":"string"},"connectorId":{"description":"Unique connector identifier to look up.\n","type":"string"},"customScheduling":{"description":"Custom per-job-type scheduling overrides. JSON-encoded object; use `jsondecode()` to inspect.\n","type":"string"},"description":{"description":"Connector description.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorElasticsearchConnection:getElasticsearchConnectorElasticsearchConnection"},"type":"array"},"error":{"description":"Connector-level error message, if any.\n","type":"string"},"features":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorFeatures:getElasticsearchConnectorFeatures","description":"Connector feature flags.\n"},"filtering":{"description":"Connector filtering rules. JSON-encoded array; use `jsondecode()` to inspect.\n","type":"string"},"id":{"description":"Composite identifier in the form `<cluster_uuid>/<connector_id>`.\n","type":"string"},"indexName":{"description":"Destination Elasticsearch index name.\n","type":"string"},"isNative":{"description":"Whether this is an Elastic-managed connector (<span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>) or self-managed (<span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n","type":"boolean"},"language":{"description":"Analyzer language for the connector index.\n","type":"string"},"lastAccessControlSyncError":{"description":"Error message from the last access-control sync job, if any.\n","type":"string"},"lastAccessControlSyncScheduledAt":{"description":"ISO 8601 timestamp when the last access-control sync was scheduled.\n","type":"string"},"lastAccessControlSyncStatus":{"description":"Status of the last access-control sync job.\n","type":"string"},"lastDeletedDocumentCount":{"description":"Number of documents deleted during the last sync job.\n","type":"number"},"lastIncrementalSyncScheduledAt":{"description":"ISO 8601 timestamp when the last incremental sync was scheduled.\n","type":"string"},"lastIndexedDocumentCount":{"description":"Number of documents indexed during the last sync job.\n","type":"number"},"lastSeen":{"description":"ISO 8601 timestamp when the connector service last reported in.\n","type":"string"},"lastSyncError":{"description":"Error message from the last sync job, if any.\n","type":"string"},"lastSyncScheduledAt":{"description":"ISO 8601 timestamp when the last sync job was scheduled.\n","type":"string"},"lastSyncStatus":{"description":"Status of the last sync job.\n","type":"string"},"lastSynced":{"description":"ISO 8601 timestamp of the last completed sync.\n","type":"string"},"name":{"description":"Human-readable connector name.\n","type":"string"},"pipeline":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorPipeline:getElasticsearchConnectorPipeline","description":"Ingest pipeline settings applied to synced documents.\n"},"scheduling":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorScheduling:getElasticsearchConnectorScheduling","description":"Sync scheduling for full, incremental, and access-control jobs.\n"},"serviceType":{"description":"Connector service type (for example <span pulumi-lang-nodejs=\"`postgresql`\" pulumi-lang-dotnet=\"`Postgresql`\" pulumi-lang-go=\"`postgresql`\" pulumi-lang-python=\"`postgresql`\" pulumi-lang-yaml=\"`postgresql`\" pulumi-lang-java=\"`postgresql`\">`postgresql`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\">`github`</span>).\n","type":"string"},"status":{"description":"Connector lifecycle status (for example <span pulumi-lang-nodejs=\"`created`\" pulumi-lang-dotnet=\"`Created`\" pulumi-lang-go=\"`created`\" pulumi-lang-python=\"`created`\" pulumi-lang-yaml=\"`created`\" pulumi-lang-java=\"`created`\">`created`</span>, <span pulumi-lang-nodejs=\"`connected`\" pulumi-lang-dotnet=\"`Connected`\" pulumi-lang-go=\"`connected`\" pulumi-lang-python=\"`connected`\" pulumi-lang-yaml=\"`connected`\" pulumi-lang-java=\"`connected`\">`connected`</span>, <span pulumi-lang-nodejs=\"`error`\" pulumi-lang-dotnet=\"`Error`\" pulumi-lang-go=\"`error`\" pulumi-lang-python=\"`error`\" pulumi-lang-yaml=\"`error`\" pulumi-lang-java=\"`error`\">`error`</span>).\n","type":"string"},"syncCursor":{"description":"Opaque connector sync cursor state. JSON-encoded; use `jsondecode()` to inspect.\n","type":"string"},"syncNow":{"description":"Whether a sync job is queued to run immediately.\n","type":"boolean"}},"required":["apiKeyId","apiKeySecretId","configuration","connectorId","customScheduling","description","error","features","filtering","id","indexName","isNative","language","lastAccessControlSyncError","lastAccessControlSyncScheduledAt","lastAccessControlSyncStatus","lastDeletedDocumentCount","lastIncrementalSyncScheduledAt","lastIndexedDocumentCount","lastSeen","lastSyncError","lastSyncScheduledAt","lastSyncStatus","lastSynced","name","pipeline","scheduling","serviceType","status","syncCursor","syncNow"],"type":"object"}},"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":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchEnrichPolicyElasticsearchConnection:getElasticsearchEnrichPolicyElasticsearchConnection"},"type":"array"},"name":{"description":"The name of the policy.\n","type":"string"}},"required":["name"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchEnrichPolicy.\n","properties":{"elasticsearchConnections":{"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<span 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 \"> match_all </span>query.\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<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Minimal template so the data source reads a predictable shape you control. This mirrors the\n// acceptance-test pattern (resource + data source). The examples PlanOnly harness does not\n// apply changes; the data source then uses the provider's legacy \"not found\" behavior (name only)\n// instead of depending on built-in cluster templates, whose API responses vary by version.\nconst exampleElasticsearchIndexTemplate = new elasticstack.ElasticsearchIndexTemplate(\"example\", {\n    name: \"terraform-provider-elasticstack-example-index-template-ds\",\n    priority: 100,\n    indexPatterns: [\"tf-example-index-template-ds-*\"],\n});\nconst example = elasticstack.getElasticsearchIndexTemplateOutput({\n    name: exampleElasticsearchIndexTemplate.name,\n});\nexport const template = example;\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Minimal template so the data source reads a predictable shape you control. This mirrors the\n# acceptance-test pattern (resource + data source). The examples PlanOnly harness does not\n# apply changes; the data source then uses the provider's legacy \"not found\" behavior (name only)\n# instead of depending on built-in cluster templates, whose API responses vary by version.\nexample_elasticsearch_index_template = elasticstack.ElasticsearchIndexTemplate(\"example\",\n    name=\"terraform-provider-elasticstack-example-index-template-ds\",\n    priority=100,\n    index_patterns=[\"tf-example-index-template-ds-*\"])\nexample = elasticstack.get_elasticsearch_index_template_output(name=example_elasticsearch_index_template.name)\npulumi.export(\"template\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    // Minimal template so the data source reads a predictable shape you control. This mirrors the\n    // acceptance-test pattern (resource + data source). The examples PlanOnly harness does not\n    // apply changes; the data source then uses the provider's legacy \"not found\" behavior (name only)\n    // instead of depending on built-in cluster templates, whose API responses vary by version.\n    var exampleElasticsearchIndexTemplate = new Elasticstack.ElasticsearchIndexTemplate(\"example\", new()\n    {\n        Name = \"terraform-provider-elasticstack-example-index-template-ds\",\n        Priority = 100,\n        IndexPatterns = new[]\n        {\n            \"tf-example-index-template-ds-*\",\n        },\n    });\n\n    var example = Elasticstack.GetElasticsearchIndexTemplate.Invoke(new()\n    {\n        Name = exampleElasticsearchIndexTemplate.Name,\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"template\"] = example,\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// Minimal template so the data source reads a predictable shape you control. This mirrors the\n\t\t// acceptance-test pattern (resource + data source). The examples PlanOnly harness does not\n\t\t// apply changes; the data source then uses the provider's legacy \"not found\" behavior (name only)\n\t\t// instead of depending on built-in cluster templates, whose API responses vary by version.\n\t\texampleElasticsearchIndexTemplate, err := elasticstack.NewElasticsearchIndexTemplate(ctx, \"example\", &elasticstack.ElasticsearchIndexTemplateArgs{\n\t\t\tName:     pulumi.String(\"terraform-provider-elasticstack-example-index-template-ds\"),\n\t\t\tPriority: pulumi.Float64(100),\n\t\t\tIndexPatterns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tf-example-index-template-ds-*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := elasticstack.LookupElasticsearchIndexTemplateOutput(ctx, elasticstack.GetElasticsearchIndexTemplateOutputArgs{\n\t\t\tName: exampleElasticsearchIndexTemplate.Name,\n\t\t}, nil)\n\t\tctx.Export(\"template\", example)\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.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        // Minimal template so the data source reads a predictable shape you control. This mirrors the\n        // acceptance-test pattern (resource + data source). The examples PlanOnly harness does not\n        // apply changes; the data source then uses the provider's legacy \"not found\" behavior (name only)\n        // instead of depending on built-in cluster templates, whose API responses vary by version.\n        var exampleElasticsearchIndexTemplate = new ElasticsearchIndexTemplate(\"exampleElasticsearchIndexTemplate\", ElasticsearchIndexTemplateArgs.builder()\n            .name(\"terraform-provider-elasticstack-example-index-template-ds\")\n            .priority(100.0)\n            .indexPatterns(\"tf-example-index-template-ds-*\")\n            .build());\n\n        final var example = ElasticstackFunctions.getElasticsearchIndexTemplate(GetElasticsearchIndexTemplateArgs.builder()\n            .name(exampleElasticsearchIndexTemplate.name())\n            .build());\n\n        ctx.export(\"template\", example);\n    }\n}\n```\n```yaml\nresources:\n  # Minimal template so the data source reads a predictable shape you control. This mirrors the\n  # acceptance-test pattern (resource + data source). The examples PlanOnly harness does not\n  # apply changes; the data source then uses the provider's legacy \"not found\" behavior (name only)\n  # instead of depending on built-in cluster templates, whose API responses vary by version.\n  exampleElasticsearchIndexTemplate:\n    type: elasticstack:ElasticsearchIndexTemplate\n    name: example\n    properties:\n      name: terraform-provider-elasticstack-example-index-template-ds\n      priority: 100\n      indexPatterns:\n        - tf-example-index-template-ds-*\nvariables:\n  example:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIndexTemplate\n      arguments:\n        name: ${exampleElasticsearchIndexTemplate.name}\noutputs:\n  template: ${example}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIndexTemplate.\n","properties":{"dataStream":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateDataStream:getElasticsearchIndexTemplateDataStream","description":"If this object is included, the template is used to create data streams and their backing indices. Supports an empty object.\n"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateElasticsearchConnection:getElasticsearchIndexTemplateElasticsearchConnection"},"type":"array"},"name":{"description":"The name of the index template.\n","type":"string"},"template":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplate:getElasticsearchIndexTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, lifecycle, or settings configuration.\n"}},"required":["name"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIndexTemplate.\n","properties":{"allowAutoCreate":{"description":"If true, index auto-creation is allowed for matching indices. If false, auto-creation is disabled for matching indices. When unset, the cluster-level `action.auto_create_index` setting applies.\n","type":"boolean"},"composedOfs":{"description":"An ordered list of component template names.\n","items":{"type":"string"},"type":"array"},"dataStream":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateDataStream:getElasticsearchIndexTemplateDataStream","description":"If this object is included, the template is used to create data streams and their backing indices. Supports an empty object.\n"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateElasticsearchConnection:getElasticsearchIndexTemplateElasticsearchConnection"},"type":"array"},"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"},"template":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplate:getElasticsearchIndexTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, lifecycle, or settings configuration.\n"},"version":{"description":"Version number used to manage index templates externally.\n","type":"number"}},"required":["allowAutoCreate","composedOfs","id","ignoreMissingComponentTemplates","indexPatterns","metadata","name","priority","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<!--Start PulumiCodeChooser -->\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(() => \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, &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIndices.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndicesElasticsearchConnection:getElasticsearchIndicesElasticsearchConnection"},"type":"array"},"target":{"description":"Comma-separated list of data streams, indices, and aliases used to limit the request. Supports wildcards (*).\n","type":"string"}},"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIndices.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndicesElasticsearchConnection:getElasticsearchIndicesElasticsearchConnection"},"type":"array"},"id":{"type":"string"},"indices":{"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 (*).\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<!--Start PulumiCodeChooser -->\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(() => \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, &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchInfo.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchInfoElasticsearchConnection:getElasticsearchInfoElasticsearchConnection"},"type":"array"}},"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.\n","type":"string"},"clusterUuid":{"description":"Unique identifier for the cluster.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchInfoElasticsearchConnection:getElasticsearchInfoElasticsearchConnection"},"type":"array"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"name":{"description":"Name of the node.\n","type":"string"},"tagline":{"description":"Elasticsearch tag line.\n","type":"string"},"versions":{"description":"Contains version information for the Elasticsearch cluster.\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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorAppend.\n","properties":{"allowDuplicates":{"description":"If <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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`.\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","values"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorAppend.\n","properties":{"allowDuplicates":{"description":"If <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, 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`.\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":["allowDuplicates","field","id","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorBytes.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to convert\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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 <span 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`\">`geo_shape`</span>, unit-less for <span pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\">`shape`</span>)\n","type":"number"},"field":{"description":"The field containing the circle geometry to convert.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place\n","type":"string"}},"required":["errorDistance","field","shapeType"],"type":"object"},"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 <span 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`\">`geo_shape`</span>, unit-less for <span pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\">`shape`</span>)\n","type":"number"},"field":{"description":"The field containing the circle geometry 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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place\n","type":"string"}},"required":["errorDistance","field","id","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span 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`\">`iana_number`</span> field is not present.\n","type":"string"}},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span 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`\">`iana_number`</span> field is not present.\n","type":"string"}},"required":["id","ignoreFailure","ignoreMissing","json","seed"],"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- <span pulumi-lang-nodejs=\"`integer`\" pulumi-lang-dotnet=\"`Integer`\" pulumi-lang-go=\"`integer`\" pulumi-lang-python=\"`integer`\" pulumi-lang-yaml=\"`integer`\" pulumi-lang-java=\"`integer`\">`integer`</span>\n- <span pulumi-lang-nodejs=\"`long`\" pulumi-lang-dotnet=\"`Long`\" pulumi-lang-go=\"`long`\" pulumi-lang-python=\"`long`\" pulumi-lang-yaml=\"`long`\" pulumi-lang-java=\"`long`\">`long`</span>\n- <span pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\">`float`</span>\n- <span pulumi-lang-nodejs=\"`double`\" pulumi-lang-dotnet=\"`Double`\" pulumi-lang-go=\"`double`\" pulumi-lang-python=\"`double`\" pulumi-lang-yaml=\"`double`\" pulumi-lang-java=\"`double`\">`double`</span>\n- <span pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\">`string`</span>\n- <span pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\">`boolean`</span>\n- <span pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\">`ip`</span>\n- <span pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\">`auto`</span>\n\nSpecifying <span pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\">`boolean`</span> 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 <span pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\">`ip`</span> will set the target field to the value of <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> if it contains a valid IPv4 or IPv6 address that can be indexed into an IP field type.\n\nSpecifying <span pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\">`auto`</span> will attempt to convert the string-valued <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> 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 <span pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\">`float`</span>. 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, <span 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`\">`target_field`</span> will be updated with the unconverted field value.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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","type"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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","ignoreFailure","ignoreMissing","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 <span pulumi-lang-nodejs=\"`trim`\" pulumi-lang-dotnet=\"`Trim`\" pulumi-lang-go=\"`trim`\" pulumi-lang-python=\"`trim`\" pulumi-lang-yaml=\"`trim`\" pulumi-lang-java=\"`trim`\">`trim`</span> 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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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","targetFields"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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","ignoreFailure","ignoreMissing","json","quote","separator","targetFields","trim"],"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 <span 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`\">`target_field`</span> 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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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 <span 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`\">`target_field`</span>.\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"],"type":"object"},"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 <span 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`\">`target_field`</span>.\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","ignoreFailure","json","locale","outputFormat","targetField","timezone"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"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"},"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"],"type":"object"},"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","ignoreFailure","indexNameFormat","json","locale","timezone"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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","pattern"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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":["appendSeparator","field","id","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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"],"type":"object"},"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","ignoreFailure","json","override"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorDrop.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"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","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorEnrich.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field in the input document that matches the policies<span 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 \"> match_field </span>used to retrieve the enrichment data.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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","policyName","targetField"],"type":"object"},"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<span 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 \"> match_field </span>used 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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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","ignoreFailure","ignoreMissing","json","maxMatches","override","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorFail.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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":["message"],"type":"object"},"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","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the processor ignores any missing <span pulumi-lang-nodejs=\"`fields`\" pulumi-lang-dotnet=\"`Fields`\" pulumi-lang-go=\"`fields`\" pulumi-lang-python=\"`fields`\" pulumi-lang-yaml=\"`fields`\" pulumi-lang-java=\"`fields`\">`fields`</span>. If all fields are missing, the processor silently exits without modifying the document.\n","type":"boolean"},"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"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the processor ignores any missing <span pulumi-lang-nodejs=\"`fields`\" pulumi-lang-dotnet=\"`Fields`\" pulumi-lang-go=\"`fields`\" pulumi-lang-python=\"`fields`\" pulumi-lang-yaml=\"`fields`\" pulumi-lang-java=\"`fields`\">`fields`</span>. 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","ignoreFailure","ignoreMissing","json","method","targetField"],"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 <span pulumi-lang-nodejs=\"`foreach`\" pulumi-lang-dotnet=\"`Foreach`\" pulumi-lang-go=\"`foreach`\" pulumi-lang-python=\"`foreach`\" pulumi-lang-yaml=\"`foreach`\" pulumi-lang-java=\"`foreach`\">`foreach`</span> processor lets you specify a <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> containing array or object values and a <span pulumi-lang-nodejs=\"`processor`\" pulumi-lang-dotnet=\"`Processor`\" pulumi-lang-go=\"`processor`\" pulumi-lang-python=\"`processor`\" pulumi-lang-yaml=\"`processor`\" pulumi-lang-java=\"`processor`\">`processor`</span> to run on each element in the field.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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 => 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 => 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(() => \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 => 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 => @foreach.Apply(getElasticsearchIngestProcessorForeachResult => 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, &elasticstack.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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorForeach.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"Field containing array or object values.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the processor silently exits without changing the document if the <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span> or missing.\n","type":"boolean"},"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","processor"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the processor silently exits without changing the document if the <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span> 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","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to get the ip address from for the geographical lookup.\n","type":"string"},"firstOnly":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> only first found geoip data will be returned, even if field contains array.\n","type":"boolean"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist, the processor quietly exits without modifying the document.\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"properties":{"description":"Controls what properties are added to the <span 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`\">`target_field`</span> based on the geoip lookup.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field that will hold the geographical information looked up from the MaxMind database.\n","type":"string"}},"required":["field"],"type":"object"},"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"},"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to get the ip address from for the geographical lookup.\n","type":"string"},"firstOnly":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> 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"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"properties":{"description":"Controls what properties are added to the <span 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`\">`target_field`</span> based on the geoip lookup.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field that will hold the geographical information looked up from the MaxMind database.\n","type":"string"}},"required":["field","firstOnly","id","ignoreFailure","ignoreMissing","json","targetField"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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.\n","type":"string"},"field":{"description":"The field to use for grok expression parsing\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`patterns`\" pulumi-lang-dotnet=\"`Patterns`\" pulumi-lang-go=\"`patterns`\" pulumi-lang-python=\"`patterns`\" pulumi-lang-yaml=\"`patterns`\" pulumi-lang-java=\"`patterns`\">`patterns`</span> that matched.\n","type":"boolean"}},"required":["field","patterns"],"type":"object"},"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.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`patterns`\" pulumi-lang-dotnet=\"`Patterns`\" pulumi-lang-go=\"`patterns`\" pulumi-lang-python=\"`patterns`\" pulumi-lang-yaml=\"`patterns`\" pulumi-lang-java=\"`patterns`\">`patterns`</span> that matched.\n","type":"boolean"}},"required":["field","id","ignoreFailure","ignoreMissing","json","patterns","traceMatch"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorGsub.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to apply the replacement to.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","pattern","replacement"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorHtmlStrip.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to apply the replacement to.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","json"],"type":"object"}},"elasticstack:index/getElasticsearchIngestProcessorInference:getElasticsearchIngestProcessorInference":{"description":"Helper data source which can be used to create the configuration for an inference ingest processor. The inference processor uses a pre-trained data frame analytics model or a model deployed for natural language processing tasks to infer against the data that is being ingested in the pipeline. See: https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ingest-put-pipeline\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst inference = elasticstack.getElasticsearchIngestProcessorInference({\n    modelId: \"example\",\n    inputOutput: {\n        inputField: \"body\",\n        outputField: \"body_vector\",\n    },\n});\nconst myIngestPipeline = new elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", {\n    name: \"inference-ingest\",\n    processors: [inference.then(inference => inference.json)],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ninference = elasticstack.get_elasticsearch_ingest_processor_inference(model_id=\"example\",\n    input_output={\n        \"input_field\": \"body\",\n        \"output_field\": \"body_vector\",\n    })\nmy_ingest_pipeline = elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\",\n    name=\"inference-ingest\",\n    processors=[inference.json])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var inference = Elasticstack.GetElasticsearchIngestProcessorInference.Invoke(new()\n    {\n        ModelId = \"example\",\n        InputOutput = new Elasticstack.Inputs.GetElasticsearchIngestProcessorInferenceInputOutputInputArgs\n        {\n            InputField = \"body\",\n            OutputField = \"body_vector\",\n        },\n    });\n\n    var myIngestPipeline = new Elasticstack.ElasticsearchIngestPipeline(\"my_ingest_pipeline\", new()\n    {\n        Name = \"inference-ingest\",\n        Processors = new[]\n        {\n            inference.Apply(getElasticsearchIngestProcessorInferenceResult => getElasticsearchIngestProcessorInferenceResult.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\tinference, err := elasticstack.GetElasticsearchIngestProcessorInference(ctx, &elasticstack.GetElasticsearchIngestProcessorInferenceArgs{\n\t\t\tModelId: \"example\",\n\t\t\tInputOutput: elasticstack.GetElasticsearchIngestProcessorInferenceInputOutput{\n\t\t\t\tInputField:  \"body\",\n\t\t\t\tOutputField: pulumi.StringRef(\"body_vector\"),\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\", &elasticstack.ElasticsearchIngestPipelineArgs{\n\t\t\tName: pulumi.String(\"inference-ingest\"),\n\t\t\tProcessors: pulumi.StringArray{\n\t\t\t\tpulumi.String(inference.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.GetElasticsearchIngestProcessorInferenceArgs;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchIngestProcessorInferenceInputOutputArgs;\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 inference = ElasticstackFunctions.getElasticsearchIngestProcessorInference(GetElasticsearchIngestProcessorInferenceArgs.builder()\n            .modelId(\"example\")\n            .inputOutput(GetElasticsearchIngestProcessorInferenceInputOutputArgs.builder()\n                .inputField(\"body\")\n                .outputField(\"body_vector\")\n                .build())\n            .build());\n\n        var myIngestPipeline = new ElasticsearchIngestPipeline(\"myIngestPipeline\", ElasticsearchIngestPipelineArgs.builder()\n            .name(\"inference-ingest\")\n            .processors(inference.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: inference-ingest\n      processors:\n        - ${inference.json}\nvariables:\n  inference:\n    fn::invoke:\n      function: elasticstack:getElasticsearchIngestProcessorInference\n      arguments:\n        modelId: example\n        inputOutput:\n          inputField: body\n          outputField: body_vector\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorInference.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"fieldMap":{"additionalProperties":{"type":"string"},"description":"Maps the document field names to the known field names of the model. Maps the document fields to the model's expected input fields.\n","type":"object"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"inputOutput":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIngestProcessorInferenceInputOutput:getElasticsearchIngestProcessorInferenceInputOutput","description":"Input and output field mappings for the inference processor.\n"},"modelId":{"description":"The ID or alias for the trained model, or the ID of the deployment.\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":"Field added to incoming documents to contain results objects.\n","type":"string"}},"required":["modelId"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorInference.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"fieldMap":{"additionalProperties":{"type":"string"},"description":"Maps the document field names to the known field names of the model. Maps the document fields to the model's expected input fields.\n","type":"object"},"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"},"inputOutput":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIngestProcessorInferenceInputOutput:getElasticsearchIngestProcessorInferenceInputOutput","description":"Input and output field mappings for the inference processor.\n"},"json":{"description":"JSON representation of this data source.\n","type":"string"},"modelId":{"description":"The ID or alias for the trained model, or the ID of the deployment.\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":"Field added to incoming documents to contain results objects.\n","type":"string"}},"required":["id","ignoreFailure","json","modelId"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => @join.Apply(getElasticsearchIngestProcessorJoinResult => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorJoin.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"Field containing array values to join.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","separator"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","id","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorJson.\n","properties":{"addToRoot":{"description":"Flag that forces the parsed JSON to be added at the top level of the document. <span 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`\">`target_field`</span> must not be set when this option is chosen.\n","type":"boolean"},"addToRootConflictStrategy":{"description":"When set to <span pulumi-lang-nodejs=\"`replace`\" pulumi-lang-dotnet=\"`Replace`\" pulumi-lang-go=\"`replace`\" pulumi-lang-python=\"`replace`\" pulumi-lang-yaml=\"`replace`\" pulumi-lang-java=\"`replace`\">`replace`</span>, root fields that conflict with fields from the parsed JSON will be overridden. When set to <span pulumi-lang-nodejs=\"`merge`\" pulumi-lang-dotnet=\"`Merge`\" pulumi-lang-go=\"`merge`\" pulumi-lang-python=\"`merge`\" pulumi-lang-yaml=\"`merge`\" pulumi-lang-java=\"`merge`\">`merge`</span>, conflicting fields will be merged. Only applicable if <span 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`\">`add_to_root`</span> is set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>.\n","type":"string"},"allowDuplicateKeys":{"description":"When set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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"],"type":"object"},"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. <span 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`\">`target_field`</span> must not be set when this option is chosen.\n","type":"boolean"},"addToRootConflictStrategy":{"description":"When set to <span pulumi-lang-nodejs=\"`replace`\" pulumi-lang-dotnet=\"`Replace`\" pulumi-lang-go=\"`replace`\" pulumi-lang-python=\"`replace`\" pulumi-lang-yaml=\"`replace`\" pulumi-lang-java=\"`replace`\">`replace`</span>, root fields that conflict with fields from the parsed JSON will be overridden. When set to <span pulumi-lang-nodejs=\"`merge`\" pulumi-lang-dotnet=\"`Merge`\" pulumi-lang-go=\"`merge`\" pulumi-lang-python=\"`merge`\" pulumi-lang-yaml=\"`merge`\" pulumi-lang-java=\"`merge`\">`merge`</span>, conflicting fields will be merged. Only applicable if <span 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`\">`add_to_root`</span> is set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>.\n","type":"string"},"allowDuplicateKeys":{"description":"When set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, 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","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> strip brackets `()`, `<>`, `[]` 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","valueSplit"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> strip brackets `()`, `<>`, `[]` 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","ignoreFailure","ignoreMissing","json","stripBrackets","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorLowercase.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to make lowercase.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","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 <span 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`\">`internal_networks`</span> option must be specified.\n\nOne of either <span 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`\">`internal_networks`</span> or <span 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`\">`internal_networks_field`</span> must be specified. If <span 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`\">`internal_networks_field`</span> is specified, it follows the behavior specified by <span 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`\">`ignore_missing`</span>.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorNetworkDirection.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"destinationIp":{"description":"Field containing the destination IP address.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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<span 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 \"> internal_networks </span>configuration from.\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"}},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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<span 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 \"> internal_networks </span>configuration 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","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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 => pipeline.json),\n        fingerprint.then(fingerprint => 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(() => \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 => 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 => getElasticsearchIngestProcessorPipelineResult.Json),\n            fingerprint.Apply(getElasticsearchIngestProcessorFingerprintResult => 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, &elasticstack.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\", &elasticstack.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, &elasticstack.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\", &elasticstack.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 &pipeline.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 -> _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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorPipeline.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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":["name"],"type":"object"},"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","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorRegisteredDomain.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"Field containing the source FQDN.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 `<empty string>`, the processor adds components to the document's root.\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 `<empty string>`, the processor adds components to the document's root.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => @remove.Apply(getElasticsearchIngestProcessorRemoveResult => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorRemove.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"fields":{"description":"Fields to be removed.\n","items":{"type":"string"},"type":"array"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["fields"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorRename.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to be renamed.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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","targetField"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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"}},"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","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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<string, object?>\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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorScript.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\">`source`</span> is specified, this parameter is required.\n","type":"string"},"source":{"description":"Inline script. If no <span pulumi-lang-nodejs=\"`scriptId`\" pulumi-lang-dotnet=\"`ScriptId`\" pulumi-lang-go=\"`scriptId`\" pulumi-lang-python=\"`script_id`\" pulumi-lang-yaml=\"`scriptId`\" pulumi-lang-java=\"`scriptId`\">`script_id`</span> is specified, this parameter is required.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"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 <span pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\">`source`</span> is specified, this parameter is required.\n","type":"string"},"source":{"description":"Inline script. If no <span pulumi-lang-nodejs=\"`scriptId`\" pulumi-lang-dotnet=\"`ScriptId`\" pulumi-lang-go=\"`scriptId`\" pulumi-lang-python=\"`script_id`\" pulumi-lang-yaml=\"`scriptId`\" pulumi-lang-java=\"`scriptId`\">`script_id`</span> is specified, this parameter is required.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["id","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => @set.Apply(getElasticsearchIngestProcessorSetResult => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorSet.\n","properties":{"copyFrom":{"description":"The origin field which will be copied to <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span>, cannot set <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreEmptyValue":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> is a template snippet that evaluates to <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span> 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"},"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 <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> or <span 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`\">`copy_from`</span>.\n","type":"string"}},"required":["field"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorSet.\n","properties":{"copyFrom":{"description":"The origin field which will be copied to <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span>, cannot set <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> 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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> is a template snippet that evaluates to <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span> 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 <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> or <span 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`\">`copy_from`</span>.\n","type":"string"}},"required":["field","id","ignoreEmptyValue","ignoreFailure","json","mediaType","override"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"properties":{"description":"Controls what user related properties are added to the <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span>.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span>.\n","items":{"type":"string"},"type":"array"},"tag":{"description":"Identifier for the processor.\n","type":"string"}},"required":["field","id","ignoreFailure","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorSort.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to be sorted\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"order":{"description":"The sort order to use. Accepts <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span> or <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the sorted value to, by default <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span> or <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.\n","type":"string"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field to assign the sorted value to, by default <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place\n","type":"string"}},"required":["field","id","ignoreFailure","json","order"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorSplit.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to split\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","separator"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","json","preserveTrailing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking 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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorUppercase.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to make uppercase.\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorUriParts.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"Field containing the URI string.\n","type":"string"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"keepOriginal":{"description":"If true, the processor copies the unparsed URI to `<target_field>.original.`\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"removeIfSuccessful":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the processor removes the <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> after parsing the URI string. If parsing fails, the processor does not remove the <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span>.\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"],"type":"object"},"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 `<target_field>.original.`\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"removeIfSuccessful":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the processor removes the <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> after parsing the URI string. If parsing fails, the processor does not remove the <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span>.\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","ignoreFailure","json","keepOriginal","removeIfSuccessful"],"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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorUrldecode.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"field":{"description":"The field to decode\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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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 <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> is updated in-place.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","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<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchIngestProcessorUserAgent.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, the processor quietly exits without modifying the document.\n","type":"boolean"},"onFailures":{"description":"Handle failures for the processor.\n","items":{"type":"string"},"type":"array"},"properties":{"description":"Controls what properties are added to <span 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`\">`target_field`</span>.\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"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field that will be filled with the user agent details.\n","type":"string"}},"required":["field"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchIngestProcessorUserAgent.\n","properties":{"description":{"description":"Description of the processor.\n","type":"string"},"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"},"if":{"description":"Conditionally execute the processor\n","type":"string"},"ignoreFailure":{"description":"Ignore failures for the processor.\n","type":"boolean"},"ignoreMissing":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> and <span pulumi-lang-nodejs=\"`field`\" pulumi-lang-dotnet=\"`Field`\" pulumi-lang-go=\"`field`\" pulumi-lang-python=\"`field`\" pulumi-lang-yaml=\"`field`\" pulumi-lang-java=\"`field`\">`field`</span> does not exist or is <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>, 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"},"properties":{"description":"Controls what properties are added to <span 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`\">`target_field`</span>.\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"},"tag":{"description":"Identifier for the processor.\n","type":"string"},"targetField":{"description":"The field that will be filled with the user agent details.\n","type":"string"}},"required":["field","id","ignoreFailure","ignoreMissing","json"],"type":"object"}},"elasticstack:index/getElasticsearchQueryRuleset:getElasticsearchQueryRuleset":{"description":"Reads an Elasticsearch query ruleset by <span pulumi-lang-nodejs=\"`rulesetId`\" pulumi-lang-dotnet=\"`RulesetId`\" pulumi-lang-go=\"`rulesetId`\" pulumi-lang-python=\"`ruleset_id`\" pulumi-lang-yaml=\"`rulesetId`\" pulumi-lang-java=\"`rulesetId`\">`ruleset_id`</span>. See the [Query Rules API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-rules-apis.html) for more details.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myRuleset = new elasticstack.ElasticsearchQueryRuleset(\"my_ruleset\", {\n    rulesetId: \"my-search-rules\",\n    rules: [\n        {\n            ruleId: \"pin-laptops\",\n            type: \"pinned\",\n            priority: 1,\n            criterias: [{\n                type: \"exact\",\n                metadata: \"query\",\n                values: JSON.stringify([\n                    \"laptop\",\n                    \"notebook\",\n                ]),\n            }],\n            actions: {\n                ids: [\n                    \"doc-1\",\n                    \"doc-2\",\n                ],\n            },\n        },\n        {\n            ruleId: \"exclude-deprecated\",\n            type: \"exclude\",\n            criterias: [{\n                type: \"contains\",\n                metadata: \"query\",\n                values: JSON.stringify([\"deprecated\"]),\n            }],\n            actions: {\n                docs: [{\n                    _index: \"products\",\n                    _id: \"old-1\",\n                }],\n            },\n        },\n    ],\n});\nconst example = elasticstack.getElasticsearchQueryRulesetOutput({\n    rulesetId: myRuleset.rulesetId,\n});\nexport const rules = example.apply(example => example.rules);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_ruleset = elasticstack.ElasticsearchQueryRuleset(\"my_ruleset\",\n    ruleset_id=\"my-search-rules\",\n    rules=[\n        {\n            \"rule_id\": \"pin-laptops\",\n            \"type\": \"pinned\",\n            \"priority\": 1,\n            \"criterias\": [{\n                \"type\": \"exact\",\n                \"metadata\": \"query\",\n                \"values\": json.dumps([\n                    \"laptop\",\n                    \"notebook\",\n                ]),\n            }],\n            \"actions\": {\n                \"ids\": [\n                    \"doc-1\",\n                    \"doc-2\",\n                ],\n            },\n        },\n        {\n            \"rule_id\": \"exclude-deprecated\",\n            \"type\": \"exclude\",\n            \"criterias\": [{\n                \"type\": \"contains\",\n                \"metadata\": \"query\",\n                \"values\": json.dumps([\"deprecated\"]),\n            }],\n            \"actions\": {\n                \"docs\": [{\n                    \"_index\": \"products\",\n                    \"_id\": \"old-1\",\n                }],\n            },\n        },\n    ])\nexample = elasticstack.get_elasticsearch_query_ruleset_output(ruleset_id=my_ruleset.ruleset_id)\npulumi.export(\"rules\", example.rules)\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(() => \n{\n    var myRuleset = new Elasticstack.ElasticsearchQueryRuleset(\"my_ruleset\", new()\n    {\n        RulesetId = \"my-search-rules\",\n        Rules = new[]\n        {\n            new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleArgs\n            {\n                RuleId = \"pin-laptops\",\n                Type = \"pinned\",\n                Priority = 1,\n                Criterias = new[]\n                {\n                    new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleCriteriaArgs\n                    {\n                        Type = \"exact\",\n                        Metadata = \"query\",\n                        Values = JsonSerializer.Serialize(new[]\n                        {\n                            \"laptop\",\n                            \"notebook\",\n                        }),\n                    },\n                },\n                Actions = new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleActionsArgs\n                {\n                    Ids = new[]\n                    {\n                        \"doc-1\",\n                        \"doc-2\",\n                    },\n                },\n            },\n            new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleArgs\n            {\n                RuleId = \"exclude-deprecated\",\n                Type = \"exclude\",\n                Criterias = new[]\n                {\n                    new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleCriteriaArgs\n                    {\n                        Type = \"contains\",\n                        Metadata = \"query\",\n                        Values = JsonSerializer.Serialize(new[]\n                        {\n                            \"deprecated\",\n                        }),\n                    },\n                },\n                Actions = new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleActionsArgs\n                {\n                    Docs = new[]\n                    {\n                        new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleActionsDocArgs\n                        {\n                            _index = \"products\",\n                            _id = \"old-1\",\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n    var example = Elasticstack.GetElasticsearchQueryRuleset.Invoke(new()\n    {\n        RulesetId = myRuleset.RulesetId,\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"rules\"] = example.Apply(getElasticsearchQueryRulesetResult => getElasticsearchQueryRulesetResult.Rules),\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([]string{\n\t\t\t\"laptop\",\n\t\t\t\"notebook\",\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([]string{\n\t\t\t\"deprecated\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\tmyRuleset, err := elasticstack.NewElasticsearchQueryRuleset(ctx, \"my_ruleset\", &elasticstack.ElasticsearchQueryRulesetArgs{\n\t\t\tRulesetId: pulumi.String(\"my-search-rules\"),\n\t\t\tRules: elasticstack.ElasticsearchQueryRulesetRuleArray{\n\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleArgs{\n\t\t\t\t\tRuleId:   pulumi.String(\"pin-laptops\"),\n\t\t\t\t\tType:     pulumi.String(\"pinned\"),\n\t\t\t\t\tPriority: pulumi.Float64(1),\n\t\t\t\t\tCriterias: elasticstack.ElasticsearchQueryRulesetRuleCriteriaArray{\n\t\t\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleCriteriaArgs{\n\t\t\t\t\t\t\tType:     pulumi.String(\"exact\"),\n\t\t\t\t\t\t\tMetadata: pulumi.String(\"query\"),\n\t\t\t\t\t\t\tValues:   pulumi.String(json0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: &elasticstack.ElasticsearchQueryRulesetRuleActionsArgs{\n\t\t\t\t\t\tIds: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"doc-1\"),\n\t\t\t\t\t\t\tpulumi.String(\"doc-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleArgs{\n\t\t\t\t\tRuleId: pulumi.String(\"exclude-deprecated\"),\n\t\t\t\t\tType:   pulumi.String(\"exclude\"),\n\t\t\t\t\tCriterias: elasticstack.ElasticsearchQueryRulesetRuleCriteriaArray{\n\t\t\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleCriteriaArgs{\n\t\t\t\t\t\t\tType:     pulumi.String(\"contains\"),\n\t\t\t\t\t\t\tMetadata: pulumi.String(\"query\"),\n\t\t\t\t\t\t\tValues:   pulumi.String(json1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: &elasticstack.ElasticsearchQueryRulesetRuleActionsArgs{\n\t\t\t\t\t\tDocs: elasticstack.ElasticsearchQueryRulesetRuleActionsDocArray{\n\t\t\t\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleActionsDocArgs{\n\t\t\t\t\t\t\t\t_index: pulumi.String(\"products\"),\n\t\t\t\t\t\t\t\t_id:    pulumi.String(\"old-1\"),\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\texample := elasticstack.LookupElasticsearchQueryRulesetOutput(ctx, elasticstack.GetElasticsearchQueryRulesetOutputArgs{\n\t\t\tRulesetId: myRuleset.RulesetId,\n\t\t}, nil)\n\t\tctx.Export(\"rules\", example.ApplyT(func(example elasticstack.GetElasticsearchQueryRulesetResult) ([]elasticstack.GetElasticsearchQueryRulesetRule, error) {\n\t\t\treturn []elasticstack.GetElasticsearchQueryRulesetRule(example.Rules), nil\n\t\t}).([]elasticstack.GetElasticsearchQueryRulesetRuleOutput))\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.ElasticsearchQueryRuleset;\nimport com.pulumi.elasticstack.ElasticsearchQueryRulesetArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchQueryRulesetRuleArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchQueryRulesetRuleActionsArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchQueryRulesetArgs;\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 myRuleset = new ElasticsearchQueryRuleset(\"myRuleset\", ElasticsearchQueryRulesetArgs.builder()\n            .rulesetId(\"my-search-rules\")\n            .rules(            \n                ElasticsearchQueryRulesetRuleArgs.builder()\n                    .ruleId(\"pin-laptops\")\n                    .type(\"pinned\")\n                    .priority(1.0)\n                    .criterias(ElasticsearchQueryRulesetRuleCriteriaArgs.builder()\n                        .type(\"exact\")\n                        .metadata(\"query\")\n                        .values(serializeJson(\n                            jsonArray(\n                                \"laptop\", \n                                \"notebook\"\n                            )))\n                        .build())\n                    .actions(ElasticsearchQueryRulesetRuleActionsArgs.builder()\n                        .ids(                        \n                            \"doc-1\",\n                            \"doc-2\")\n                        .build())\n                    .build(),\n                ElasticsearchQueryRulesetRuleArgs.builder()\n                    .ruleId(\"exclude-deprecated\")\n                    .type(\"exclude\")\n                    .criterias(ElasticsearchQueryRulesetRuleCriteriaArgs.builder()\n                        .type(\"contains\")\n                        .metadata(\"query\")\n                        .values(serializeJson(\n                            jsonArray(\"deprecated\")))\n                        .build())\n                    .actions(ElasticsearchQueryRulesetRuleActionsArgs.builder()\n                        .docs(ElasticsearchQueryRulesetRuleActionsDocArgs.builder()\n                            ._index(\"products\")\n                            ._id(\"old-1\")\n                            .build())\n                        .build())\n                    .build())\n            .build());\n\n        final var example = ElasticstackFunctions.getElasticsearchQueryRuleset(GetElasticsearchQueryRulesetArgs.builder()\n            .rulesetId(myRuleset.rulesetId())\n            .build());\n\n        ctx.export(\"rules\", example.applyValue(_example -> _example.rules()));\n    }\n}\n```\n```yaml\nresources:\n  myRuleset:\n    type: elasticstack:ElasticsearchQueryRuleset\n    name: my_ruleset\n    properties:\n      rulesetId: my-search-rules\n      rules:\n        - ruleId: pin-laptops\n          type: pinned\n          priority: 1\n          criterias:\n            - type: exact\n              metadata: query\n              values:\n                fn::toJSON:\n                  - laptop\n                  - notebook\n          actions:\n            ids:\n              - doc-1\n              - doc-2\n        - ruleId: exclude-deprecated\n          type: exclude\n          criterias:\n            - type: contains\n              metadata: query\n              values:\n                fn::toJSON:\n                  - deprecated\n          actions:\n            docs:\n              - _index: products\n                _id: old-1\nvariables:\n  example:\n    fn::invoke:\n      function: elasticstack:getElasticsearchQueryRuleset\n      arguments:\n        rulesetId: ${myRuleset.rulesetId}\noutputs:\n  rules: ${example.rules}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchQueryRuleset.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchQueryRulesetElasticsearchConnection:getElasticsearchQueryRulesetElasticsearchConnection"},"type":"array"},"rulesetId":{"description":"Unique identifier of the query ruleset to look up.\n","type":"string"}},"required":["rulesetId"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchQueryRuleset.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchQueryRulesetElasticsearchConnection:getElasticsearchQueryRulesetElasticsearchConnection"},"type":"array"},"id":{"description":"Internal identifier in the form `<cluster_uuid>/<ruleset_id>`.\n","type":"string"},"rules":{"description":"Ordered list of query rules for this ruleset.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchQueryRulesetRule:getElasticsearchQueryRulesetRule"},"type":"array"},"rulesetId":{"description":"Unique identifier of the query ruleset to look up.\n","type":"string"}},"required":["id","rules","rulesetId"],"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<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Look up a built-in cluster role that always exists.\nconst role = elasticstack.getElasticsearchSecurityRole({\n    name: \"superuser\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Look up a built-in cluster role that always exists.\nrole = elasticstack.get_elasticsearch_security_role(name=\"superuser\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    // Look up a built-in cluster role that always exists.\n    var role = Elasticstack.GetElasticsearchSecurityRole.Invoke(new()\n    {\n        Name = \"superuser\",\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// Look up a built-in cluster role that always exists.\n\t\t_, err := elasticstack.LookupElasticsearchSecurityRole(ctx, &elasticstack.LookupElasticsearchSecurityRoleArgs{\n\t\t\tName: \"superuser\",\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.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        // Look up a built-in cluster role that always exists.\n        final var role = ElasticstackFunctions.getElasticsearchSecurityRole(GetElasticsearchSecurityRoleArgs.builder()\n            .name(\"superuser\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  # Look up a built-in cluster role that always exists.\n  role:\n    fn::invoke:\n      function: elasticstack:getElasticsearchSecurityRole\n      arguments:\n        name: superuser\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSecurityRole.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleElasticsearchConnection:getElasticsearchSecurityRoleElasticsearchConnection"},"type":"array"},"name":{"description":"The name of the role.\n","type":"string"}},"required":["name"],"type":"object"},"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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleElasticsearchConnection:getElasticsearchSecurityRoleElasticsearchConnection"},"type":"array"},"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","runAs"],"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<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst docExample = new elasticstack.ElasticsearchSecurityRoleMapping(\"doc_example\", {\n    name: \"doc_example_role_mapping\",\n    enabled: true,\n    roles: [\"viewer\"],\n    rules: JSON.stringify({\n        any: [{\n            field: {\n                username: \"doc-example-user\",\n            },\n        }],\n    }),\n});\nconst mapping = elasticstack.getElasticsearchSecurityRoleMappingOutput({\n    name: docExample.name,\n});\nexport const user = mapping.apply(mapping => mapping.name);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\ndoc_example = elasticstack.ElasticsearchSecurityRoleMapping(\"doc_example\",\n    name=\"doc_example_role_mapping\",\n    enabled=True,\n    roles=[\"viewer\"],\n    rules=json.dumps({\n        \"any\": [{\n            \"field\": {\n                \"username\": \"doc-example-user\",\n            },\n        }],\n    }))\nmapping = elasticstack.get_elasticsearch_security_role_mapping_output(name=doc_example.name)\npulumi.export(\"user\", mapping.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(() => \n{\n    var docExample = new Elasticstack.ElasticsearchSecurityRoleMapping(\"doc_example\", new()\n    {\n        Name = \"doc_example_role_mapping\",\n        Enabled = true,\n        Roles = new[]\n        {\n            \"viewer\",\n        },\n        Rules = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"any\"] = new[]\n            {\n                new Dictionary<string, object?>\n                {\n                    [\"field\"] = new Dictionary<string, object?>\n                    {\n                        [\"username\"] = \"doc-example-user\",\n                    },\n                },\n            },\n        }),\n    });\n\n    var mapping = Elasticstack.GetElasticsearchSecurityRoleMapping.Invoke(new()\n    {\n        Name = docExample.Name,\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"user\"] = mapping.Apply(getElasticsearchSecurityRoleMappingResult => getElasticsearchSecurityRoleMappingResult.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\": []map[string]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\": \"doc-example-user\",\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\tdocExample, err := elasticstack.NewElasticsearchSecurityRoleMapping(ctx, \"doc_example\", &elasticstack.ElasticsearchSecurityRoleMappingArgs{\n\t\t\tName:    pulumi.String(\"doc_example_role_mapping\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"viewer\"),\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\tmapping := elasticstack.LookupElasticsearchSecurityRoleMappingOutput(ctx, elasticstack.GetElasticsearchSecurityRoleMappingOutputArgs{\n\t\t\tName: docExample.Name,\n\t\t}, nil)\n\t\tctx.Export(\"user\", mapping.ApplyT(func(mapping elasticstack.GetElasticsearchSecurityRoleMappingResult) (*string, error) {\n\t\t\treturn &mapping.Name, 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.ElasticsearchSecurityRoleMapping;\nimport com.pulumi.elasticstack.ElasticsearchSecurityRoleMappingArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetElasticsearchSecurityRoleMappingArgs;\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 docExample = new ElasticsearchSecurityRoleMapping(\"docExample\", ElasticsearchSecurityRoleMappingArgs.builder()\n            .name(\"doc_example_role_mapping\")\n            .enabled(true)\n            .roles(\"viewer\")\n            .rules(serializeJson(\n                jsonObject(\n                    jsonProperty(\"any\", jsonArray(jsonObject(\n                        jsonProperty(\"field\", jsonObject(\n                            jsonProperty(\"username\", \"doc-example-user\")\n                        ))\n                    )))\n                )))\n            .build());\n\n        final var mapping = ElasticstackFunctions.getElasticsearchSecurityRoleMapping(GetElasticsearchSecurityRoleMappingArgs.builder()\n            .name(docExample.name())\n            .build());\n\n        ctx.export(\"user\", mapping.applyValue(_mapping -> _mapping.name()));\n    }\n}\n```\n```yaml\nresources:\n  docExample:\n    type: elasticstack:ElasticsearchSecurityRoleMapping\n    name: doc_example\n    properties:\n      name: doc_example_role_mapping\n      enabled: true\n      roles:\n        - viewer\n      rules:\n        fn::toJSON:\n          any:\n            - field:\n                username: doc-example-user\nvariables:\n  mapping:\n    fn::invoke:\n      function: elasticstack:getElasticsearchSecurityRoleMapping\n      arguments:\n        name: ${docExample.name}\noutputs:\n  user: ${mapping.name}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSecurityRoleMapping.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleMappingElasticsearchConnection:getElasticsearchSecurityRoleMappingElasticsearchConnection"},"type":"array"},"name":{"description":"The distinct name that identifies the role mapping, used solely as an identifier.\n","type":"string"}},"required":["name"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchSecurityRoleMapping.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleMappingElasticsearchConnection:getElasticsearchSecurityRoleMappingElasticsearchConnection"},"type":"array"},"enabled":{"description":"Mappings that have <span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span> set to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> 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.\n\nSee 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<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nexport = async () => {\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(() => \n{\n    var user = Elasticstack.GetElasticsearchSecurityUser.Invoke(new()\n    {\n        Username = \"elastic\",\n    });\n\n    return new Dictionary<string, object?>\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, &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSecurityUser.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityUserElasticsearchConnection:getElasticsearchSecurityUserElasticsearchConnection"},"type":"array"},"username":{"description":"An identifier for the user\n","type":"string"}},"required":["username"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchSecurityUser.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityUserElasticsearchConnection:getElasticsearchSecurityUserElasticsearchConnection"},"type":"array"},"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<!--Start PulumiCodeChooser -->\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 => myFsRepo.fs?.[0]?.location);\nexport const repoUrl = myUrlRepo.apply(myUrlRepo => 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(() => \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<string, object?>\n    {\n        [\"repoFsLocation\"] = myFsRepo.Apply(getElasticsearchSnapshotRepositoryResult => getElasticsearchSnapshotRepositoryResult.Fs[0]?.Location),\n        [\"repoUrl\"] = myUrlRepo.Apply(getElasticsearchSnapshotRepositoryResult => 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\", &elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_url_repo\"),\n\t\t\tUrl: &elasticstack.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\", &elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_fs_repo\"),\n\t\t\tFs: &elasticstack.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 &myFsRepo.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 &myUrlRepo.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 -> _myFsRepo.fs()[0].location()));\n        ctx.export(\"repoUrl\", myUrlRepo.applyValue(_myUrlRepo -> _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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSnapshotRepository.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryElasticsearchConnection:getElasticsearchSnapshotRepositoryElasticsearchConnection"},"type":"array"},"name":{"description":"Name of the snapshot repository.\n","type":"string"}},"required":["name"],"type":"object"},"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 <span pulumi-lang-nodejs=\"`azure`\" pulumi-lang-dotnet=\"`Azure`\" pulumi-lang-go=\"`azure`\" pulumi-lang-python=\"`azure`\" pulumi-lang-yaml=\"`azure`\" pulumi-lang-java=\"`azure`\">`azure`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryAzure:getElasticsearchSnapshotRepositoryAzure"},"type":"array"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryElasticsearchConnection:getElasticsearchSnapshotRepositoryElasticsearchConnection"},"type":"array"},"fs":{"description":"Shared filesystem repository. Set only if the type of the fetched repo is <span pulumi-lang-nodejs=\"`fs`\" pulumi-lang-dotnet=\"`Fs`\" pulumi-lang-go=\"`fs`\" pulumi-lang-python=\"`fs`\" pulumi-lang-yaml=\"`fs`\" pulumi-lang-java=\"`fs`\">`fs`</span>.\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 <span pulumi-lang-nodejs=\"`gcs`\" pulumi-lang-dotnet=\"`Gcs`\" pulumi-lang-go=\"`gcs`\" pulumi-lang-python=\"`gcs`\" pulumi-lang-yaml=\"`gcs`\" pulumi-lang-java=\"`gcs`\">`gcs`</span>.\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 <span pulumi-lang-nodejs=\"`hdfs`\" pulumi-lang-dotnet=\"`Hdfs`\" pulumi-lang-go=\"`hdfs`\" pulumi-lang-python=\"`hdfs`\" pulumi-lang-yaml=\"`hdfs`\" pulumi-lang-java=\"`hdfs`\">`hdfs`</span>.\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 <span pulumi-lang-nodejs=\"`s3`\" pulumi-lang-dotnet=\"`S3`\" pulumi-lang-go=\"`s3`\" pulumi-lang-python=\"`s3`\" pulumi-lang-yaml=\"`s3`\" pulumi-lang-java=\"`s3`\">`s3`</span>.\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 <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSnapshotRepositoryUrl:getElasticsearchSnapshotRepositoryUrl"},"type":"array"}},"required":["azures","fs","gcs","hdfs","id","name","s3s","type","urls"],"type":"object"}},"elasticstack:index/getElasticsearchSynonymSet:getElasticsearchSynonymSet":{"description":"Reads an Elasticsearch synonym set. See the [synonym set API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/synonyms-apis.html) for more details.\n","inputs":{"description":"A collection of arguments for invoking getElasticsearchSynonymSet.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSynonymSetElasticsearchConnection:getElasticsearchSynonymSetElasticsearchConnection"},"type":"array"},"synonymSetId":{"description":"The name of the synonym set to look up.\n","type":"string"}},"required":["synonymSetId"],"type":"object"},"outputs":{"description":"A collection of values returned by getElasticsearchSynonymSet.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSynonymSetElasticsearchConnection:getElasticsearchSynonymSetElasticsearchConnection"},"type":"array"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"synonymSetId":{"description":"The name of the synonym set to look up.\n","type":"string"},"synonymsSets":{"description":"The list of synonym rules for this synonym set.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSynonymSetSynonymsSet:getElasticsearchSynonymSetSynonymsSet"},"type":"array"}},"required":["id","synonymSetId","synonymsSets"],"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<!--Start PulumiCodeChooser -->\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(() => \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, &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getFleetEnrollmentTokens.\n","properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetFleetEnrollmentTokensKibanaConnection:getFleetEnrollmentTokensKibanaConnection"},"type":"array"},"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"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFleetEnrollmentTokens.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetFleetEnrollmentTokensKibanaConnection:getFleetEnrollmentTokensKibanaConnection"},"type":"array"},"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 <span pulumi-lang-nodejs=\"`prerelease`\" pulumi-lang-dotnet=\"`Prerelease`\" pulumi-lang-go=\"`prerelease`\" pulumi-lang-python=\"`prerelease`\" pulumi-lang-yaml=\"`prerelease`\" pulumi-lang-java=\"`prerelease`\">`prerelease`</span> parameter in the plan\nshould be set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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, &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getFleetIntegration.\n","properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetFleetIntegrationKibanaConnection:getFleetIntegrationKibanaConnection"},"type":"array"},"name":{"description":"The integration package name.\n","type":"string"},"prerelease":{"description":"Include prerelease packages.\n","type":"boolean"},"spaceId":{"description":"The Kibana space ID to scope the request to. When not specified, the default space is used.\n","type":"string"}},"required":["name"],"type":"object"},"outputs":{"description":"A collection of values returned by getFleetIntegration.\n","properties":{"id":{"description":"The ID of this resource.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetFleetIntegrationKibanaConnection:getFleetIntegrationKibanaConnection"},"type":"array"},"name":{"description":"The integration package name.\n","type":"string"},"prerelease":{"description":"Include prerelease packages.\n","type":"boolean"},"spaceId":{"description":"The Kibana space ID to scope the request to. When not specified, the default space is used.\n","type":"string"},"version":{"description":"The integration package version.\n","type":"string"}},"required":["id","name","version"],"type":"object"}},"elasticstack:index/getFleetOutput:getFleetOutput":{"description":"Returns information about a Fleet output. See the [Fleet output API documentation](https://www.elastic.co/docs/api/doc/kibana/v9/group/endpoint-fleet-outputs) for more details.\n","inputs":{"description":"A collection of arguments for invoking getFleetOutput.\n","properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetFleetOutputKibanaConnection:getFleetOutputKibanaConnection"},"type":"array"},"spaceId":{"description":"The Kibana space ID where this output is available.\n","type":"string"}},"type":"object"},"outputs":{"description":"A collection of values returned by getFleetOutput.\n","properties":{"id":{"description":"Generated ID for the outputs.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetFleetOutputKibanaConnection:getFleetOutputKibanaConnection"},"type":"array"},"outputs":{"description":"The list of outputs\n","items":{"$ref":"#/types/elasticstack:index%2FgetFleetOutputOutput:getFleetOutputOutput"},"type":"array"},"spaceId":{"description":"The Kibana space ID where this output is available.\n","type":"string"}},"required":["id","outputs"],"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<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst slack = new elasticstack.KibanaActionConnector(\"slack\", {\n    name: \"myslackconnector\",\n    connectorTypeId: \".slack\",\n    config: \"{}\",\n    secrets: \"{}\",\n});\nconst example = elasticstack.getKibanaActionConnectorOutput({\n    name: slack.name,\n    spaceId: \"default\",\n    connectorTypeId: \".slack\",\n});\nexport const connectorId = example.apply(example => example.connectorId);\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nslack = elasticstack.KibanaActionConnector(\"slack\",\n    name=\"myslackconnector\",\n    connector_type_id=\".slack\",\n    config=\"{}\",\n    secrets=\"{}\")\nexample = elasticstack.get_kibana_action_connector_output(name=slack.name,\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(() => \n{\n    var slack = new Elasticstack.KibanaActionConnector(\"slack\", new()\n    {\n        Name = \"myslackconnector\",\n        ConnectorTypeId = \".slack\",\n        Config = \"{}\",\n        Secrets = \"{}\",\n    });\n\n    var example = Elasticstack.GetKibanaActionConnector.Invoke(new()\n    {\n        Name = slack.Name,\n        SpaceId = \"default\",\n        ConnectorTypeId = \".slack\",\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"connectorId\"] = example.Apply(getKibanaActionConnectorResult => 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\tslack, err := elasticstack.NewKibanaActionConnector(ctx, \"slack\", &elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"myslackconnector\"),\n\t\t\tConnectorTypeId: pulumi.String(\".slack\"),\n\t\t\tConfig:          pulumi.String(\"{}\"),\n\t\t\tSecrets:         pulumi.String(\"{}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := elasticstack.LookupKibanaActionConnectorOutput(ctx, elasticstack.GetKibanaActionConnectorOutputArgs{\n\t\t\tName:            slack.Name,\n\t\t\tSpaceId:         pulumi.String(\"default\"),\n\t\t\tConnectorTypeId: pulumi.String(\".slack\"),\n\t\t}, nil)\n\t\tctx.Export(\"connectorId\", example.ApplyT(func(example elasticstack.GetKibanaActionConnectorResult) (*string, error) {\n\t\t\treturn &example.ConnectorId, 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.KibanaActionConnector;\nimport com.pulumi.elasticstack.KibanaActionConnectorArgs;\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        var slack = new KibanaActionConnector(\"slack\", KibanaActionConnectorArgs.builder()\n            .name(\"myslackconnector\")\n            .connectorTypeId(\".slack\")\n            .config(\"{}\")\n            .secrets(\"{}\")\n            .build());\n\n        final var example = ElasticstackFunctions.getKibanaActionConnector(GetKibanaActionConnectorArgs.builder()\n            .name(slack.name())\n            .spaceId(\"default\")\n            .connectorTypeId(\".slack\")\n            .build());\n\n        ctx.export(\"connectorId\", example.applyValue(_example -> _example.connectorId()));\n    }\n}\n```\n```yaml\nresources:\n  slack:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: myslackconnector\n      connectorTypeId: .slack\n      config: '{}'\n      secrets: '{}'\nvariables:\n  example:\n    fn::invoke:\n      function: elasticstack:getKibanaActionConnector\n      arguments:\n        name: ${slack.name}\n        spaceId: default\n        connectorTypeId: .slack\noutputs:\n  connectorId: ${example.connectorId}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getKibanaActionConnector.\n","properties":{"connectorTypeId":{"description":"The ID of the connector type, e.g. `.index`.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaActionConnectorKibanaConnection:getKibanaActionConnectorKibanaConnection"},"type":"array"},"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<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"required":["name"],"type":"object"},"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":"Internal identifier of the 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"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaActionConnectorKibanaConnection:getKibanaActionConnectorKibanaConnection"},"type":"array"},"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<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"required":["config","connectorId","connectorTypeId","id","isDeprecated","isMissingSecrets","isPreconfigured","name","spaceId"],"type":"object"}},"elasticstack:index/getKibanaAgentbuilderAgent:getKibanaAgentbuilderAgent":{"description":"Export an Agent Builder agent by ID, optionally including its tools and workflows. See the [Agent Builder API documentation](https://www.elastic.co/guide/en/kibana/current/agent-builder-api.html).\n\n## Example Usage\n\n### Export an agent (with dependencies for cross-cluster import)\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst exportedTool = new elasticstack.KibanaAgentbuilderTool(\"exported_tool\", {\n    toolId: \"doc-export-example-tool\",\n    type: \"esql\",\n    description: \"Tool for the export data source example\",\n    configuration: JSON.stringify({\n        query: \"FROM logs-* | LIMIT 10\",\n    }),\n});\nconst source = new elasticstack.KibanaAgentbuilderAgent(\"source\", {\n    agentId: \"doc-export-source-agent\",\n    name: \"Documentation export agent\",\n    description: \"Agent whose configuration is exported by the data source below\",\n    instructions: \"You are helpful.\",\n    tools: [exportedTool.toolId],\n});\nconst example = elasticstack.getKibanaAgentbuilderAgentOutput({\n    agentId: source.agentId,\n    includeDependencies: true,\n});\nexport const agentExport = example;\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nexported_tool = elasticstack.KibanaAgentbuilderTool(\"exported_tool\",\n    tool_id=\"doc-export-example-tool\",\n    type=\"esql\",\n    description=\"Tool for the export data source example\",\n    configuration=json.dumps({\n        \"query\": \"FROM logs-* | LIMIT 10\",\n    }))\nsource = elasticstack.KibanaAgentbuilderAgent(\"source\",\n    agent_id=\"doc-export-source-agent\",\n    name=\"Documentation export agent\",\n    description=\"Agent whose configuration is exported by the data source below\",\n    instructions=\"You are helpful.\",\n    tools=[exported_tool.tool_id])\nexample = elasticstack.get_kibana_agentbuilder_agent_output(agent_id=source.agent_id,\n    include_dependencies=True)\npulumi.export(\"agentExport\", example)\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(() => \n{\n    var exportedTool = new Elasticstack.KibanaAgentbuilderTool(\"exported_tool\", new()\n    {\n        ToolId = \"doc-export-example-tool\",\n        Type = \"esql\",\n        Description = \"Tool for the export data source example\",\n        Configuration = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"query\"] = \"FROM logs-* | LIMIT 10\",\n        }),\n    });\n\n    var source = new Elasticstack.KibanaAgentbuilderAgent(\"source\", new()\n    {\n        AgentId = \"doc-export-source-agent\",\n        Name = \"Documentation export agent\",\n        Description = \"Agent whose configuration is exported by the data source below\",\n        Instructions = \"You are helpful.\",\n        Tools = new[]\n        {\n            exportedTool.ToolId,\n        },\n    });\n\n    var example = Elasticstack.GetKibanaAgentbuilderAgent.Invoke(new()\n    {\n        AgentId = source.AgentId,\n        IncludeDependencies = true,\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"agentExport\"] = example,\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\"query\": \"FROM logs-* | LIMIT 10\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\texportedTool, err := elasticstack.NewKibanaAgentbuilderTool(ctx, \"exported_tool\", &elasticstack.KibanaAgentbuilderToolArgs{\n\t\t\tToolId:        pulumi.String(\"doc-export-example-tool\"),\n\t\t\tType:          pulumi.String(\"esql\"),\n\t\t\tDescription:   pulumi.String(\"Tool for the export data source example\"),\n\t\t\tConfiguration: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := elasticstack.NewKibanaAgentbuilderAgent(ctx, \"source\", &elasticstack.KibanaAgentbuilderAgentArgs{\n\t\t\tAgentId:      pulumi.String(\"doc-export-source-agent\"),\n\t\t\tName:         pulumi.String(\"Documentation export agent\"),\n\t\t\tDescription:  pulumi.String(\"Agent whose configuration is exported by the data source below\"),\n\t\t\tInstructions: pulumi.String(\"You are helpful.\"),\n\t\t\tTools: pulumi.StringArray{\n\t\t\t\texportedTool.ToolId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := elasticstack.LookupKibanaAgentbuilderAgentOutput(ctx, elasticstack.GetKibanaAgentbuilderAgentOutputArgs{\n\t\t\tAgentId:             source.AgentId,\n\t\t\tIncludeDependencies: pulumi.Bool(true),\n\t\t}, nil)\n\t\tctx.Export(\"agentExport\", example)\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.KibanaAgentbuilderTool;\nimport com.pulumi.elasticstack.KibanaAgentbuilderToolArgs;\nimport com.pulumi.elasticstack.KibanaAgentbuilderAgent;\nimport com.pulumi.elasticstack.KibanaAgentbuilderAgentArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetKibanaAgentbuilderAgentArgs;\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 exportedTool = new KibanaAgentbuilderTool(\"exportedTool\", KibanaAgentbuilderToolArgs.builder()\n            .toolId(\"doc-export-example-tool\")\n            .type(\"esql\")\n            .description(\"Tool for the export data source example\")\n            .configuration(serializeJson(\n                jsonObject(\n                    jsonProperty(\"query\", \"FROM logs-* | LIMIT 10\")\n                )))\n            .build());\n\n        var source = new KibanaAgentbuilderAgent(\"source\", KibanaAgentbuilderAgentArgs.builder()\n            .agentId(\"doc-export-source-agent\")\n            .name(\"Documentation export agent\")\n            .description(\"Agent whose configuration is exported by the data source below\")\n            .instructions(\"You are helpful.\")\n            .tools(exportedTool.toolId())\n            .build());\n\n        final var example = ElasticstackFunctions.getKibanaAgentbuilderAgent(GetKibanaAgentbuilderAgentArgs.builder()\n            .agentId(source.agentId())\n            .includeDependencies(true)\n            .build());\n\n        ctx.export(\"agentExport\", example);\n    }\n}\n```\n```yaml\nresources:\n  exportedTool:\n    type: elasticstack:KibanaAgentbuilderTool\n    name: exported_tool\n    properties:\n      toolId: doc-export-example-tool\n      type: esql\n      description: Tool for the export data source example\n      configuration:\n        fn::toJSON:\n          query: FROM logs-* | LIMIT 10\n  source:\n    type: elasticstack:KibanaAgentbuilderAgent\n    properties:\n      agentId: doc-export-source-agent\n      name: Documentation export agent\n      description: Agent whose configuration is exported by the data source below\n      instructions: You are helpful.\n      tools:\n        - ${exportedTool.toolId}\nvariables:\n  example:\n    fn::invoke:\n      function: elasticstack:getKibanaAgentbuilderAgent\n      arguments:\n        agentId: ${source.agentId}\n        includeDependencies: true\noutputs:\n  agentExport: ${example}\n```\n<!--End PulumiCodeChooser -->\n\n","inputs":{"description":"A collection of arguments for invoking getKibanaAgentbuilderAgent.\n","properties":{"agentId":{"description":"The agent ID.\n","type":"string"},"includeDependencies":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, exports the agent along with its tools and workflows. If omitted, <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> is used (tool rows only list <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span>, <span 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`\">`space_id`</span>, and <span pulumi-lang-nodejs=\"`toolId`\" pulumi-lang-dotnet=\"`ToolId`\" pulumi-lang-go=\"`toolId`\" pulumi-lang-python=\"`tool_id`\" pulumi-lang-yaml=\"`toolId`\" pulumi-lang-java=\"`toolId`\">`tool_id`</span> unless this is <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>).\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderAgentKibanaConnection:getKibanaAgentbuilderAgentKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"required":["agentId"],"type":"object"},"outputs":{"description":"A collection of values returned by getKibanaAgentbuilderAgent.\n","properties":{"agentId":{"description":"The agent ID.\n","type":"string"},"avatarColor":{"description":"Hex color code for the agent avatar (e.g., `#BFDBFF`).\n","type":"string"},"avatarSymbol":{"description":"Symbol or initials for the agent avatar (e.g., `SI`).\n","type":"string"},"description":{"description":"The agent description.\n","type":"string"},"id":{"description":"The composite ID of the agent: `<space_id>/<agent_id>`.\n","type":"string"},"includeDependencies":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, exports the agent along with its tools and workflows. If omitted, <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> is used (tool rows only list <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span>, <span 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`\">`space_id`</span>, and <span pulumi-lang-nodejs=\"`toolId`\" pulumi-lang-dotnet=\"`ToolId`\" pulumi-lang-go=\"`toolId`\" pulumi-lang-python=\"`tool_id`\" pulumi-lang-yaml=\"`toolId`\" pulumi-lang-java=\"`toolId`\">`tool_id`</span> unless this is <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>).\n","type":"boolean"},"instructions":{"description":"Optional system instructions that define the agent behavior.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderAgentKibanaConnection:getKibanaAgentbuilderAgentKibanaConnection"},"type":"array"},"labels":{"description":"List of labels for the agent.\n","items":{"type":"string"},"type":"array"},"name":{"description":"The agent name.\n","type":"string"},"skillIds":{"description":"Set of skill IDs assigned to the agent. Requires Elastic Stack 9.4.0 or later.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tools":{"description":"Tools attached to the agent. When include*dependencies is true, each entry includes full tool data and workflow YAML for workflow-type tools. When false, only id (composite space/tool), space*id, and<span pulumi-lang-nodejs=\" toolId \" pulumi-lang-dotnet=\" ToolId \" pulumi-lang-go=\" toolId \" pulumi-lang-python=\" tool_id \" pulumi-lang-yaml=\" toolId \" pulumi-lang-java=\" toolId \"> tool_id </span>are set.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderAgentTool:getKibanaAgentbuilderAgentTool"},"type":"array"}},"required":["agentId","avatarColor","avatarSymbol","description","id","instructions","labels","name","skillIds","tools"],"type":"object"}},"elasticstack:index/getKibanaAgentbuilderSkill:getKibanaAgentbuilderSkill":{"description":"Export an Agent Builder skill by ID. See the [Agent Builder API documentation](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-agent-builder).\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst docKibanaAgentbuilderSkill = new elasticstack.KibanaAgentbuilderSkill(\"doc\", {\n    skillId: \"doc-skill\",\n    name: \"Doc Skill\",\n    description: \"Example skill used by the data source lookup below.\",\n    content: \"Always be helpful and cite your sources.\",\n});\n// Look up the skill we just created. `skill_id` accepts either a bare id or\n// a composite \"<space_id>/<skill_id>\" string.\nconst doc = elasticstack.getKibanaAgentbuilderSkillOutput({\n    skillId: docKibanaAgentbuilderSkill.skillId,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndoc_kibana_agentbuilder_skill = elasticstack.KibanaAgentbuilderSkill(\"doc\",\n    skill_id=\"doc-skill\",\n    name=\"Doc Skill\",\n    description=\"Example skill used by the data source lookup below.\",\n    content=\"Always be helpful and cite your sources.\")\n# Look up the skill we just created. `skill_id` accepts either a bare id or\n# a composite \"<space_id>/<skill_id>\" string.\ndoc = elasticstack.get_kibana_agentbuilder_skill_output(skill_id=doc_kibana_agentbuilder_skill.skill_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var docKibanaAgentbuilderSkill = new Elasticstack.KibanaAgentbuilderSkill(\"doc\", new()\n    {\n        SkillId = \"doc-skill\",\n        Name = \"Doc Skill\",\n        Description = \"Example skill used by the data source lookup below.\",\n        Content = \"Always be helpful and cite your sources.\",\n    });\n\n    // Look up the skill we just created. `skill_id` accepts either a bare id or\n    // a composite \"<space_id>/<skill_id>\" string.\n    var doc = Elasticstack.GetKibanaAgentbuilderSkill.Invoke(new()\n    {\n        SkillId = docKibanaAgentbuilderSkill.SkillId,\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\tdocKibanaAgentbuilderSkill, err := elasticstack.NewKibanaAgentbuilderSkill(ctx, \"doc\", &elasticstack.KibanaAgentbuilderSkillArgs{\n\t\t\tSkillId:     pulumi.String(\"doc-skill\"),\n\t\t\tName:        pulumi.String(\"Doc Skill\"),\n\t\t\tDescription: pulumi.String(\"Example skill used by the data source lookup below.\"),\n\t\t\tContent:     pulumi.String(\"Always be helpful and cite your sources.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Look up the skill we just created. `skill_id` accepts either a bare id or\n\t\t// a composite \"<space_id>/<skill_id>\" string.\n\t\t_ = elasticstack.LookupKibanaAgentbuilderSkillOutput(ctx, elasticstack.GetKibanaAgentbuilderSkillOutputArgs{\n\t\t\tSkillId: docKibanaAgentbuilderSkill.SkillId,\n\t\t}, nil)\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.KibanaAgentbuilderSkill;\nimport com.pulumi.elasticstack.KibanaAgentbuilderSkillArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetKibanaAgentbuilderSkillArgs;\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 docKibanaAgentbuilderSkill = new KibanaAgentbuilderSkill(\"docKibanaAgentbuilderSkill\", KibanaAgentbuilderSkillArgs.builder()\n            .skillId(\"doc-skill\")\n            .name(\"Doc Skill\")\n            .description(\"Example skill used by the data source lookup below.\")\n            .content(\"Always be helpful and cite your sources.\")\n            .build());\n\n        // Look up the skill we just created. `skill_id` accepts either a bare id or\n        // a composite \"<space_id>/<skill_id>\" string.\n        final var doc = ElasticstackFunctions.getKibanaAgentbuilderSkill(GetKibanaAgentbuilderSkillArgs.builder()\n            .skillId(docKibanaAgentbuilderSkill.skillId())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  docKibanaAgentbuilderSkill:\n    type: elasticstack:KibanaAgentbuilderSkill\n    name: doc\n    properties:\n      skillId: doc-skill\n      name: Doc Skill\n      description: Example skill used by the data source lookup below.\n      content: Always be helpful and cite your sources.\nvariables:\n  # Look up the skill we just created. `skill_id` accepts either a bare id or\n  # a composite \"<space_id>/<skill_id>\" string.\n  doc:\n    fn::invoke:\n      function: elasticstack:getKibanaAgentbuilderSkill\n      arguments:\n        skillId: ${docKibanaAgentbuilderSkill.skillId}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getKibanaAgentbuilderSkill.\n","properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderSkillKibanaConnection:getKibanaAgentbuilderSkillKibanaConnection"},"type":"array"},"skillId":{"description":"The skill ID to look up. Accepts either a bare skill id or a composite `<space_id>/<skill_id>` string.\n","type":"string"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used unless the <span pulumi-lang-nodejs=\"`skillId`\" pulumi-lang-dotnet=\"`SkillId`\" pulumi-lang-go=\"`skillId`\" pulumi-lang-python=\"`skill_id`\" pulumi-lang-yaml=\"`skillId`\" pulumi-lang-java=\"`skillId`\">`skill_id`</span> argument supplies a composite space.\n","type":"string"}},"required":["skillId"],"type":"object"},"outputs":{"description":"A collection of values returned by getKibanaAgentbuilderSkill.\n","properties":{"content":{"description":"Skill instructions content as markdown.\n","type":"string"},"description":{"description":"Description of what the skill does.\n","type":"string"},"id":{"description":"The composite ID of the skill: `<space_id>/<skill_id>`.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderSkillKibanaConnection:getKibanaAgentbuilderSkillKibanaConnection"},"type":"array"},"name":{"description":"Human-readable name for the skill.\n","type":"string"},"referencedContents":{"description":"Ordered list of referenced-content entries. Order is preserved as returned by the API.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderSkillReferencedContent:getKibanaAgentbuilderSkillReferencedContent"},"type":"array"},"skillId":{"description":"The skill ID to look up. Accepts either a bare skill id or a composite `<space_id>/<skill_id>` string.\n","type":"string"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used unless the <span pulumi-lang-nodejs=\"`skillId`\" pulumi-lang-dotnet=\"`SkillId`\" pulumi-lang-go=\"`skillId`\" pulumi-lang-python=\"`skill_id`\" pulumi-lang-yaml=\"`skillId`\" pulumi-lang-java=\"`skillId`\">`skill_id`</span> argument supplies a composite space.\n","type":"string"},"toolIds":{"description":"Set of tool IDs from the tool registry that this skill references.\n","items":{"type":"string"},"type":"array"}},"required":["content","description","id","name","referencedContents","skillId","spaceId","toolIds"],"type":"object"}},"elasticstack:index/getKibanaAgentbuilderTool:getKibanaAgentbuilderTool":{"description":"Reads an Agent Builder tool by ID. See https://www.elastic.co/guide/en/kibana/current/agent-builder-api.html\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst lookup = new elasticstack.KibanaAgentbuilderTool(\"lookup\", {\n    toolId: \"doc-datasource-example-tool\",\n    type: \"esql\",\n    description: \"Example tool for datasource documentation\",\n    configuration: JSON.stringify({\n        query: \"FROM logs-* | LIMIT 1\",\n    }),\n});\nconst myTool = elasticstack.getKibanaAgentbuilderToolOutput({\n    id: lookup.toolId,\n});\nconst forToolDs = new elasticstack.KibanaAgentbuilderWorkflow(\"for_tool_ds\", {configurationYaml: `name: Workflow For Tool DS\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\\\"workflow\\\\\"\n`});\nconst workflowLookup = new elasticstack.KibanaAgentbuilderTool(\"workflow_lookup\", {\n    toolId: \"doc-datasource-example-workflow-tool\",\n    type: \"workflow\",\n    description: \"Workflow tool for datasource example\",\n    configuration: pulumi.jsonStringify({\n        workflow_id: forToolDs.workflowId,\n    }),\n}, {\n    dependsOn: [forToolDs],\n});\nconst myWorkflowTool = elasticstack.getKibanaAgentbuilderToolOutput({\n    id: workflowLookup.toolId,\n    includeWorkflow: true,\n});\nexport const workflowYaml = myWorkflowTool.apply(myWorkflowTool => myWorkflowTool.workflowConfigurationYaml);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nlookup = elasticstack.KibanaAgentbuilderTool(\"lookup\",\n    tool_id=\"doc-datasource-example-tool\",\n    type=\"esql\",\n    description=\"Example tool for datasource documentation\",\n    configuration=json.dumps({\n        \"query\": \"FROM logs-* | LIMIT 1\",\n    }))\nmy_tool = elasticstack.get_kibana_agentbuilder_tool_output(id=lookup.tool_id)\nfor_tool_ds = elasticstack.KibanaAgentbuilderWorkflow(\"for_tool_ds\", configuration_yaml=\"\"\"name: Workflow For Tool DS\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\"workflow\\\"\n\"\"\")\nworkflow_lookup = elasticstack.KibanaAgentbuilderTool(\"workflow_lookup\",\n    tool_id=\"doc-datasource-example-workflow-tool\",\n    type=\"workflow\",\n    description=\"Workflow tool for datasource example\",\n    configuration=pulumi.Output.json_dumps({\n        \"workflow_id\": for_tool_ds.workflow_id,\n    }),\n    opts = pulumi.ResourceOptions(depends_on=[for_tool_ds]))\nmy_workflow_tool = elasticstack.get_kibana_agentbuilder_tool_output(id=workflow_lookup.tool_id,\n    include_workflow=True)\npulumi.export(\"workflowYaml\", my_workflow_tool.workflow_configuration_yaml)\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(() => \n{\n    var lookup = new Elasticstack.KibanaAgentbuilderTool(\"lookup\", new()\n    {\n        ToolId = \"doc-datasource-example-tool\",\n        Type = \"esql\",\n        Description = \"Example tool for datasource documentation\",\n        Configuration = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"query\"] = \"FROM logs-* | LIMIT 1\",\n        }),\n    });\n\n    var myTool = Elasticstack.GetKibanaAgentbuilderTool.Invoke(new()\n    {\n        Id = lookup.ToolId,\n    });\n\n    var forToolDs = new Elasticstack.KibanaAgentbuilderWorkflow(\"for_tool_ds\", new()\n    {\n        ConfigurationYaml = @\"name: Workflow For Tool DS\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\"\"workflow\\\"\"\n\",\n    });\n\n    var workflowLookup = new Elasticstack.KibanaAgentbuilderTool(\"workflow_lookup\", new()\n    {\n        ToolId = \"doc-datasource-example-workflow-tool\",\n        Type = \"workflow\",\n        Description = \"Workflow tool for datasource example\",\n        Configuration = Output.JsonSerialize(Output.Create(new Dictionary<string, object?>\n        {\n            [\"workflow_id\"] = forToolDs.WorkflowId,\n        })),\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            forToolDs,\n        },\n    });\n\n    var myWorkflowTool = Elasticstack.GetKibanaAgentbuilderTool.Invoke(new()\n    {\n        Id = workflowLookup.ToolId,\n        IncludeWorkflow = true,\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"workflowYaml\"] = myWorkflowTool.Apply(getKibanaAgentbuilderToolResult => getKibanaAgentbuilderToolResult.WorkflowConfigurationYaml),\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\"query\": \"FROM logs-* | LIMIT 1\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\tlookup, err := elasticstack.NewKibanaAgentbuilderTool(ctx, \"lookup\", &elasticstack.KibanaAgentbuilderToolArgs{\n\t\t\tToolId:        pulumi.String(\"doc-datasource-example-tool\"),\n\t\t\tType:          pulumi.String(\"esql\"),\n\t\t\tDescription:   pulumi.String(\"Example tool for datasource documentation\"),\n\t\t\tConfiguration: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = elasticstack.LookupKibanaAgentbuilderToolOutput(ctx, elasticstack.GetKibanaAgentbuilderToolOutputArgs{\n\t\t\tId: lookup.ToolId,\n\t\t}, nil)\n\t\tforToolDs, err := elasticstack.NewKibanaAgentbuilderWorkflow(ctx, \"for_tool_ds\", &elasticstack.KibanaAgentbuilderWorkflowArgs{\n\t\t\tConfigurationYaml: pulumi.String(`name: Workflow For Tool DS\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\"workflow\\\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tworkflowLookup, err := elasticstack.NewKibanaAgentbuilderTool(ctx, \"workflow_lookup\", &elasticstack.KibanaAgentbuilderToolArgs{\n\t\t\tToolId:      pulumi.String(\"doc-datasource-example-workflow-tool\"),\n\t\t\tType:        pulumi.String(\"workflow\"),\n\t\t\tDescription: pulumi.String(\"Workflow tool for datasource example\"),\n\t\t\tConfiguration: forToolDs.WorkflowId.ApplyT(func(workflowId string) (pulumi.String, error) {\n\t\t\t\tvar _zero pulumi.String\n\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"workflow_id\": workflowId,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforToolDs,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyWorkflowTool := elasticstack.LookupKibanaAgentbuilderToolOutput(ctx, elasticstack.GetKibanaAgentbuilderToolOutputArgs{\n\t\t\tId:              workflowLookup.ToolId,\n\t\t\tIncludeWorkflow: pulumi.Bool(true),\n\t\t}, nil)\n\t\tctx.Export(\"workflowYaml\", myWorkflowTool.ApplyT(func(myWorkflowTool elasticstack.GetKibanaAgentbuilderToolResult) (*string, error) {\n\t\t\treturn &myWorkflowTool.WorkflowConfigurationYaml, 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.KibanaAgentbuilderTool;\nimport com.pulumi.elasticstack.KibanaAgentbuilderToolArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetKibanaAgentbuilderToolArgs;\nimport com.pulumi.elasticstack.KibanaAgentbuilderWorkflow;\nimport com.pulumi.elasticstack.KibanaAgentbuilderWorkflowArgs;\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        var lookup = new KibanaAgentbuilderTool(\"lookup\", KibanaAgentbuilderToolArgs.builder()\n            .toolId(\"doc-datasource-example-tool\")\n            .type(\"esql\")\n            .description(\"Example tool for datasource documentation\")\n            .configuration(serializeJson(\n                jsonObject(\n                    jsonProperty(\"query\", \"FROM logs-* | LIMIT 1\")\n                )))\n            .build());\n\n        final var myTool = ElasticstackFunctions.getKibanaAgentbuilderTool(GetKibanaAgentbuilderToolArgs.builder()\n            .id(lookup.toolId())\n            .build());\n\n        var forToolDs = new KibanaAgentbuilderWorkflow(\"forToolDs\", KibanaAgentbuilderWorkflowArgs.builder()\n            .configurationYaml(\"\"\"\nname: Workflow For Tool DS\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\"workflow\\\"\n            \"\"\")\n            .build());\n\n        var workflowLookup = new KibanaAgentbuilderTool(\"workflowLookup\", KibanaAgentbuilderToolArgs.builder()\n            .toolId(\"doc-datasource-example-workflow-tool\")\n            .type(\"workflow\")\n            .description(\"Workflow tool for datasource example\")\n            .configuration(forToolDs.workflowId().applyValue(_workflowId -> serializeJson(\n                jsonObject(\n                    jsonProperty(\"workflow_id\", _workflowId)\n                ))))\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(forToolDs)\n                .build());\n\n        final var myWorkflowTool = ElasticstackFunctions.getKibanaAgentbuilderTool(GetKibanaAgentbuilderToolArgs.builder()\n            .id(workflowLookup.toolId())\n            .includeWorkflow(true)\n            .build());\n\n        ctx.export(\"workflowYaml\", myWorkflowTool.applyValue(_myWorkflowTool -> _myWorkflowTool.workflowConfigurationYaml()));\n    }\n}\n```\n```yaml\nresources:\n  lookup:\n    type: elasticstack:KibanaAgentbuilderTool\n    properties:\n      toolId: doc-datasource-example-tool\n      type: esql\n      description: Example tool for datasource documentation\n      configuration:\n        fn::toJSON:\n          query: FROM logs-* | LIMIT 1\n  forToolDs:\n    type: elasticstack:KibanaAgentbuilderWorkflow\n    name: for_tool_ds\n    properties:\n      configurationYaml: |\n        name: Workflow For Tool DS\n        enabled: true\n        triggers:\n          - type: manual\n        inputs: []\n        steps:\n          - name: noop\n            type: console\n            with:\n              message: \\\"workflow\\\"\n  workflowLookup:\n    type: elasticstack:KibanaAgentbuilderTool\n    name: workflow_lookup\n    properties:\n      toolId: doc-datasource-example-workflow-tool\n      type: workflow\n      description: Workflow tool for datasource example\n      configuration:\n        fn::toJSON:\n          workflow_id: ${forToolDs.workflowId}\n    options:\n      dependsOn:\n        - ${forToolDs}\nvariables:\n  myTool:\n    fn::invoke:\n      function: elasticstack:getKibanaAgentbuilderTool\n      arguments:\n        id: ${lookup.toolId}\n  myWorkflowTool:\n    fn::invoke:\n      function: elasticstack:getKibanaAgentbuilderTool\n      arguments:\n        id: ${workflowLookup.toolId}\n        includeWorkflow: true\noutputs:\n  workflowYaml: ${myWorkflowTool.workflowConfigurationYaml}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getKibanaAgentbuilderTool.\n","properties":{"id":{"description":"The tool ID to look up.\n","type":"string"},"includeWorkflow":{"description":"When true, the workflow referenced by this tool will also be included. Only valid when the tool type is <span pulumi-lang-nodejs=\"`workflow`\" pulumi-lang-dotnet=\"`Workflow`\" pulumi-lang-go=\"`workflow`\" pulumi-lang-python=\"`workflow`\" pulumi-lang-yaml=\"`workflow`\" pulumi-lang-java=\"`workflow`\">`workflow`</span>. Requires Kibana 9.4.0 or above. Defaults to false.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderToolKibanaConnection:getKibanaAgentbuilderToolKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"required":["id"],"type":"object"},"outputs":{"description":"A collection of values returned by getKibanaAgentbuilderTool.\n","properties":{"configuration":{"description":"The tool configuration in JSON format.\n","type":"string"},"description":{"description":"Description of what the tool does.\n","type":"string"},"id":{"description":"The tool ID to look up.\n","type":"string"},"includeWorkflow":{"description":"When true, the workflow referenced by this tool will also be included. Only valid when the tool type is <span pulumi-lang-nodejs=\"`workflow`\" pulumi-lang-dotnet=\"`Workflow`\" pulumi-lang-go=\"`workflow`\" pulumi-lang-python=\"`workflow`\" pulumi-lang-yaml=\"`workflow`\" pulumi-lang-java=\"`workflow`\">`workflow`</span>. Requires Kibana 9.4.0 or above. Defaults to false.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderToolKibanaConnection:getKibanaAgentbuilderToolKibanaConnection"},"type":"array"},"readonly":{"description":"Whether the tool is read-only.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"Tags for categorizing and organizing tools.\n","items":{"type":"string"},"type":"array"},"toolId":{"description":"The ID of the tool.\n","type":"string"},"type":{"description":"The type of the tool (esql, index_search, workflow, mcp).\n","type":"string"},"workflowConfigurationYaml":{"description":"The YAML configuration of the referenced workflow. Only populated when <span pulumi-lang-nodejs=\"`includeWorkflow`\" pulumi-lang-dotnet=\"`IncludeWorkflow`\" pulumi-lang-go=\"`includeWorkflow`\" pulumi-lang-python=\"`include_workflow`\" pulumi-lang-yaml=\"`includeWorkflow`\" pulumi-lang-java=\"`includeWorkflow`\">`include_workflow`</span> is true.\n","type":"string"},"workflowId":{"description":"The ID of the referenced workflow. Only populated when <span pulumi-lang-nodejs=\"`includeWorkflow`\" pulumi-lang-dotnet=\"`IncludeWorkflow`\" pulumi-lang-go=\"`includeWorkflow`\" pulumi-lang-python=\"`include_workflow`\" pulumi-lang-yaml=\"`includeWorkflow`\" pulumi-lang-java=\"`includeWorkflow`\">`include_workflow`</span> is true.\n","type":"string"}},"required":["configuration","description","id","readonly","tags","toolId","type","workflowConfigurationYaml","workflowId"],"type":"object"}},"elasticstack:index/getKibanaAgentbuilderWorkflow:getKibanaAgentbuilderWorkflow":{"description":"Reads an Agent Builder workflow by ID. See https://www.elastic.co/guide/en/kibana/current/agent-builder-api.html\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst doc = new elasticstack.KibanaAgentbuilderWorkflow(\"doc\", {configurationYaml: `name: Doc Workflow\ndescription: Example workflow used by the datasource lookup below\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\\\"ok\\\\\"\n`});\nconst test = elasticstack.getKibanaAgentbuilderWorkflowOutput({\n    id: doc.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndoc = elasticstack.KibanaAgentbuilderWorkflow(\"doc\", configuration_yaml=\"\"\"name: Doc Workflow\ndescription: Example workflow used by the datasource lookup below\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\"ok\\\"\n\"\"\")\ntest = elasticstack.get_kibana_agentbuilder_workflow_output(id=doc.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var doc = new Elasticstack.KibanaAgentbuilderWorkflow(\"doc\", new()\n    {\n        ConfigurationYaml = @\"name: Doc Workflow\ndescription: Example workflow used by the datasource lookup below\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\"\"ok\\\"\"\n\",\n    });\n\n    var test = Elasticstack.GetKibanaAgentbuilderWorkflow.Invoke(new()\n    {\n        Id = doc.Id,\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\tdoc, err := elasticstack.NewKibanaAgentbuilderWorkflow(ctx, \"doc\", &elasticstack.KibanaAgentbuilderWorkflowArgs{\n\t\t\tConfigurationYaml: pulumi.String(`name: Doc Workflow\ndescription: Example workflow used by the datasource lookup below\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\"ok\\\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = elasticstack.LookupKibanaAgentbuilderWorkflowOutput(ctx, elasticstack.GetKibanaAgentbuilderWorkflowOutputArgs{\n\t\t\tId: doc.ID(),\n\t\t}, nil)\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.KibanaAgentbuilderWorkflow;\nimport com.pulumi.elasticstack.KibanaAgentbuilderWorkflowArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetKibanaAgentbuilderWorkflowArgs;\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 doc = new KibanaAgentbuilderWorkflow(\"doc\", KibanaAgentbuilderWorkflowArgs.builder()\n            .configurationYaml(\"\"\"\nname: Doc Workflow\ndescription: Example workflow used by the datasource lookup below\nenabled: true\ntriggers:\n  - type: manual\ninputs: []\nsteps:\n  - name: noop\n    type: console\n    with:\n      message: \\\"ok\\\"\n            \"\"\")\n            .build());\n\n        final var test = ElasticstackFunctions.getKibanaAgentbuilderWorkflow(GetKibanaAgentbuilderWorkflowArgs.builder()\n            .id(doc.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  doc:\n    type: elasticstack:KibanaAgentbuilderWorkflow\n    properties:\n      configurationYaml: |\n        name: Doc Workflow\n        description: Example workflow used by the datasource lookup below\n        enabled: true\n        triggers:\n          - type: manual\n        inputs: []\n        steps:\n          - name: noop\n            type: console\n            with:\n              message: \\\"ok\\\"\nvariables:\n  test:\n    fn::invoke:\n      function: elasticstack:getKibanaAgentbuilderWorkflow\n      arguments:\n        id: ${doc.id}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getKibanaAgentbuilderWorkflow.\n","properties":{"id":{"description":"The workflow ID to look up.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderWorkflowKibanaConnection:getKibanaAgentbuilderWorkflowKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"required":["id"],"type":"object"},"outputs":{"description":"A collection of values returned by getKibanaAgentbuilderWorkflow.\n","properties":{"configurationYaml":{"description":"The workflow definition in YAML format.\n","type":"string"},"id":{"description":"The workflow ID to look up.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaAgentbuilderWorkflowKibanaConnection:getKibanaAgentbuilderWorkflowKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"workflowId":{"description":"The ID of the workflow.\n","type":"string"}},"required":["configurationYaml","id","spaceId","workflowId"],"type":"object"}},"elasticstack:index/getKibanaExportSavedObjects:getKibanaExportSavedObjects":{"description":"## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Minimal connector so the export references a saved object that exists on first plan\n// (dashboard IDs are environment-specific; action connectors created here are deterministic).\nconst exportDemo = new elasticstack.KibanaActionConnector(\"export_demo\", {\n    name: \"examples-export-demo-connector\",\n    connectorTypeId: \".slack\",\n    secrets: JSON.stringify({\n        webhookUrl: \"https://example.com\",\n    }),\n});\nconst example = elasticstack.getKibanaExportSavedObjectsOutput({\n    spaceId: \"default\",\n    excludeExportDetails: true,\n    includeReferencesDeep: true,\n    objects: [{\n        type: \"action\",\n        id: exportDemo.connectorId,\n    }],\n});\nexport const savedObjects = example.apply(example => example.exportedObjects);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# Minimal connector so the export references a saved object that exists on first plan\n# (dashboard IDs are environment-specific; action connectors created here are deterministic).\nexport_demo = elasticstack.KibanaActionConnector(\"export_demo\",\n    name=\"examples-export-demo-connector\",\n    connector_type_id=\".slack\",\n    secrets=json.dumps({\n        \"webhookUrl\": \"https://example.com\",\n    }))\nexample = elasticstack.get_kibana_export_saved_objects_output(space_id=\"default\",\n    exclude_export_details=True,\n    include_references_deep=True,\n    objects=[{\n        \"type\": \"action\",\n        \"id\": export_demo.connector_id,\n    }])\npulumi.export(\"savedObjects\", example.exported_objects)\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(() => \n{\n    // Minimal connector so the export references a saved object that exists on first plan\n    // (dashboard IDs are environment-specific; action connectors created here are deterministic).\n    var exportDemo = new Elasticstack.KibanaActionConnector(\"export_demo\", new()\n    {\n        Name = \"examples-export-demo-connector\",\n        ConnectorTypeId = \".slack\",\n        Secrets = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"webhookUrl\"] = \"https://example.com\",\n        }),\n    });\n\n    var example = Elasticstack.GetKibanaExportSavedObjects.Invoke(new()\n    {\n        SpaceId = \"default\",\n        ExcludeExportDetails = true,\n        IncludeReferencesDeep = true,\n        Objects = new[]\n        {\n            new Elasticstack.Inputs.GetKibanaExportSavedObjectsObjectInputArgs\n            {\n                Type = \"action\",\n                Id = exportDemo.ConnectorId,\n            },\n        },\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"savedObjects\"] = example.Apply(getKibanaExportSavedObjectsResult => getKibanaExportSavedObjectsResult.ExportedObjects),\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\"webhookUrl\": \"https://example.com\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// Minimal connector so the export references a saved object that exists on first plan\n\t\t// (dashboard IDs are environment-specific; action connectors created here are deterministic).\n\t\texportDemo, err := elasticstack.NewKibanaActionConnector(ctx, \"export_demo\", &elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"examples-export-demo-connector\"),\n\t\t\tConnectorTypeId: pulumi.String(\".slack\"),\n\t\t\tSecrets:         pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := elasticstack.GetKibanaExportSavedObjectsOutput(ctx, elasticstack.GetKibanaExportSavedObjectsOutputArgs{\n\t\t\tSpaceId:               pulumi.String(\"default\"),\n\t\t\tExcludeExportDetails:  pulumi.Bool(true),\n\t\t\tIncludeReferencesDeep: pulumi.Bool(true),\n\t\t\tObjects: elasticstack.GetKibanaExportSavedObjectsObjectArray{\n\t\t\t\t&elasticstack.GetKibanaExportSavedObjectsObjectArgs{\n\t\t\t\t\tType: pulumi.String(\"action\"),\n\t\t\t\t\tId:   exportDemo.ConnectorId,\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tctx.Export(\"savedObjects\", example.ApplyT(func(example elasticstack.GetKibanaExportSavedObjectsResult) (*string, error) {\n\t\t\treturn &example.ExportedObjects, 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.KibanaActionConnector;\nimport com.pulumi.elasticstack.KibanaActionConnectorArgs;\nimport com.pulumi.elasticstack.ElasticstackFunctions;\nimport com.pulumi.elasticstack.inputs.GetKibanaExportSavedObjectsArgs;\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        // Minimal connector so the export references a saved object that exists on first plan\n        // (dashboard IDs are environment-specific; action connectors created here are deterministic).\n        var exportDemo = new KibanaActionConnector(\"exportDemo\", KibanaActionConnectorArgs.builder()\n            .name(\"examples-export-demo-connector\")\n            .connectorTypeId(\".slack\")\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"webhookUrl\", \"https://example.com\")\n                )))\n            .build());\n\n        final var example = ElasticstackFunctions.getKibanaExportSavedObjects(GetKibanaExportSavedObjectsArgs.builder()\n            .spaceId(\"default\")\n            .excludeExportDetails(true)\n            .includeReferencesDeep(true)\n            .objects(GetKibanaExportSavedObjectsObjectArgs.builder()\n                .type(\"action\")\n                .id(exportDemo.connectorId())\n                .build())\n            .build());\n\n        ctx.export(\"savedObjects\", example.applyValue(_example -> _example.exportedObjects()));\n    }\n}\n```\n```yaml\nresources:\n  # Minimal connector so the export references a saved object that exists on first plan\n  # (dashboard IDs are environment-specific; action connectors created here are deterministic).\n  exportDemo:\n    type: elasticstack:KibanaActionConnector\n    name: export_demo\n    properties:\n      name: examples-export-demo-connector\n      connectorTypeId: .slack\n      secrets:\n        fn::toJSON:\n          webhookUrl: https://example.com\nvariables:\n  example:\n    fn::invoke:\n      function: elasticstack:getKibanaExportSavedObjects\n      arguments:\n        spaceId: default\n        excludeExportDetails: true\n        includeReferencesDeep: true\n        objects:\n          - type: action\n            id: ${exportDemo.connectorId}\noutputs:\n  savedObjects: ${example.exportedObjects}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getKibanaExportSavedObjects.\n","properties":{"excludeExportDetails":{"description":"Do not add export details. Defaults to true.\n","type":"boolean"},"includeReferencesDeep":{"description":"Include references to other saved objects recursively. Defaults to true.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaExportSavedObjectsKibanaConnection:getKibanaExportSavedObjectsKibanaConnection"},"type":"array"},"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<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"required":["objects"],"type":"object"},"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"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaExportSavedObjectsKibanaConnection:getKibanaExportSavedObjectsKibanaConnection"},"type":"array"},"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<span 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 \"> space_id </span>is 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<!--Start PulumiCodeChooser -->\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(() => \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, &elasticstack.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<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getKibanaSecurityRole.\n","properties":{"description":{"description":"Description for the role\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleKibanaConnection:getKibanaSecurityRoleKibanaConnection"},"type":"array"},"metadata":{"description":"Optional meta-data.\n","type":"string"},"name":{"description":"The name for the role.\n","type":"string"}},"required":["name"],"type":"object"},"outputs":{"description":"A collection of values returned by getKibanaSecurityRole.\n","properties":{"description":{"description":"Description for the role\n","type":"string"},"elasticsearch":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearch:getKibanaSecurityRoleElasticsearch","description":"Elasticsearch cluster and index privileges.\n"},"id":{"description":"The provider-assigned unique ID for this managed resource.","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleKibanaConnection:getKibanaSecurityRoleKibanaConnection"},"type":"array"},"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":["description","elasticsearch","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<!--Start PulumiCodeChooser -->\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(() => \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, &elasticstack.GetKibanaSpacesArgs{}, 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.GetKibanaSpacesArgs;\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(GetKibanaSpacesArgs.builder()\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  allSpaces:\n    fn::invoke:\n      function: elasticstack:getKibanaSpaces\n      arguments: {}\n```\n<!--End PulumiCodeChooser -->\n","inputs":{"description":"A collection of arguments for invoking getKibanaSpaces.\n","properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSpacesKibanaConnection:getKibanaSpacesKibanaConnection"},"type":"array"}},"type":"object"},"outputs":{"description":"A collection of values returned by getKibanaSpaces.\n","properties":{"id":{"description":"Generated ID for the spaces.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSpacesKibanaConnection:getKibanaSpacesKibanaConnection"},"type":"array"},"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"}},"required":["__self__"],"type":"object"},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}},"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":"> This provider is a derived work of the [Terraform Provider](https://github.com/elastic/terraform-provider-elasticstack)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> 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":"> This provider is a derived work of the [Terraform Provider](https://github.com/elastic/terraform-provider-elasticstack)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> please consult the source [`terraform-provider-elasticstack` repo](https://github.com/elastic/terraform-provider-elasticstack/issues).","respectSchemaVersion":true}},"meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"name":"elasticstack","parameterization":{"baseProvider":{"name":"terraform-provider","version":"1.0.1"},"parameter":"eyJyZW1vdGUiOnsidXJsIjoicmVnaXN0cnkub3BlbnRvZnUub3JnL2VsYXN0aWMvZWxhc3RpY3N0YWNrIiwidmVyc2lvbiI6IjAuMTYuMSJ9fQ=="},"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","inputProperties":{"elasticsearches":{"description":"Elasticsearch connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FProviderElasticsearch:ProviderElasticsearch"},"type":"array"},"fleets":{"description":"Fleet connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FProviderFleet:ProviderFleet"},"type":"array"},"kibanas":{"description":"Kibana connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FProviderKibana:ProviderKibana"},"type":"array"}},"methods":{"terraformConfig":"pulumi:providers:elasticstack/terraformConfig"},"type":"object"},"publisher":"elastic","repository":"https://github.com/elastic/terraform-provider-elasticstack","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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\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","inputProperties":{"agentName":{"description":"The agent name is used by the UI to determine which settings to display.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FApmAgentConfigurationKibanaConnection:ApmAgentConfigurationKibanaConnection"},"type":"array"},"serviceEnvironment":{"description":"The environment of the service.\n","type":"string"},"serviceName":{"description":"The name of the service.\n","type":"string"},"settings":{"additionalProperties":{"type":"string"},"description":"Agent configuration settings.\n","type":"object"}},"properties":{"agentName":{"description":"The agent name is used by the UI to determine which settings to display.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FApmAgentConfigurationKibanaConnection:ApmAgentConfigurationKibanaConnection"},"type":"array"},"serviceEnvironment":{"description":"The environment of the service.\n","type":"string"},"serviceName":{"description":"The name of the service.\n","type":"string"},"settings":{"additionalProperties":{"type":"string"},"description":"Agent configuration settings.\n","type":"object"}},"required":["serviceName","settings"],"requiredInputs":["serviceName","settings"],"stateInputs":{"description":"Input properties used for looking up and filtering ApmAgentConfiguration resources.\n","properties":{"agentName":{"description":"The agent name is used by the UI to determine which settings to display.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FApmAgentConfigurationKibanaConnection:ApmAgentConfigurationKibanaConnection"},"type":"array"},"serviceEnvironment":{"description":"The environment of the service.\n","type":"string"},"serviceName":{"description":"The name of the service.\n","type":"string"},"settings":{"additionalProperties":{"type":"string"},"description":"Agent configuration settings.\n","type":"object"}},"type":"object"},"type":"object"},"elasticstack:index/apmSourceMap:ApmSourceMap":{"description":"Uploads and manages an APM source map artifact. Source maps allow APM to un-minify JavaScript stack traces.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Example 1: Upload a source map using inline JSON content.\n// sourcemap.json is write-only and never read back from the API.\nconst exampleJson = new elasticstack.ApmSourceMap(\"example_json\", {\n    serviceName: \"my-frontend\",\n    serviceVersion: \"1.0.0\",\n    bundleFilepath: \"/static/js/main.chunk.js\",\n    sourcemap: {\n        json: JSON.stringify({\n            version: 3,\n            file: \"main.chunk.js\",\n            sources: [\"src/index.js\"],\n            mappings: \"AAAA\",\n        }),\n    },\n});\n// Example 2: Upload a source map using base64-encoded binary content,\n// scoped to a non-default Kibana space.\n// sourcemap.binary is write-only and never read back from the API.\nconst exampleSpace = new elasticstack.ApmSourceMap(\"example_space\", {\n    serviceName: \"my-frontend\",\n    serviceVersion: \"2.0.0\",\n    bundleFilepath: \"/static/js/main.chunk.js\",\n    sourcemap: {\n        binary: \"eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jaHVuay5qcyIsInNvdXJjZXMiOlsic3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiQUFBQSJ9\",\n    },\n    spaceId: \"my-space\",\n});\n// Example 3: Upload a source map from a local file.\n// sourcemap.file.checksum is computed automatically from the file contents.\nconst exampleFile = new elasticstack.ApmSourceMap(\"example_file\", {\n    serviceName: \"my-frontend\",\n    serviceVersion: \"3.0.0\",\n    bundleFilepath: \"/static/js/main.chunk.js\",\n    sourcemap: {\n        file: {\n            path: \"/path/to/main.chunk.js.map\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# Example 1: Upload a source map using inline JSON content.\n# sourcemap.json is write-only and never read back from the API.\nexample_json = elasticstack.ApmSourceMap(\"example_json\",\n    service_name=\"my-frontend\",\n    service_version=\"1.0.0\",\n    bundle_filepath=\"/static/js/main.chunk.js\",\n    sourcemap={\n        \"json\": json.dumps({\n            \"version\": 3,\n            \"file\": \"main.chunk.js\",\n            \"sources\": [\"src/index.js\"],\n            \"mappings\": \"AAAA\",\n        }),\n    })\n# Example 2: Upload a source map using base64-encoded binary content,\n# scoped to a non-default Kibana space.\n# sourcemap.binary is write-only and never read back from the API.\nexample_space = elasticstack.ApmSourceMap(\"example_space\",\n    service_name=\"my-frontend\",\n    service_version=\"2.0.0\",\n    bundle_filepath=\"/static/js/main.chunk.js\",\n    sourcemap={\n        \"binary\": \"eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jaHVuay5qcyIsInNvdXJjZXMiOlsic3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiQUFBQSJ9\",\n    },\n    space_id=\"my-space\")\n# Example 3: Upload a source map from a local file.\n# sourcemap.file.checksum is computed automatically from the file contents.\nexample_file = elasticstack.ApmSourceMap(\"example_file\",\n    service_name=\"my-frontend\",\n    service_version=\"3.0.0\",\n    bundle_filepath=\"/static/js/main.chunk.js\",\n    sourcemap={\n        \"file\": {\n            \"path\": \"/path/to/main.chunk.js.map\",\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(() => \n{\n    // Example 1: Upload a source map using inline JSON content.\n    // sourcemap.json is write-only and never read back from the API.\n    var exampleJson = new Elasticstack.ApmSourceMap(\"example_json\", new()\n    {\n        ServiceName = \"my-frontend\",\n        ServiceVersion = \"1.0.0\",\n        BundleFilepath = \"/static/js/main.chunk.js\",\n        Sourcemap = new Elasticstack.Inputs.ApmSourceMapSourcemapArgs\n        {\n            Json = JsonSerializer.Serialize(new Dictionary<string, object?>\n            {\n                [\"version\"] = 3,\n                [\"file\"] = \"main.chunk.js\",\n                [\"sources\"] = new[]\n                {\n                    \"src/index.js\",\n                },\n                [\"mappings\"] = \"AAAA\",\n            }),\n        },\n    });\n\n    // Example 2: Upload a source map using base64-encoded binary content,\n    // scoped to a non-default Kibana space.\n    // sourcemap.binary is write-only and never read back from the API.\n    var exampleSpace = new Elasticstack.ApmSourceMap(\"example_space\", new()\n    {\n        ServiceName = \"my-frontend\",\n        ServiceVersion = \"2.0.0\",\n        BundleFilepath = \"/static/js/main.chunk.js\",\n        Sourcemap = new Elasticstack.Inputs.ApmSourceMapSourcemapArgs\n        {\n            Binary = \"eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jaHVuay5qcyIsInNvdXJjZXMiOlsic3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiQUFBQSJ9\",\n        },\n        SpaceId = \"my-space\",\n    });\n\n    // Example 3: Upload a source map from a local file.\n    // sourcemap.file.checksum is computed automatically from the file contents.\n    var exampleFile = new Elasticstack.ApmSourceMap(\"example_file\", new()\n    {\n        ServiceName = \"my-frontend\",\n        ServiceVersion = \"3.0.0\",\n        BundleFilepath = \"/static/js/main.chunk.js\",\n        Sourcemap = new Elasticstack.Inputs.ApmSourceMapSourcemapArgs\n        {\n            File = new Elasticstack.Inputs.ApmSourceMapSourcemapFileArgs\n            {\n                Path = \"/path/to/main.chunk.js.map\",\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\"version\": 3,\n\t\t\t\"file\":    \"main.chunk.js\",\n\t\t\t\"sources\": []string{\n\t\t\t\t\"src/index.js\",\n\t\t\t},\n\t\t\t\"mappings\": \"AAAA\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// Example 1: Upload a source map using inline JSON content.\n\t\t// sourcemap.json is write-only and never read back from the API.\n\t\t_, err = elasticstack.NewApmSourceMap(ctx, \"example_json\", &elasticstack.ApmSourceMapArgs{\n\t\t\tServiceName:    pulumi.String(\"my-frontend\"),\n\t\t\tServiceVersion: pulumi.String(\"1.0.0\"),\n\t\t\tBundleFilepath: pulumi.String(\"/static/js/main.chunk.js\"),\n\t\t\tSourcemap: &elasticstack.ApmSourceMapSourcemapArgs{\n\t\t\t\tJson: 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// Example 2: Upload a source map using base64-encoded binary content,\n\t\t// scoped to a non-default Kibana space.\n\t\t// sourcemap.binary is write-only and never read back from the API.\n\t\t_, err = elasticstack.NewApmSourceMap(ctx, \"example_space\", &elasticstack.ApmSourceMapArgs{\n\t\t\tServiceName:    pulumi.String(\"my-frontend\"),\n\t\t\tServiceVersion: pulumi.String(\"2.0.0\"),\n\t\t\tBundleFilepath: pulumi.String(\"/static/js/main.chunk.js\"),\n\t\t\tSourcemap: &elasticstack.ApmSourceMapSourcemapArgs{\n\t\t\t\tBinary: pulumi.String(\"eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jaHVuay5qcyIsInNvdXJjZXMiOlsic3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiQUFBQSJ9\"),\n\t\t\t},\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\t// Example 3: Upload a source map from a local file.\n\t\t// sourcemap.file.checksum is computed automatically from the file contents.\n\t\t_, err = elasticstack.NewApmSourceMap(ctx, \"example_file\", &elasticstack.ApmSourceMapArgs{\n\t\t\tServiceName:    pulumi.String(\"my-frontend\"),\n\t\t\tServiceVersion: pulumi.String(\"3.0.0\"),\n\t\t\tBundleFilepath: pulumi.String(\"/static/js/main.chunk.js\"),\n\t\t\tSourcemap: &elasticstack.ApmSourceMapSourcemapArgs{\n\t\t\t\tFile: &elasticstack.ApmSourceMapSourcemapFileArgs{\n\t\t\t\t\tPath: pulumi.String(\"/path/to/main.chunk.js.map\"),\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.ApmSourceMap;\nimport com.pulumi.elasticstack.ApmSourceMapArgs;\nimport com.pulumi.elasticstack.inputs.ApmSourceMapSourcemapArgs;\nimport com.pulumi.elasticstack.inputs.ApmSourceMapSourcemapFileArgs;\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        // Example 1: Upload a source map using inline JSON content.\n        // sourcemap.json is write-only and never read back from the API.\n        var exampleJson = new ApmSourceMap(\"exampleJson\", ApmSourceMapArgs.builder()\n            .serviceName(\"my-frontend\")\n            .serviceVersion(\"1.0.0\")\n            .bundleFilepath(\"/static/js/main.chunk.js\")\n            .sourcemap(ApmSourceMapSourcemapArgs.builder()\n                .json(serializeJson(\n                    jsonObject(\n                        jsonProperty(\"version\", 3),\n                        jsonProperty(\"file\", \"main.chunk.js\"),\n                        jsonProperty(\"sources\", jsonArray(\"src/index.js\")),\n                        jsonProperty(\"mappings\", \"AAAA\")\n                    )))\n                .build())\n            .build());\n\n        // Example 2: Upload a source map using base64-encoded binary content,\n        // scoped to a non-default Kibana space.\n        // sourcemap.binary is write-only and never read back from the API.\n        var exampleSpace = new ApmSourceMap(\"exampleSpace\", ApmSourceMapArgs.builder()\n            .serviceName(\"my-frontend\")\n            .serviceVersion(\"2.0.0\")\n            .bundleFilepath(\"/static/js/main.chunk.js\")\n            .sourcemap(ApmSourceMapSourcemapArgs.builder()\n                .binary(\"eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jaHVuay5qcyIsInNvdXJjZXMiOlsic3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiQUFBQSJ9\")\n                .build())\n            .spaceId(\"my-space\")\n            .build());\n\n        // Example 3: Upload a source map from a local file.\n        // sourcemap.file.checksum is computed automatically from the file contents.\n        var exampleFile = new ApmSourceMap(\"exampleFile\", ApmSourceMapArgs.builder()\n            .serviceName(\"my-frontend\")\n            .serviceVersion(\"3.0.0\")\n            .bundleFilepath(\"/static/js/main.chunk.js\")\n            .sourcemap(ApmSourceMapSourcemapArgs.builder()\n                .file(ApmSourceMapSourcemapFileArgs.builder()\n                    .path(\"/path/to/main.chunk.js.map\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Example 1: Upload a source map using inline JSON content.\n  # sourcemap.json is write-only and never read back from the API.\n  exampleJson:\n    type: elasticstack:ApmSourceMap\n    name: example_json\n    properties:\n      serviceName: my-frontend\n      serviceVersion: 1.0.0\n      bundleFilepath: /static/js/main.chunk.js\n      sourcemap:\n        json:\n          fn::toJSON:\n            version: 3\n            file: main.chunk.js\n            sources:\n              - src/index.js\n            mappings: AAAA\n  # Example 2: Upload a source map using base64-encoded binary content,\n  # scoped to a non-default Kibana space.\n  # sourcemap.binary is write-only and never read back from the API.\n  exampleSpace:\n    type: elasticstack:ApmSourceMap\n    name: example_space\n    properties:\n      serviceName: my-frontend\n      serviceVersion: 2.0.0\n      bundleFilepath: /static/js/main.chunk.js\n      sourcemap:\n        binary: eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5jaHVuay5qcyIsInNvdXJjZXMiOlsic3JjL2luZGV4LmpzIl0sIm1hcHBpbmdzIjoiQUFBQSJ9\n      spaceId: my-space\n  # Example 3: Upload a source map from a local file.\n  # sourcemap.file.checksum is computed automatically from the file contents.\n  exampleFile:\n    type: elasticstack:ApmSourceMap\n    name: example_file\n    properties:\n      serviceName: my-frontend\n      serviceVersion: 3.0.0\n      bundleFilepath: /static/js/main.chunk.js\n      sourcemap:\n        file:\n          path: /path/to/main.chunk.js.map\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"bundleFilepath":{"description":"The absolute path of the final bundle as used in the web application (e.g. `/static/js/main.chunk.js`). Must match the path used during the build.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FApmSourceMapKibanaConnection:ApmSourceMapKibanaConnection"},"type":"array"},"serviceName":{"description":"The name of the APM service that the source map applies to. Must match the `service.name` field in APM events.\n","type":"string"},"serviceVersion":{"description":"The version of the APM service that the source map applies to. Must match the `service.version` field in APM events.\n","type":"string"},"sourcemap":{"$ref":"#/types/elasticstack:index%2FApmSourceMapSourcemap:ApmSourceMapSourcemap","description":"The source map content. Exactly one of <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span>, <span pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\">`binary`</span>, or `file.path` must be set.\n"},"spaceId":{"description":"The Kibana space ID in which to manage the source map. Omit or set to `\"default\"` for the default space. When set, all API operations are prefixed with `/s/{space_id}`.\n","type":"string"}},"properties":{"bundleFilepath":{"description":"The absolute path of the final bundle as used in the web application (e.g. `/static/js/main.chunk.js`). Must match the path used during the build.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FApmSourceMapKibanaConnection:ApmSourceMapKibanaConnection"},"type":"array"},"serviceName":{"description":"The name of the APM service that the source map applies to. Must match the `service.name` field in APM events.\n","type":"string"},"serviceVersion":{"description":"The version of the APM service that the source map applies to. Must match the `service.version` field in APM events.\n","type":"string"},"sourcemap":{"$ref":"#/types/elasticstack:index%2FApmSourceMapSourcemap:ApmSourceMapSourcemap","description":"The source map content. Exactly one of <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span>, <span pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\">`binary`</span>, or `file.path` must be set.\n"},"spaceId":{"description":"The Kibana space ID in which to manage the source map. Omit or set to `\"default\"` for the default space. When set, all API operations are prefixed with `/s/{space_id}`.\n","type":"string"}},"required":["bundleFilepath","serviceName","serviceVersion","sourcemap"],"requiredInputs":["bundleFilepath","serviceName","serviceVersion","sourcemap"],"stateInputs":{"description":"Input properties used for looking up and filtering ApmSourceMap resources.\n","properties":{"bundleFilepath":{"description":"The absolute path of the final bundle as used in the web application (e.g. `/static/js/main.chunk.js`). Must match the path used during the build.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FApmSourceMapKibanaConnection:ApmSourceMapKibanaConnection"},"type":"array"},"serviceName":{"description":"The name of the APM service that the source map applies to. Must match the `service.name` field in APM events.\n","type":"string"},"serviceVersion":{"description":"The version of the APM service that the source map applies to. Must match the `service.version` field in APM events.\n","type":"string"},"sourcemap":{"$ref":"#/types/elasticstack:index%2FApmSourceMapSourcemap:ApmSourceMapSourcemap","description":"The source map content. Exactly one of <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span>, <span pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\">`binary`</span>, or `file.path` must be set.\n"},"spaceId":{"description":"The Kibana space ID in which to manage the source map. Omit or set to `\"default\"` for the default space. When set, all API operations are prefixed with `/s/{space_id}`.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.ElasticsearchClusterSettingsArgs{\n\t\t\tPersistent: &elasticstack.ElasticsearchClusterSettingsPersistentArgs{\n\t\t\t\tSettings: elasticstack.ElasticsearchClusterSettingsPersistentSettingArray{\n\t\t\t\t\t&elasticstack.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&elasticstack.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&elasticstack.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&elasticstack.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: &elasticstack.ElasticsearchClusterSettingsTransientArgs{\n\t\t\t\tSettings: elasticstack.ElasticsearchClusterSettingsTransientSettingArray{\n\t\t\t\t\t&elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsElasticsearchConnection:ElasticsearchClusterSettingsElasticsearchConnection"},"type":"array"},"persistent":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsPersistent:ElasticsearchClusterSettingsPersistent","description":"Persistent settings that survive a full cluster restart.\n"},"transient":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsTransient:ElasticsearchClusterSettingsTransient","description":"Transient settings that are reset on cluster restart.\n"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsElasticsearchConnection:ElasticsearchClusterSettingsElasticsearchConnection"},"type":"array"},"persistent":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsPersistent:ElasticsearchClusterSettingsPersistent","description":"Persistent settings that survive a full cluster restart.\n"},"transient":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsTransient:ElasticsearchClusterSettingsTransient","description":"Transient settings that are reset on cluster restart.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchClusterSettings resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsElasticsearchConnection:ElasticsearchClusterSettingsElasticsearchConnection"},"type":"array"},"persistent":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsPersistent:ElasticsearchClusterSettingsPersistent","description":"Persistent settings that survive a full cluster restart.\n"},"transient":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsTransient:ElasticsearchClusterSettingsTransient","description":"Transient settings that are reset on cluster restart.\n"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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// Enable the failure store on data streams composed from this component.\n// Requires Elasticsearch >= 9.1.0.\nconst failureStoreCustom = new elasticstack.ElasticsearchComponentTemplate(\"failure_store_custom\", {\n    name: \"logs-myapp@custom\",\n    template: {\n        dataStreamOptions: {\n            failureStore: {\n                enabled: true,\n                lifecycle: {\n                    dataRetention: \"30d\",\n                },\n            },\n        },\n    },\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# Enable the failure store on data streams composed from this component.\n# Requires Elasticsearch >= 9.1.0.\nfailure_store_custom = elasticstack.ElasticsearchComponentTemplate(\"failure_store_custom\",\n    name=\"logs-myapp@custom\",\n    template={\n        \"data_stream_options\": {\n            \"failure_store\": {\n                \"enabled\": True,\n                \"lifecycle\": {\n                    \"data_retention\": \"30d\",\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(() => \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<string, object?>\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    // Enable the failure store on data streams composed from this component.\n    // Requires Elasticsearch >= 9.1.0.\n    var failureStoreCustom = new Elasticstack.ElasticsearchComponentTemplate(\"failure_store_custom\", new()\n    {\n        Name = \"logs-myapp@custom\",\n        Template = new Elasticstack.Inputs.ElasticsearchComponentTemplateTemplateArgs\n        {\n            DataStreamOptions = new Elasticstack.Inputs.ElasticsearchComponentTemplateTemplateDataStreamOptionsArgs\n            {\n                FailureStore = new Elasticstack.Inputs.ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreArgs\n                {\n                    Enabled = true,\n                    Lifecycle = new Elasticstack.Inputs.ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreLifecycleArgs\n                    {\n                        DataRetention = \"30d\",\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\"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\", &elasticstack.ElasticsearchComponentTemplateArgs{\n\t\t\tName: pulumi.String(\"my_template\"),\n\t\t\tTemplate: &elasticstack.ElasticsearchComponentTemplateTemplateArgs{\n\t\t\t\tAliases: elasticstack.ElasticsearchComponentTemplateTemplateAliasArray{\n\t\t\t\t\t&elasticstack.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\", &elasticstack.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\t// Enable the failure store on data streams composed from this component.\n\t\t// Requires Elasticsearch >= 9.1.0.\n\t\t_, err = elasticstack.NewElasticsearchComponentTemplate(ctx, \"failure_store_custom\", &elasticstack.ElasticsearchComponentTemplateArgs{\n\t\t\tName: pulumi.String(\"logs-myapp@custom\"),\n\t\t\tTemplate: &elasticstack.ElasticsearchComponentTemplateTemplateArgs{\n\t\t\t\tDataStreamOptions: &elasticstack.ElasticsearchComponentTemplateTemplateDataStreamOptionsArgs{\n\t\t\t\t\tFailureStore: &elasticstack.ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreArgs{\n\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLifecycle: &elasticstack.ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreLifecycleArgs{\n\t\t\t\t\t\t\tDataRetention: pulumi.String(\"30d\"),\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.ElasticsearchComponentTemplate;\nimport com.pulumi.elasticstack.ElasticsearchComponentTemplateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchComponentTemplateTemplateArgs;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplate;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchComponentTemplateTemplateDataStreamOptionsArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreLifecycleArgs;\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        // Enable the failure store on data streams composed from this component.\n        // Requires Elasticsearch >= 9.1.0.\n        var failureStoreCustom = new ElasticsearchComponentTemplate(\"failureStoreCustom\", ElasticsearchComponentTemplateArgs.builder()\n            .name(\"logs-myapp@custom\")\n            .template(ElasticsearchComponentTemplateTemplateArgs.builder()\n                .dataStreamOptions(ElasticsearchComponentTemplateTemplateDataStreamOptionsArgs.builder()\n                    .failureStore(ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreArgs.builder()\n                        .enabled(true)\n                        .lifecycle(ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreLifecycleArgs.builder()\n                            .dataRetention(\"30d\")\n                            .build())\n                        .build())\n                    .build())\n                .build())\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  # Enable the failure store on data streams composed from this component.\n  # Requires Elasticsearch >= 9.1.0.\n  failureStoreCustom:\n    type: elasticstack:ElasticsearchComponentTemplate\n    name: failure_store_custom\n    properties:\n      name: logs-myapp@custom\n      template:\n        dataStreamOptions:\n          failureStore:\n            enabled: true\n            lifecycle:\n              dataRetention: 30d\n```\n<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<component_name>\n```\n\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateElasticsearchConnection:ElasticsearchComponentTemplateElasticsearchConnection"},"type":"array"},"metadata":{"description":"Optional user metadata about the component template.\n","type":"string"},"name":{"description":"Name of the component template to create.\n","type":"string"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplate:ElasticsearchComponentTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, or settings configuration.\n"},"version":{"description":"Version number used to manage component templates externally.\n","type":"number"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateElasticsearchConnection:ElasticsearchComponentTemplateElasticsearchConnection"},"type":"array"},"metadata":{"description":"Optional user metadata about the component template.\n","type":"string"},"name":{"description":"Name of the component template to create.\n","type":"string"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplate:ElasticsearchComponentTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, or settings configuration.\n"},"version":{"description":"Version number used to manage component templates externally.\n","type":"number"}},"required":["name"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchComponentTemplate resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateElasticsearchConnection:ElasticsearchComponentTemplateElasticsearchConnection"},"type":"array"},"metadata":{"description":"Optional user metadata about the component template.\n","type":"string"},"name":{"description":"Name of the component template to create.\n","type":"string"},"template":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplate:ElasticsearchComponentTemplateTemplate","description":"Template to be applied. It may optionally include an aliases, mappings, or settings configuration.\n"},"version":{"description":"Version number used to manage component templates externally.\n","type":"number"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchConnector:ElasticsearchConnector":{"description":"## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Self-managed PostgreSQL connector\nconst postgres = new elasticstack.ElasticsearchConnector(\"postgres\", {\n    connectorId: \"music-catalog\",\n    serviceType: \"postgresql\",\n    name: \"music catalog\",\n    description: \"Indexes the music catalog database.\",\n    indexName: \"search-music\",\n    language: \"english\",\n    pipeline: {\n        name: \"search-default-ingestion\",\n        extractBinaryContent: false,\n        reduceWhitespace: true,\n        runMlInference: false,\n    },\n    scheduling: {\n        full: {\n            enabled: true,\n            interval: \"0 0 * * * ?\",\n        },\n        incremental: {\n            enabled: false,\n            interval: \"0 0 0 * * ?\",\n        },\n        accessControl: {\n            enabled: false,\n            interval: \"0 0 0 * * ?\",\n        },\n    },\n    features: {\n        syncRules: {\n            basic: {\n                enabled: true,\n            },\n            advanced: {\n                enabled: false,\n            },\n        },\n        documentLevelSecurity: {\n            enabled: false,\n        },\n        incrementalSync: {\n            enabled: false,\n        },\n        nativeConnectorApiKeys: {\n            enabled: false,\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Self-managed PostgreSQL connector\npostgres = elasticstack.ElasticsearchConnector(\"postgres\",\n    connector_id=\"music-catalog\",\n    service_type=\"postgresql\",\n    name=\"music catalog\",\n    description=\"Indexes the music catalog database.\",\n    index_name=\"search-music\",\n    language=\"english\",\n    pipeline={\n        \"name\": \"search-default-ingestion\",\n        \"extract_binary_content\": False,\n        \"reduce_whitespace\": True,\n        \"run_ml_inference\": False,\n    },\n    scheduling={\n        \"full\": {\n            \"enabled\": True,\n            \"interval\": \"0 0 * * * ?\",\n        },\n        \"incremental\": {\n            \"enabled\": False,\n            \"interval\": \"0 0 0 * * ?\",\n        },\n        \"access_control\": {\n            \"enabled\": False,\n            \"interval\": \"0 0 0 * * ?\",\n        },\n    },\n    features={\n        \"sync_rules\": {\n            \"basic\": {\n                \"enabled\": True,\n            },\n            \"advanced\": {\n                \"enabled\": False,\n            },\n        },\n        \"document_level_security\": {\n            \"enabled\": False,\n        },\n        \"incremental_sync\": {\n            \"enabled\": False,\n        },\n        \"native_connector_api_keys\": {\n            \"enabled\": False,\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    // Self-managed PostgreSQL connector\n    var postgres = new Elasticstack.ElasticsearchConnector(\"postgres\", new()\n    {\n        ConnectorId = \"music-catalog\",\n        ServiceType = \"postgresql\",\n        Name = \"music catalog\",\n        Description = \"Indexes the music catalog database.\",\n        IndexName = \"search-music\",\n        Language = \"english\",\n        Pipeline = new Elasticstack.Inputs.ElasticsearchConnectorPipelineArgs\n        {\n            Name = \"search-default-ingestion\",\n            ExtractBinaryContent = false,\n            ReduceWhitespace = true,\n            RunMlInference = false,\n        },\n        Scheduling = new Elasticstack.Inputs.ElasticsearchConnectorSchedulingArgs\n        {\n            Full = new Elasticstack.Inputs.ElasticsearchConnectorSchedulingFullArgs\n            {\n                Enabled = true,\n                Interval = \"0 0 * * * ?\",\n            },\n            Incremental = new Elasticstack.Inputs.ElasticsearchConnectorSchedulingIncrementalArgs\n            {\n                Enabled = false,\n                Interval = \"0 0 0 * * ?\",\n            },\n            AccessControl = new Elasticstack.Inputs.ElasticsearchConnectorSchedulingAccessControlArgs\n            {\n                Enabled = false,\n                Interval = \"0 0 0 * * ?\",\n            },\n        },\n        Features = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesArgs\n        {\n            SyncRules = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesSyncRulesArgs\n            {\n                Basic = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesSyncRulesBasicArgs\n                {\n                    Enabled = true,\n                },\n                Advanced = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesSyncRulesAdvancedArgs\n                {\n                    Enabled = false,\n                },\n            },\n            DocumentLevelSecurity = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesDocumentLevelSecurityArgs\n            {\n                Enabled = false,\n            },\n            IncrementalSync = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesIncrementalSyncArgs\n            {\n                Enabled = false,\n            },\n            NativeConnectorApiKeys = new Elasticstack.Inputs.ElasticsearchConnectorFeaturesNativeConnectorApiKeysArgs\n            {\n                Enabled = false,\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// Self-managed PostgreSQL connector\n\t\t_, err := elasticstack.NewElasticsearchConnector(ctx, \"postgres\", &elasticstack.ElasticsearchConnectorArgs{\n\t\t\tConnectorId: pulumi.String(\"music-catalog\"),\n\t\t\tServiceType: pulumi.String(\"postgresql\"),\n\t\t\tName:        pulumi.String(\"music catalog\"),\n\t\t\tDescription: pulumi.String(\"Indexes the music catalog database.\"),\n\t\t\tIndexName:   pulumi.String(\"search-music\"),\n\t\t\tLanguage:    pulumi.String(\"english\"),\n\t\t\tPipeline: &elasticstack.ElasticsearchConnectorPipelineArgs{\n\t\t\t\tName:                 pulumi.String(\"search-default-ingestion\"),\n\t\t\t\tExtractBinaryContent: pulumi.Bool(false),\n\t\t\t\tReduceWhitespace:     pulumi.Bool(true),\n\t\t\t\tRunMlInference:       pulumi.Bool(false),\n\t\t\t},\n\t\t\tScheduling: &elasticstack.ElasticsearchConnectorSchedulingArgs{\n\t\t\t\tFull: &elasticstack.ElasticsearchConnectorSchedulingFullArgs{\n\t\t\t\t\tEnabled:  pulumi.Bool(true),\n\t\t\t\t\tInterval: pulumi.String(\"0 0 * * * ?\"),\n\t\t\t\t},\n\t\t\t\tIncremental: &elasticstack.ElasticsearchConnectorSchedulingIncrementalArgs{\n\t\t\t\t\tEnabled:  pulumi.Bool(false),\n\t\t\t\t\tInterval: pulumi.String(\"0 0 0 * * ?\"),\n\t\t\t\t},\n\t\t\t\tAccessControl: &elasticstack.ElasticsearchConnectorSchedulingAccessControlArgs{\n\t\t\t\t\tEnabled:  pulumi.Bool(false),\n\t\t\t\t\tInterval: pulumi.String(\"0 0 0 * * ?\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFeatures: &elasticstack.ElasticsearchConnectorFeaturesArgs{\n\t\t\t\tSyncRules: &elasticstack.ElasticsearchConnectorFeaturesSyncRulesArgs{\n\t\t\t\t\tBasic: &elasticstack.ElasticsearchConnectorFeaturesSyncRulesBasicArgs{\n\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tAdvanced: &elasticstack.ElasticsearchConnectorFeaturesSyncRulesAdvancedArgs{\n\t\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDocumentLevelSecurity: &elasticstack.ElasticsearchConnectorFeaturesDocumentLevelSecurityArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tIncrementalSync: &elasticstack.ElasticsearchConnectorFeaturesIncrementalSyncArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tNativeConnectorApiKeys: &elasticstack.ElasticsearchConnectorFeaturesNativeConnectorApiKeysArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(false),\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.ElasticsearchConnector;\nimport com.pulumi.elasticstack.ElasticsearchConnectorArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorPipelineArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorSchedulingArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorSchedulingFullArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorSchedulingIncrementalArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorSchedulingAccessControlArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesSyncRulesArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesSyncRulesBasicArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesSyncRulesAdvancedArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesDocumentLevelSecurityArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesIncrementalSyncArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchConnectorFeaturesNativeConnectorApiKeysArgs;\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        // Self-managed PostgreSQL connector\n        var postgres = new ElasticsearchConnector(\"postgres\", ElasticsearchConnectorArgs.builder()\n            .connectorId(\"music-catalog\")\n            .serviceType(\"postgresql\")\n            .name(\"music catalog\")\n            .description(\"Indexes the music catalog database.\")\n            .indexName(\"search-music\")\n            .language(\"english\")\n            .pipeline(ElasticsearchConnectorPipelineArgs.builder()\n                .name(\"search-default-ingestion\")\n                .extractBinaryContent(false)\n                .reduceWhitespace(true)\n                .runMlInference(false)\n                .build())\n            .scheduling(ElasticsearchConnectorSchedulingArgs.builder()\n                .full(ElasticsearchConnectorSchedulingFullArgs.builder()\n                    .enabled(true)\n                    .interval(\"0 0 * * * ?\")\n                    .build())\n                .incremental(ElasticsearchConnectorSchedulingIncrementalArgs.builder()\n                    .enabled(false)\n                    .interval(\"0 0 0 * * ?\")\n                    .build())\n                .accessControl(ElasticsearchConnectorSchedulingAccessControlArgs.builder()\n                    .enabled(false)\n                    .interval(\"0 0 0 * * ?\")\n                    .build())\n                .build())\n            .features(ElasticsearchConnectorFeaturesArgs.builder()\n                .syncRules(ElasticsearchConnectorFeaturesSyncRulesArgs.builder()\n                    .basic(ElasticsearchConnectorFeaturesSyncRulesBasicArgs.builder()\n                        .enabled(true)\n                        .build())\n                    .advanced(ElasticsearchConnectorFeaturesSyncRulesAdvancedArgs.builder()\n                        .enabled(false)\n                        .build())\n                    .build())\n                .documentLevelSecurity(ElasticsearchConnectorFeaturesDocumentLevelSecurityArgs.builder()\n                    .enabled(false)\n                    .build())\n                .incrementalSync(ElasticsearchConnectorFeaturesIncrementalSyncArgs.builder()\n                    .enabled(false)\n                    .build())\n                .nativeConnectorApiKeys(ElasticsearchConnectorFeaturesNativeConnectorApiKeysArgs.builder()\n                    .enabled(false)\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Self-managed PostgreSQL connector\n  postgres:\n    type: elasticstack:ElasticsearchConnector\n    properties:\n      connectorId: music-catalog\n      serviceType: postgresql\n      name: music catalog\n      description: Indexes the music catalog database.\n      indexName: search-music\n      language: english\n      pipeline:\n        name: search-default-ingestion\n        extractBinaryContent: false\n        reduceWhitespace: true\n        runMlInference: false\n      scheduling:\n        full:\n          enabled: true\n          interval: 0 0 * * * ?\n        incremental:\n          enabled: false\n          interval: 0 0 0 * * ?\n        accessControl:\n          enabled: false\n          interval: 0 0 0 * * ?\n      features:\n        syncRules:\n          basic:\n            enabled: true\n          advanced:\n            enabled: false\n        documentLevelSecurity:\n          enabled: false\n        incrementalSync:\n          enabled: false\n        nativeConnectorApiKeys:\n          enabled: false\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nImport using the bare connector ID\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchConnector:ElasticsearchConnector postgres music-catalog\n```\n\nOr using the composite ID\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchConnector:ElasticsearchConnector postgres <cluster_uuid>/music-catalog\n```\n\n","inputProperties":{"apiKeyId":{"description":"ID of the API key used by the connector service for authorization.\n","type":"string"},"apiKeySecretId":{"description":"ID of the connector secret holding the API key (Elastic-managed connectors only).\n","type":"string"},"configurationValues":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorConfigurationValues:ElasticsearchConnectorConfigurationValues"},"description":"User-supplied connector configuration values keyed by field name. Each element must set exactly one of <span pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\">`string`</span>, <span pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\">`number`</span>, <span pulumi-lang-nodejs=\"`bool`\" pulumi-lang-dotnet=\"`Bool`\" pulumi-lang-go=\"`bool`\" pulumi-lang-python=\"`bool`\" pulumi-lang-yaml=\"`bool`\" pulumi-lang-java=\"`bool`\">`bool`</span>, <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span>, or <span pulumi-lang-nodejs=\"`secretValue`\" pulumi-lang-dotnet=\"`SecretValue`\" pulumi-lang-go=\"`secretValue`\" pulumi-lang-python=\"`secret_value`\" pulumi-lang-yaml=\"`secretValue`\" pulumi-lang-java=\"`secretValue`\">`secret_value`</span>. Removing a key stops managing it but does not unset the value server-side.\n","type":"object"},"connectorId":{"description":"Unique connector identifier. When omitted, Elasticsearch auto-generates an ID on create.\n","type":"string"},"description":{"description":"Connector description.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorElasticsearchConnection:ElasticsearchConnectorElasticsearchConnection"},"type":"array"},"features":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeatures:ElasticsearchConnectorFeatures","description":"Connector feature flags. Changes trigger `PUT /_connector/{id}/_features`.\n"},"indexName":{"description":"Destination Elasticsearch index name. When omitted, Elasticsearch may assign a default on create.\n","type":"string"},"isNative":{"description":"Whether this is an Elastic-managed connector (<span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>) or self-managed (<span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>). Defaults to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> on the Elasticsearch side when omitted.\n","type":"boolean"},"language":{"description":"Analyzer language for the connector index.\n","type":"string"},"name":{"description":"Human-readable connector name.\n","type":"string"},"pipeline":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorPipeline:ElasticsearchConnectorPipeline","description":"Ingest pipeline settings applied to synced documents. Changes trigger `PUT /_connector/{id}/_pipeline`.\n"},"scheduling":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorScheduling:ElasticsearchConnectorScheduling","description":"Sync scheduling for full, incremental, and access-control jobs. Changes trigger `PUT /_connector/{id}/_scheduling`.\n"},"serviceType":{"description":"Connector service type (for example <span pulumi-lang-nodejs=\"`postgresql`\" pulumi-lang-dotnet=\"`Postgresql`\" pulumi-lang-go=\"`postgresql`\" pulumi-lang-python=\"`postgresql`\" pulumi-lang-yaml=\"`postgresql`\" pulumi-lang-java=\"`postgresql`\">`postgresql`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\">`github`</span>). New service types may be added over time; the provider does not validate against a fixed enum.\n","type":"string"}},"properties":{"apiKeyId":{"description":"ID of the API key used by the connector service for authorization.\n","type":"string"},"apiKeySecretId":{"description":"ID of the connector secret holding the API key (Elastic-managed connectors only).\n","type":"string"},"configurationValues":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorConfigurationValues:ElasticsearchConnectorConfigurationValues"},"description":"User-supplied connector configuration values keyed by field name. Each element must set exactly one of <span pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\">`string`</span>, <span pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\">`number`</span>, <span pulumi-lang-nodejs=\"`bool`\" pulumi-lang-dotnet=\"`Bool`\" pulumi-lang-go=\"`bool`\" pulumi-lang-python=\"`bool`\" pulumi-lang-yaml=\"`bool`\" pulumi-lang-java=\"`bool`\">`bool`</span>, <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span>, or <span pulumi-lang-nodejs=\"`secretValue`\" pulumi-lang-dotnet=\"`SecretValue`\" pulumi-lang-go=\"`secretValue`\" pulumi-lang-python=\"`secret_value`\" pulumi-lang-yaml=\"`secretValue`\" pulumi-lang-java=\"`secretValue`\">`secret_value`</span>. Removing a key stops managing it but does not unset the value server-side.\n","type":"object"},"connectorId":{"description":"Unique connector identifier. When omitted, Elasticsearch auto-generates an ID on create.\n","type":"string"},"description":{"description":"Connector description.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorElasticsearchConnection:ElasticsearchConnectorElasticsearchConnection"},"type":"array"},"features":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeatures:ElasticsearchConnectorFeatures","description":"Connector feature flags. Changes trigger `PUT /_connector/{id}/_features`.\n"},"indexName":{"description":"Destination Elasticsearch index name. When omitted, Elasticsearch may assign a default on create.\n","type":"string"},"isNative":{"description":"Whether this is an Elastic-managed connector (<span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>) or self-managed (<span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>). Defaults to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> on the Elasticsearch side when omitted.\n","type":"boolean"},"language":{"description":"Analyzer language for the connector index.\n","type":"string"},"name":{"description":"Human-readable connector name.\n","type":"string"},"pipeline":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorPipeline:ElasticsearchConnectorPipeline","description":"Ingest pipeline settings applied to synced documents. Changes trigger `PUT /_connector/{id}/_pipeline`.\n"},"scheduling":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorScheduling:ElasticsearchConnectorScheduling","description":"Sync scheduling for full, incremental, and access-control jobs. Changes trigger `PUT /_connector/{id}/_scheduling`.\n"},"serviceType":{"description":"Connector service type (for example <span pulumi-lang-nodejs=\"`postgresql`\" pulumi-lang-dotnet=\"`Postgresql`\" pulumi-lang-go=\"`postgresql`\" pulumi-lang-python=\"`postgresql`\" pulumi-lang-yaml=\"`postgresql`\" pulumi-lang-java=\"`postgresql`\">`postgresql`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\">`github`</span>). New service types may be added over time; the provider does not validate against a fixed enum.\n","type":"string"}},"required":["connectorId","features","indexName","isNative","name","pipeline","scheduling","serviceType"],"requiredInputs":["serviceType"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchConnector resources.\n","properties":{"apiKeyId":{"description":"ID of the API key used by the connector service for authorization.\n","type":"string"},"apiKeySecretId":{"description":"ID of the connector secret holding the API key (Elastic-managed connectors only).\n","type":"string"},"configurationValues":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorConfigurationValues:ElasticsearchConnectorConfigurationValues"},"description":"User-supplied connector configuration values keyed by field name. Each element must set exactly one of <span pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\">`string`</span>, <span pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\">`number`</span>, <span pulumi-lang-nodejs=\"`bool`\" pulumi-lang-dotnet=\"`Bool`\" pulumi-lang-go=\"`bool`\" pulumi-lang-python=\"`bool`\" pulumi-lang-yaml=\"`bool`\" pulumi-lang-java=\"`bool`\">`bool`</span>, <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span>, or <span pulumi-lang-nodejs=\"`secretValue`\" pulumi-lang-dotnet=\"`SecretValue`\" pulumi-lang-go=\"`secretValue`\" pulumi-lang-python=\"`secret_value`\" pulumi-lang-yaml=\"`secretValue`\" pulumi-lang-java=\"`secretValue`\">`secret_value`</span>. Removing a key stops managing it but does not unset the value server-side.\n","type":"object"},"connectorId":{"description":"Unique connector identifier. When omitted, Elasticsearch auto-generates an ID on create.\n","type":"string"},"description":{"description":"Connector description.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorElasticsearchConnection:ElasticsearchConnectorElasticsearchConnection"},"type":"array"},"features":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeatures:ElasticsearchConnectorFeatures","description":"Connector feature flags. Changes trigger `PUT /_connector/{id}/_features`.\n"},"indexName":{"description":"Destination Elasticsearch index name. When omitted, Elasticsearch may assign a default on create.\n","type":"string"},"isNative":{"description":"Whether this is an Elastic-managed connector (<span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>) or self-managed (<span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>). Defaults to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> on the Elasticsearch side when omitted.\n","type":"boolean"},"language":{"description":"Analyzer language for the connector index.\n","type":"string"},"name":{"description":"Human-readable connector name.\n","type":"string"},"pipeline":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorPipeline:ElasticsearchConnectorPipeline","description":"Ingest pipeline settings applied to synced documents. Changes trigger `PUT /_connector/{id}/_pipeline`.\n"},"scheduling":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorScheduling:ElasticsearchConnectorScheduling","description":"Sync scheduling for full, incremental, and access-control jobs. Changes trigger `PUT /_connector/{id}/_scheduling`.\n"},"serviceType":{"description":"Connector service type (for example <span pulumi-lang-nodejs=\"`postgresql`\" pulumi-lang-dotnet=\"`Postgresql`\" pulumi-lang-go=\"`postgresql`\" pulumi-lang-python=\"`postgresql`\" pulumi-lang-yaml=\"`postgresql`\" pulumi-lang-java=\"`postgresql`\">`postgresql`</span>, <span pulumi-lang-nodejs=\"`mysql`\" pulumi-lang-dotnet=\"`Mysql`\" pulumi-lang-go=\"`mysql`\" pulumi-lang-python=\"`mysql`\" pulumi-lang-yaml=\"`mysql`\" pulumi-lang-java=\"`mysql`\">`mysql`</span>, <span pulumi-lang-nodejs=\"`github`\" pulumi-lang-dotnet=\"`Github`\" pulumi-lang-go=\"`github`\" pulumi-lang-python=\"`github`\" pulumi-lang-yaml=\"`github`\" pulumi-lang-java=\"`github`\">`github`</span>). New service types may be added over time; the provider does not validate against a fixed enum.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\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\", &elasticstack.ElasticsearchIndexLifecycleArgs{\n\t\t\tName: pulumi.String(\"my_ilm_policy\"),\n\t\t\tHot: &elasticstack.ElasticsearchIndexLifecycleHotArgs{\n\t\t\t\tMinAge: pulumi.String(\"1h\"),\n\t\t\t\tSetPriority: &elasticstack.ElasticsearchIndexLifecycleHotSetPriorityArgs{\n\t\t\t\t\tPriority: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t\tRollover: &elasticstack.ElasticsearchIndexLifecycleHotRolloverArgs{\n\t\t\t\t\tMaxAge: pulumi.String(\"1d\"),\n\t\t\t\t},\n\t\t\t\tReadonly: &elasticstack.ElasticsearchIndexLifecycleHotReadonlyArgs{},\n\t\t\t},\n\t\t\tDelete: &elasticstack.ElasticsearchIndexLifecycleDeleteArgs{\n\t\t\t\tMinAge: pulumi.String(\"2d\"),\n\t\t\t\tDelete: &elasticstack.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\", &elasticstack.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: &elasticstack.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: &elasticstack.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\", &elasticstack.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 -> 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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<data_stream_name>\n```\n\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamElasticsearchConnection:ElasticsearchDataStreamElasticsearchConnection"},"type":"array"},"name":{"description":"Name of the data stream to create.\n","type":"string"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamElasticsearchConnection:ElasticsearchDataStreamElasticsearchConnection"},"type":"array"},"generation":{"description":"Current generation for the data stream.\n","type":"number"},"hidden":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the data stream is hidden.\n","type":"boolean"},"ilmPolicy":{"description":"Name of the current ILM lifecycle policy in the stream's matching index template.\n","type":"string"},"indices":{"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","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamIndex:ElasticsearchDataStreamIndex"},"type":"array"},"metadata":{"description":"Custom metadata for the stream, copied from the _meta object of the stream's matching index template.\n","type":"string"},"name":{"description":"Name of the data stream to create.\n","type":"string"},"replicated":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, 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","type":"boolean"},"status":{"description":"Health status of the data stream.\n","type":"string"},"system":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the data stream is created and managed by an Elastic stack component and cannot be modified through normal user interaction.\n","type":"boolean"},"template":{"description":"Name of the index template used to create the data stream's backing indices.\n","type":"string"},"timestampField":{"description":"Contains information about the data stream's @timestamp field.\n","type":"string"}},"required":["generation","hidden","ilmPolicy","indices","metadata","name","replicated","status","system","template","timestampField"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchDataStream resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamElasticsearchConnection:ElasticsearchDataStreamElasticsearchConnection"},"type":"array"},"generation":{"description":"Current generation for the data stream.\n","type":"number"},"hidden":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the data stream is hidden.\n","type":"boolean"},"ilmPolicy":{"description":"Name of the current ILM lifecycle policy in the stream's matching index template.\n","type":"string"},"indices":{"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","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamIndex:ElasticsearchDataStreamIndex"},"type":"array"},"metadata":{"description":"Custom metadata for the stream, copied from the _meta object of the stream's matching index template.\n","type":"string"},"name":{"description":"Name of the data stream to create.\n","type":"string"},"replicated":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, 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","type":"boolean"},"status":{"description":"Health status of the data stream.\n","type":"string"},"system":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the data stream is created and managed by an Elastic stack component and cannot be modified through normal user interaction.\n","type":"boolean"},"template":{"description":"Name of the index template used to create the data stream's backing indices.\n","type":"string"},"timestampField":{"description":"Contains information about the data stream's @timestamp field.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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: &elasticstack.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\", &elasticstack.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\", &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<data_stream_name>\n```\n\n","inputProperties":{"dataRetention":{"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","type":"string"},"downsamplings":{"description":"Downsampling configuration objects, each defining an after interval representing when the backing index is meant to be downsampled and a<span 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 \"> fixed_interval </span>representing the downsampling interval.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleDownsampling:ElasticsearchDataStreamLifecycleDownsampling"},"type":"array"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleElasticsearchConnection:ElasticsearchDataStreamLifecycleElasticsearchConnection"},"type":"array"},"enabled":{"description":"Data stream lifecycle on/off.\n","type":"boolean"},"expandWildcards":{"description":"Determines how wildcard patterns in the <span pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\">`indices`</span> parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n","type":"string"},"name":{"description":"Name of the data stream. Supports wildcards.\n","type":"string"}},"properties":{"dataRetention":{"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","type":"string"},"downsamplings":{"description":"Downsampling configuration objects, each defining an after interval representing when the backing index is meant to be downsampled and a<span 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 \"> fixed_interval </span>representing the downsampling interval.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleDownsampling:ElasticsearchDataStreamLifecycleDownsampling"},"type":"array"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleElasticsearchConnection:ElasticsearchDataStreamLifecycleElasticsearchConnection"},"type":"array"},"enabled":{"description":"Data stream lifecycle on/off.\n","type":"boolean"},"expandWildcards":{"description":"Determines how wildcard patterns in the <span pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\">`indices`</span> parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n","type":"string"},"name":{"description":"Name of the data stream. Supports wildcards.\n","type":"string"}},"required":["enabled","expandWildcards","name"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchDataStreamLifecycle resources.\n","properties":{"dataRetention":{"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","type":"string"},"downsamplings":{"description":"Downsampling configuration objects, each defining an after interval representing when the backing index is meant to be downsampled and a<span 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 \"> fixed_interval </span>representing the downsampling interval.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleDownsampling:ElasticsearchDataStreamLifecycleDownsampling"},"type":"array"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchDataStreamLifecycleElasticsearchConnection:ElasticsearchDataStreamLifecycleElasticsearchConnection"},"type":"array"},"enabled":{"description":"Data stream lifecycle on/off.\n","type":"boolean"},"expandWildcards":{"description":"Determines how wildcard patterns in the <span pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\">`indices`</span> parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n","type":"string"},"name":{"description":"Name of the data stream. Supports wildcards.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \n{\n    var myIndex = new Elasticstack.ElasticsearchIndex(\"my_index\", new()\n    {\n        Name = \"my-index\",\n        Mappings = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"properties\"] = new Dictionary<string, object?>\n            {\n                [\"email\"] = new Dictionary<string, object?>\n                {\n                    [\"type\"] = \"text\",\n                },\n                [\"first_name\"] = new Dictionary<string, object?>\n                {\n                    [\"type\"] = \"text\",\n                },\n                [\"last_name\"] = new Dictionary<string, object?>\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<string, object?>\n        {\n            [\"bool\"] = new Dictionary<string, object?>\n            {\n                [\"must\"] = new[]\n                {\n                    new Dictionary<string, object?>\n                    {\n                        [\"term\"] = new Dictionary<string, object?>\n                        {\n                            [\"b\"] = \"A\",\n                        },\n                    },\n                },\n                [\"must_not\"] = new[]\n                {\n                    new Dictionary<string, object?>\n                    {\n                        [\"term\"] = new Dictionary<string, object?>\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\", &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<policy_name>\n```\n\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchEnrichPolicyElasticsearchConnection:ElasticsearchEnrichPolicyElasticsearchConnection"},"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"},"execute":{"description":"Whether to call the execute API function in order to create the enrich index.\n","type":"boolean"},"indices":{"description":"Array of one or more source indices used to create the enrich index.\n","items":{"type":"string"},"type":"array"},"matchField":{"description":"Field in source indices used to match incoming documents.\n","type":"string"},"name":{"description":"Name of the enrich policy to manage.\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<span 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 \"> match_all </span>query.\n","type":"string"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchEnrichPolicyElasticsearchConnection:ElasticsearchEnrichPolicyElasticsearchConnection"},"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"},"execute":{"description":"Whether to call the execute API function in order to create the enrich index.\n","type":"boolean"},"indices":{"description":"Array of one or more source indices used to create the enrich index.\n","items":{"type":"string"},"type":"array"},"matchField":{"description":"Field in source indices used to match incoming documents.\n","type":"string"},"name":{"description":"Name of the enrich policy to manage.\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<span 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 \"> match_all </span>query.\n","type":"string"}},"required":["enrichFields","execute","indices","matchField","name","policyType"],"requiredInputs":["enrichFields","indices","matchField","policyType"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchEnrichPolicy resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchEnrichPolicyElasticsearchConnection:ElasticsearchEnrichPolicyElasticsearchConnection"},"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"},"execute":{"description":"Whether to call the execute API function in order to create the enrich index.\n","type":"boolean"},"indices":{"description":"Array of one or more source indices used to create the enrich index.\n","items":{"type":"string"},"type":"array"},"matchField":{"description":"Field in source indices used to match incoming documents.\n","type":"string"},"name":{"description":"Name of the enrich policy to manage.\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<span 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 \"> match_all </span>query.\n","type":"string"}},"type":"object"},"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\nSet <span pulumi-lang-nodejs=\"`useExisting`\" pulumi-lang-dotnet=\"`UseExisting`\" pulumi-lang-go=\"`useExisting`\" pulumi-lang-python=\"`use_existing`\" pulumi-lang-yaml=\"`useExisting`\" pulumi-lang-java=\"`useExisting`\">`use_existing`</span> = true to tolerate or adopt an index that already exists at create time (for example after a replacement race or when adopting an out-of-band index); see the <span pulumi-lang-nodejs=\"`useExisting`\" pulumi-lang-dotnet=\"`UseExisting`\" pulumi-lang-go=\"`useExisting`\" pulumi-lang-python=\"`use_existing`\" pulumi-lang-yaml=\"`useExisting`\" pulumi-lang-java=\"`useExisting`\">`use_existing`</span> attribute description for details.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\n                {\n                    [\"term\"] = new Dictionary<string, object?>\n                    {\n                        [\"user.id\"] = \"developer\",\n                    },\n                }),\n            },\n        },\n        Mappings = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"properties\"] = new Dictionary<string, object?>\n            {\n                [\"field1\"] = new Dictionary<string, object?>\n                {\n                    [\"type\"] = \"keyword\",\n                },\n                [\"field2\"] = new Dictionary<string, object?>\n                {\n                    [\"type\"] = \"text\",\n                },\n                [\"field3\"] = new Dictionary<string, object?>\n                {\n                    [\"properties\"] = new Dictionary<string, object?>\n                    {\n                        [\"inner_field1\"] = new Dictionary<string, object?>\n                        {\n                            [\"type\"] = \"text\",\n                            [\"index\"] = false,\n                        },\n                        [\"inner_field2\"] = new Dictionary<string, object?>\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\", &elasticstack.ElasticsearchIndexArgs{\n\t\t\tName: pulumi.String(\"my-index\"),\n\t\t\tAliases: elasticstack.ElasticsearchIndexAliasTypeArray{\n\t\t\t\t&elasticstack.ElasticsearchIndexAliasTypeArgs{\n\t\t\t\t\tName: pulumi.String(\"my_alias_1\"),\n\t\t\t\t},\n\t\t\t\t&elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<concrete_index_name>\n```\n\n","inputProperties":{"aliases":{"description":"Aliases for the index.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAlias:ElasticsearchIndexAlias"},"type":"array"},"analysisAnalyzer":{"description":"A JSON string describing the analyzers applied to the index.\n","type":"string"},"analysisCharFilter":{"description":"A JSON string describing the<span 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 \"> char_filters </span>applied to the index.\n","type":"string"},"analysisFilter":{"description":"A JSON string describing the filters applied to the index.\n","type":"string"},"analysisNormalizer":{"description":"A JSON string describing the normalizers applied to the index.\n","type":"string"},"analysisTokenizer":{"description":"A JSON string describing the tokenizers applied to the index.\n","type":"string"},"analyzeMaxTokenCount":{"description":"The maximum number of tokens that can be produced using _analyze API.\n","type":"number"},"autoExpandReplicas":{"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","type":"string"},"blocksMetadata":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable index metadata reads and writes.\n","type":"boolean"},"blocksRead":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable read operations against the index.\n","type":"boolean"},"blocksReadOnly":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to make the index and index metadata read only, <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> to allow writes and metadata changes.\n","type":"boolean"},"blocksReadOnlyAllowDelete":{"description":"Identical to `index.blocks.read_only` but allows deleting the index to free up resources.\n","type":"boolean"},"blocksWrite":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable data write operations against the index. This setting does not affect metadata.\n","type":"boolean"},"codec":{"description":"The <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span> value compresses stored data with LZ4 compression, but this can be set to <span 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`\">`best_compression`</span> which uses DEFLATE for a higher compression ratio. This can be set only on creation.\n","type":"string"},"defaultPipeline":{"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","type":"string"},"deletionProtection":{"type":"boolean"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexElasticsearchConnection:ElasticsearchIndexElasticsearchConnection"},"type":"array"},"finalPipeline":{"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","type":"string"},"gcDeletes":{"description":"The length of time that a deleted document's version number remains available for further versioned operations.\n","type":"string"},"highlightMaxAnalyzedOffset":{"description":"The maximum number of characters that will be analyzed for a highlight request.\n","type":"number"},"indexingSlowlogLevel":{"description":"Set which logging level to use for the search slow log, can be: <span pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\">`warn`</span>, <span pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\">`info`</span>, <span pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\">`debug`</span>, <span pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\">`trace`</span>\n","type":"string"},"indexingSlowlogSource":{"description":"Set the number of characters of the `_source` to include in the slowlog lines. <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> or <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span> skips logging the source entirely; <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> logs 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","type":"string"},"indexingSlowlogThresholdIndexDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>\n","type":"string"},"indexingSlowlogThresholdIndexInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>\n","type":"string"},"indexingSlowlogThresholdIndexTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>\n","type":"string"},"indexingSlowlogThresholdIndexWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>\n","type":"string"},"loadFixedBitsetFiltersEagerly":{"description":"Indicates whether cached filters are pre-loaded for nested queries. This can be set only on creation.\n","type":"boolean"},"mappingCoerce":{"description":"Set index level coercion setting that is applied to all mapping types.\n","type":"boolean"},"mappingTotalFieldsLimit":{"description":"The maximum number of fields in an index. Field type parameters count towards this limit. The default value is 1000.\n","type":"number"},"mappings":{"description":"Mapping for fields in the index.\n","type":"string"},"masterTimeout":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>. This value is ignored when running against Serverless projects.","type":"string"},"maxDocvalueFieldsSearch":{"description":"The maximum number of <span 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`\">`docvalue_fields`</span> that are allowed in a query.","type":"number"},"maxInnerResultWindow":{"description":"The maximum value of `from + size` for inner hits definition and top hits aggregations to this index.","type":"number"},"maxNgramDiff":{"description":"The maximum allowed difference between<span pulumi-lang-nodejs=\" minGram \" pulumi-lang-dotnet=\" MinGram \" pulumi-lang-go=\" minGram \" pulumi-lang-python=\" min_gram \" pulumi-lang-yaml=\" minGram \" pulumi-lang-java=\" minGram \"> min_gram </span>and<span pulumi-lang-nodejs=\" maxGram \" pulumi-lang-dotnet=\" MaxGram \" pulumi-lang-go=\" maxGram \" pulumi-lang-python=\" max_gram \" pulumi-lang-yaml=\" maxGram \" pulumi-lang-java=\" maxGram \"> max_gram </span>for NGramTokenizer and NGramTokenFilter.","type":"number"},"maxRefreshListeners":{"description":"Maximum number of refresh listeners available on each shard of the index.","type":"number"},"maxRegexLength":{"description":"The maximum length of regex that can be used in Regexp Query.","type":"number"},"maxRescoreWindow":{"description":"The maximum value of <span 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`\">`window_size`</span> for <span pulumi-lang-nodejs=\"`rescore`\" pulumi-lang-dotnet=\"`Rescore`\" pulumi-lang-go=\"`rescore`\" pulumi-lang-python=\"`rescore`\" pulumi-lang-yaml=\"`rescore`\" pulumi-lang-java=\"`rescore`\">`rescore`</span> requests in searches of this index.","type":"number"},"maxResultWindow":{"description":"The maximum value of `from + size` for searches to this index.","type":"number"},"maxScriptFields":{"description":"The maximum number of <span 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`\">`script_fields`</span> that are allowed in a query.","type":"number"},"maxShingleDiff":{"description":"The maximum allowed difference between<span pulumi-lang-nodejs=\" maxShingleSize \" pulumi-lang-dotnet=\" MaxShingleSize \" pulumi-lang-go=\" maxShingleSize \" pulumi-lang-python=\" max_shingle_size \" pulumi-lang-yaml=\" maxShingleSize \" pulumi-lang-java=\" maxShingleSize \"> max_shingle_size </span>and<span pulumi-lang-nodejs=\" minShingleSize \" pulumi-lang-dotnet=\" MinShingleSize \" pulumi-lang-go=\" minShingleSize \" pulumi-lang-python=\" min_shingle_size \" pulumi-lang-yaml=\" minShingleSize \" pulumi-lang-java=\" minShingleSize \"> min_shingle_size </span>for ShingleTokenFilter.","type":"number"},"maxTermsCount":{"description":"The maximum number of terms that can be used in Terms Query.","type":"number"},"name":{"description":"Name of the index you wish to create.\n","type":"string"},"numberOfReplicas":{"description":"Number of shard replicas.","type":"number"},"numberOfRoutingShards":{"description":"Value used with<span pulumi-lang-nodejs=\" numberOfShards \" pulumi-lang-dotnet=\" NumberOfShards \" pulumi-lang-go=\" numberOfShards \" pulumi-lang-python=\" number_of_shards \" pulumi-lang-yaml=\" numberOfShards \" pulumi-lang-java=\" numberOfShards \"> number_of_shards </span>to route documents to a primary shard. This can be set only on creation.","type":"number"},"numberOfShards":{"description":"Number of shards for the index. This can be set only on creation.","type":"number"},"queryDefaultFields":{"description":"Wildcard (*) patterns matching one or more fields. Defaults to '*', which matches all fields eligible for term-level queries, excluding metadata fields.","items":{"type":"string"},"type":"array"},"refreshInterval":{"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.","type":"string"},"routingAllocationEnable":{"description":"Controls shard allocation for this index. It can be set to: <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span> , <span pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\">`primaries`</span> , <span 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`\">`new_primaries`</span> , <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>.","type":"string"},"routingPartitionSize":{"description":"The number of shards a custom routing value can go to. This can be set only on creation.","type":"number"},"routingRebalanceEnable":{"description":"Enables shard rebalancing for this index. It can be set to: <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span>, <span pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\">`primaries`</span> , <span pulumi-lang-nodejs=\"`replicas`\" pulumi-lang-dotnet=\"`Replicas`\" pulumi-lang-go=\"`replicas`\" pulumi-lang-python=\"`replicas`\" pulumi-lang-yaml=\"`replicas`\" pulumi-lang-java=\"`replicas`\">`replicas`</span> , <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>.","type":"string"},"searchIdleAfter":{"description":"How long a shard can not receive a search or get request until it’s considered search idle.","type":"string"},"searchSlowlogLevel":{"description":"Set which logging level to use for the search slow log, can be: <span pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\">`warn`</span>, <span pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\">`info`</span>, <span pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\">`debug`</span>, <span pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\">`trace`</span>","type":"string"},"searchSlowlogThresholdFetchDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>","type":"string"},"searchSlowlogThresholdFetchInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>","type":"string"},"searchSlowlogThresholdFetchTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>","type":"string"},"searchSlowlogThresholdFetchWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"searchSlowlogThresholdQueryDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>","type":"string"},"searchSlowlogThresholdQueryInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>","type":"string"},"searchSlowlogThresholdQueryTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>","type":"string"},"searchSlowlogThresholdQueryWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"settings":{"deprecationMessage":"Deprecated","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\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","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSetting:ElasticsearchIndexSetting"},"type":"array"},"shardCheckOnStartup":{"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 <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, <span pulumi-lang-nodejs=\"`checksum`\" pulumi-lang-dotnet=\"`Checksum`\" pulumi-lang-go=\"`checksum`\" pulumi-lang-python=\"`checksum`\" pulumi-lang-yaml=\"`checksum`\" pulumi-lang-java=\"`checksum`\">`checksum`</span>.","type":"string"},"sortFields":{"deprecationMessage":"Deprecated","description":"Deprecated: The field to sort documents within each shard segment by.","items":{"type":"string"},"type":"array"},"sortOrders":{"deprecationMessage":"Deprecated","description":"Deprecated: The direction to sort documents within each shard segment. Accepts <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span>, <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.","items":{"type":"string"},"type":"array"},"sorts":{"description":"Sort configuration for documents within each shard segment. Replaces the deprecated<span pulumi-lang-nodejs=\" sortField \" pulumi-lang-dotnet=\" SortField \" pulumi-lang-go=\" sortField \" pulumi-lang-python=\" sort_field \" pulumi-lang-yaml=\" sortField \" pulumi-lang-java=\" sortField \"> sort_field </span>and<span pulumi-lang-nodejs=\" sortOrder \" pulumi-lang-dotnet=\" SortOrder \" pulumi-lang-go=\" sortOrder \" pulumi-lang-python=\" sort_order \" pulumi-lang-yaml=\" sortOrder \" pulumi-lang-java=\" sortOrder \"> sort_order </span>attributes.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSort:ElasticsearchIndexSort"},"type":"array"},"timeout":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.","type":"string"},"unassignedNodeLeftDelayedTimeout":{"description":"Time to delay the allocation of replica shards which become unassigned because a node has left, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"useExisting":{"type":"boolean"},"waitForActiveShards":{"description":"The number of shard copies that must be active before proceeding with the operation. Set to <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span> or any positive integer up to the total number of shards in the index (`number_of_replicas+1`). Default: <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span>, the primary shard. This value is ignored when running against Serverless projects.","type":"string"}},"properties":{"aliases":{"description":"Aliases for the index.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAlias:ElasticsearchIndexAlias"},"type":"array"},"analysisAnalyzer":{"description":"A JSON string describing the analyzers applied to the index.\n","type":"string"},"analysisCharFilter":{"description":"A JSON string describing the<span 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 \"> char_filters </span>applied to the index.\n","type":"string"},"analysisFilter":{"description":"A JSON string describing the filters applied to the index.\n","type":"string"},"analysisNormalizer":{"description":"A JSON string describing the normalizers applied to the index.\n","type":"string"},"analysisTokenizer":{"description":"A JSON string describing the tokenizers applied to the index.\n","type":"string"},"analyzeMaxTokenCount":{"description":"The maximum number of tokens that can be produced using _analyze API.\n","type":"number"},"autoExpandReplicas":{"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","type":"string"},"blocksMetadata":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable index metadata reads and writes.\n","type":"boolean"},"blocksRead":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable read operations against the index.\n","type":"boolean"},"blocksReadOnly":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to make the index and index metadata read only, <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> to allow writes and metadata changes.\n","type":"boolean"},"blocksReadOnlyAllowDelete":{"description":"Identical to `index.blocks.read_only` but allows deleting the index to free up resources.\n","type":"boolean"},"blocksWrite":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable data write operations against the index. This setting does not affect metadata.\n","type":"boolean"},"codec":{"description":"The <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span> value compresses stored data with LZ4 compression, but this can be set to <span 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`\">`best_compression`</span> which uses DEFLATE for a higher compression ratio. This can be set only on creation.\n","type":"string"},"concreteName":{"description":"The concrete Elasticsearch index name managed by this resource. For static index names this equals <span pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\">`name`</span>. For date math index names this is the resolved concrete index name returned by Elasticsearch after creation.","type":"string"},"defaultPipeline":{"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","type":"string"},"deletionProtection":{"type":"boolean"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexElasticsearchConnection:ElasticsearchIndexElasticsearchConnection"},"type":"array"},"finalPipeline":{"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","type":"string"},"gcDeletes":{"description":"The length of time that a deleted document's version number remains available for further versioned operations.\n","type":"string"},"highlightMaxAnalyzedOffset":{"description":"The maximum number of characters that will be analyzed for a highlight request.\n","type":"number"},"indexingSlowlogLevel":{"description":"Set which logging level to use for the search slow log, can be: <span pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\">`warn`</span>, <span pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\">`info`</span>, <span pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\">`debug`</span>, <span pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\">`trace`</span>\n","type":"string"},"indexingSlowlogSource":{"description":"Set the number of characters of the `_source` to include in the slowlog lines. <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> or <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span> skips logging the source entirely; <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> logs 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","type":"string"},"indexingSlowlogThresholdIndexDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>\n","type":"string"},"indexingSlowlogThresholdIndexInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>\n","type":"string"},"indexingSlowlogThresholdIndexTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>\n","type":"string"},"indexingSlowlogThresholdIndexWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>\n","type":"string"},"loadFixedBitsetFiltersEagerly":{"description":"Indicates whether cached filters are pre-loaded for nested queries. This can be set only on creation.\n","type":"boolean"},"mappingCoerce":{"description":"Set index level coercion setting that is applied to all mapping types.\n","type":"boolean"},"mappingTotalFieldsLimit":{"description":"The maximum number of fields in an index. Field type parameters count towards this limit. The default value is 1000.\n","type":"number"},"mappings":{"description":"Mapping for fields in the index.\n","type":"string"},"masterTimeout":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>. This value is ignored when running against Serverless projects.","type":"string"},"maxDocvalueFieldsSearch":{"description":"The maximum number of <span 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`\">`docvalue_fields`</span> that are allowed in a query.","type":"number"},"maxInnerResultWindow":{"description":"The maximum value of `from + size` for inner hits definition and top hits aggregations to this index.","type":"number"},"maxNgramDiff":{"description":"The maximum allowed difference between<span pulumi-lang-nodejs=\" minGram \" pulumi-lang-dotnet=\" MinGram \" pulumi-lang-go=\" minGram \" pulumi-lang-python=\" min_gram \" pulumi-lang-yaml=\" minGram \" pulumi-lang-java=\" minGram \"> min_gram </span>and<span pulumi-lang-nodejs=\" maxGram \" pulumi-lang-dotnet=\" MaxGram \" pulumi-lang-go=\" maxGram \" pulumi-lang-python=\" max_gram \" pulumi-lang-yaml=\" maxGram \" pulumi-lang-java=\" maxGram \"> max_gram </span>for NGramTokenizer and NGramTokenFilter.","type":"number"},"maxRefreshListeners":{"description":"Maximum number of refresh listeners available on each shard of the index.","type":"number"},"maxRegexLength":{"description":"The maximum length of regex that can be used in Regexp Query.","type":"number"},"maxRescoreWindow":{"description":"The maximum value of <span 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`\">`window_size`</span> for <span pulumi-lang-nodejs=\"`rescore`\" pulumi-lang-dotnet=\"`Rescore`\" pulumi-lang-go=\"`rescore`\" pulumi-lang-python=\"`rescore`\" pulumi-lang-yaml=\"`rescore`\" pulumi-lang-java=\"`rescore`\">`rescore`</span> requests in searches of this index.","type":"number"},"maxResultWindow":{"description":"The maximum value of `from + size` for searches to this index.","type":"number"},"maxScriptFields":{"description":"The maximum number of <span 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`\">`script_fields`</span> that are allowed in a query.","type":"number"},"maxShingleDiff":{"description":"The maximum allowed difference between<span pulumi-lang-nodejs=\" maxShingleSize \" pulumi-lang-dotnet=\" MaxShingleSize \" pulumi-lang-go=\" maxShingleSize \" pulumi-lang-python=\" max_shingle_size \" pulumi-lang-yaml=\" maxShingleSize \" pulumi-lang-java=\" maxShingleSize \"> max_shingle_size </span>and<span pulumi-lang-nodejs=\" minShingleSize \" pulumi-lang-dotnet=\" MinShingleSize \" pulumi-lang-go=\" minShingleSize \" pulumi-lang-python=\" min_shingle_size \" pulumi-lang-yaml=\" minShingleSize \" pulumi-lang-java=\" minShingleSize \"> min_shingle_size </span>for ShingleTokenFilter.","type":"number"},"maxTermsCount":{"description":"The maximum number of terms that can be used in Terms Query.","type":"number"},"name":{"description":"Name of the index you wish to create.\n","type":"string"},"numberOfReplicas":{"description":"Number of shard replicas.","type":"number"},"numberOfRoutingShards":{"description":"Value used with<span pulumi-lang-nodejs=\" numberOfShards \" pulumi-lang-dotnet=\" NumberOfShards \" pulumi-lang-go=\" numberOfShards \" pulumi-lang-python=\" number_of_shards \" pulumi-lang-yaml=\" numberOfShards \" pulumi-lang-java=\" numberOfShards \"> number_of_shards </span>to route documents to a primary shard. This can be set only on creation.","type":"number"},"numberOfShards":{"description":"Number of shards for the index. This can be set only on creation.","type":"number"},"queryDefaultFields":{"description":"Wildcard (*) patterns matching one or more fields. Defaults to '*', which matches all fields eligible for term-level queries, excluding metadata fields.","items":{"type":"string"},"type":"array"},"refreshInterval":{"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.","type":"string"},"routingAllocationEnable":{"description":"Controls shard allocation for this index. It can be set to: <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span> , <span pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\">`primaries`</span> , <span 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`\">`new_primaries`</span> , <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>.","type":"string"},"routingPartitionSize":{"description":"The number of shards a custom routing value can go to. This can be set only on creation.","type":"number"},"routingRebalanceEnable":{"description":"Enables shard rebalancing for this index. It can be set to: <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span>, <span pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\">`primaries`</span> , <span pulumi-lang-nodejs=\"`replicas`\" pulumi-lang-dotnet=\"`Replicas`\" pulumi-lang-go=\"`replicas`\" pulumi-lang-python=\"`replicas`\" pulumi-lang-yaml=\"`replicas`\" pulumi-lang-java=\"`replicas`\">`replicas`</span> , <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>.","type":"string"},"searchIdleAfter":{"description":"How long a shard can not receive a search or get request until it’s considered search idle.","type":"string"},"searchSlowlogLevel":{"description":"Set which logging level to use for the search slow log, can be: <span pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\">`warn`</span>, <span pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\">`info`</span>, <span pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\">`debug`</span>, <span pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\">`trace`</span>","type":"string"},"searchSlowlogThresholdFetchDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>","type":"string"},"searchSlowlogThresholdFetchInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>","type":"string"},"searchSlowlogThresholdFetchTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>","type":"string"},"searchSlowlogThresholdFetchWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"searchSlowlogThresholdQueryDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>","type":"string"},"searchSlowlogThresholdQueryInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>","type":"string"},"searchSlowlogThresholdQueryTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>","type":"string"},"searchSlowlogThresholdQueryWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"settings":{"deprecationMessage":"Deprecated","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\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","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSetting:ElasticsearchIndexSetting"},"type":"array"},"settingsRaw":{"description":"All raw settings fetched from the cluster.","type":"string"},"shardCheckOnStartup":{"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 <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, <span pulumi-lang-nodejs=\"`checksum`\" pulumi-lang-dotnet=\"`Checksum`\" pulumi-lang-go=\"`checksum`\" pulumi-lang-python=\"`checksum`\" pulumi-lang-yaml=\"`checksum`\" pulumi-lang-java=\"`checksum`\">`checksum`</span>.","type":"string"},"sortFields":{"deprecationMessage":"Deprecated","description":"Deprecated: The field to sort documents within each shard segment by.","items":{"type":"string"},"type":"array"},"sortOrders":{"deprecationMessage":"Deprecated","description":"Deprecated: The direction to sort documents within each shard segment. Accepts <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span>, <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.","items":{"type":"string"},"type":"array"},"sorts":{"description":"Sort configuration for documents within each shard segment. Replaces the deprecated<span pulumi-lang-nodejs=\" sortField \" pulumi-lang-dotnet=\" SortField \" pulumi-lang-go=\" sortField \" pulumi-lang-python=\" sort_field \" pulumi-lang-yaml=\" sortField \" pulumi-lang-java=\" sortField \"> sort_field </span>and<span pulumi-lang-nodejs=\" sortOrder \" pulumi-lang-dotnet=\" SortOrder \" pulumi-lang-go=\" sortOrder \" pulumi-lang-python=\" sort_order \" pulumi-lang-yaml=\" sortOrder \" pulumi-lang-java=\" sortOrder \"> sort_order </span>attributes.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSort:ElasticsearchIndexSort"},"type":"array"},"timeout":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.","type":"string"},"unassignedNodeLeftDelayedTimeout":{"description":"Time to delay the allocation of replica shards which become unassigned because a node has left, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"useExisting":{"type":"boolean"},"waitForActiveShards":{"description":"The number of shard copies that must be active before proceeding with the operation. Set to <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span> or any positive integer up to the total number of shards in the index (`number_of_replicas+1`). Default: <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span>, the primary shard. This value is ignored when running against Serverless projects.","type":"string"}},"required":["aliases","concreteName","deletionProtection","mappings","masterTimeout","name","settingsRaw","timeout","useExisting","waitForActiveShards"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndex resources.\n","properties":{"aliases":{"description":"Aliases for the index.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAlias:ElasticsearchIndexAlias"},"type":"array"},"analysisAnalyzer":{"description":"A JSON string describing the analyzers applied to the index.\n","type":"string"},"analysisCharFilter":{"description":"A JSON string describing the<span 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 \"> char_filters </span>applied to the index.\n","type":"string"},"analysisFilter":{"description":"A JSON string describing the filters applied to the index.\n","type":"string"},"analysisNormalizer":{"description":"A JSON string describing the normalizers applied to the index.\n","type":"string"},"analysisTokenizer":{"description":"A JSON string describing the tokenizers applied to the index.\n","type":"string"},"analyzeMaxTokenCount":{"description":"The maximum number of tokens that can be produced using _analyze API.\n","type":"number"},"autoExpandReplicas":{"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","type":"string"},"blocksMetadata":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable index metadata reads and writes.\n","type":"boolean"},"blocksRead":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable read operations against the index.\n","type":"boolean"},"blocksReadOnly":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to make the index and index metadata read only, <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> to allow writes and metadata changes.\n","type":"boolean"},"blocksReadOnlyAllowDelete":{"description":"Identical to `index.blocks.read_only` but allows deleting the index to free up resources.\n","type":"boolean"},"blocksWrite":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable data write operations against the index. This setting does not affect metadata.\n","type":"boolean"},"codec":{"description":"The <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span> value compresses stored data with LZ4 compression, but this can be set to <span 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`\">`best_compression`</span> which uses DEFLATE for a higher compression ratio. This can be set only on creation.\n","type":"string"},"concreteName":{"description":"The concrete Elasticsearch index name managed by this resource. For static index names this equals <span pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\">`name`</span>. For date math index names this is the resolved concrete index name returned by Elasticsearch after creation.","type":"string"},"defaultPipeline":{"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","type":"string"},"deletionProtection":{"type":"boolean"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexElasticsearchConnection:ElasticsearchIndexElasticsearchConnection"},"type":"array"},"finalPipeline":{"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","type":"string"},"gcDeletes":{"description":"The length of time that a deleted document's version number remains available for further versioned operations.\n","type":"string"},"highlightMaxAnalyzedOffset":{"description":"The maximum number of characters that will be analyzed for a highlight request.\n","type":"number"},"indexingSlowlogLevel":{"description":"Set which logging level to use for the search slow log, can be: <span pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\">`warn`</span>, <span pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\">`info`</span>, <span pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\">`debug`</span>, <span pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\">`trace`</span>\n","type":"string"},"indexingSlowlogSource":{"description":"Set the number of characters of the `_source` to include in the slowlog lines. <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> or <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span> skips logging the source entirely; <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> logs 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","type":"string"},"indexingSlowlogThresholdIndexDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>\n","type":"string"},"indexingSlowlogThresholdIndexInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>\n","type":"string"},"indexingSlowlogThresholdIndexTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>\n","type":"string"},"indexingSlowlogThresholdIndexWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>\n","type":"string"},"loadFixedBitsetFiltersEagerly":{"description":"Indicates whether cached filters are pre-loaded for nested queries. This can be set only on creation.\n","type":"boolean"},"mappingCoerce":{"description":"Set index level coercion setting that is applied to all mapping types.\n","type":"boolean"},"mappingTotalFieldsLimit":{"description":"The maximum number of fields in an index. Field type parameters count towards this limit. The default value is 1000.\n","type":"number"},"mappings":{"description":"Mapping for fields in the index.\n","type":"string"},"masterTimeout":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>. This value is ignored when running against Serverless projects.","type":"string"},"maxDocvalueFieldsSearch":{"description":"The maximum number of <span 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`\">`docvalue_fields`</span> that are allowed in a query.","type":"number"},"maxInnerResultWindow":{"description":"The maximum value of `from + size` for inner hits definition and top hits aggregations to this index.","type":"number"},"maxNgramDiff":{"description":"The maximum allowed difference between<span pulumi-lang-nodejs=\" minGram \" pulumi-lang-dotnet=\" MinGram \" pulumi-lang-go=\" minGram \" pulumi-lang-python=\" min_gram \" pulumi-lang-yaml=\" minGram \" pulumi-lang-java=\" minGram \"> min_gram </span>and<span pulumi-lang-nodejs=\" maxGram \" pulumi-lang-dotnet=\" MaxGram \" pulumi-lang-go=\" maxGram \" pulumi-lang-python=\" max_gram \" pulumi-lang-yaml=\" maxGram \" pulumi-lang-java=\" maxGram \"> max_gram </span>for NGramTokenizer and NGramTokenFilter.","type":"number"},"maxRefreshListeners":{"description":"Maximum number of refresh listeners available on each shard of the index.","type":"number"},"maxRegexLength":{"description":"The maximum length of regex that can be used in Regexp Query.","type":"number"},"maxRescoreWindow":{"description":"The maximum value of <span 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`\">`window_size`</span> for <span pulumi-lang-nodejs=\"`rescore`\" pulumi-lang-dotnet=\"`Rescore`\" pulumi-lang-go=\"`rescore`\" pulumi-lang-python=\"`rescore`\" pulumi-lang-yaml=\"`rescore`\" pulumi-lang-java=\"`rescore`\">`rescore`</span> requests in searches of this index.","type":"number"},"maxResultWindow":{"description":"The maximum value of `from + size` for searches to this index.","type":"number"},"maxScriptFields":{"description":"The maximum number of <span 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`\">`script_fields`</span> that are allowed in a query.","type":"number"},"maxShingleDiff":{"description":"The maximum allowed difference between<span pulumi-lang-nodejs=\" maxShingleSize \" pulumi-lang-dotnet=\" MaxShingleSize \" pulumi-lang-go=\" maxShingleSize \" pulumi-lang-python=\" max_shingle_size \" pulumi-lang-yaml=\" maxShingleSize \" pulumi-lang-java=\" maxShingleSize \"> max_shingle_size </span>and<span pulumi-lang-nodejs=\" minShingleSize \" pulumi-lang-dotnet=\" MinShingleSize \" pulumi-lang-go=\" minShingleSize \" pulumi-lang-python=\" min_shingle_size \" pulumi-lang-yaml=\" minShingleSize \" pulumi-lang-java=\" minShingleSize \"> min_shingle_size </span>for ShingleTokenFilter.","type":"number"},"maxTermsCount":{"description":"The maximum number of terms that can be used in Terms Query.","type":"number"},"name":{"description":"Name of the index you wish to create.\n","type":"string"},"numberOfReplicas":{"description":"Number of shard replicas.","type":"number"},"numberOfRoutingShards":{"description":"Value used with<span pulumi-lang-nodejs=\" numberOfShards \" pulumi-lang-dotnet=\" NumberOfShards \" pulumi-lang-go=\" numberOfShards \" pulumi-lang-python=\" number_of_shards \" pulumi-lang-yaml=\" numberOfShards \" pulumi-lang-java=\" numberOfShards \"> number_of_shards </span>to route documents to a primary shard. This can be set only on creation.","type":"number"},"numberOfShards":{"description":"Number of shards for the index. This can be set only on creation.","type":"number"},"queryDefaultFields":{"description":"Wildcard (*) patterns matching one or more fields. Defaults to '*', which matches all fields eligible for term-level queries, excluding metadata fields.","items":{"type":"string"},"type":"array"},"refreshInterval":{"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.","type":"string"},"routingAllocationEnable":{"description":"Controls shard allocation for this index. It can be set to: <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span> , <span pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\">`primaries`</span> , <span 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`\">`new_primaries`</span> , <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>.","type":"string"},"routingPartitionSize":{"description":"The number of shards a custom routing value can go to. This can be set only on creation.","type":"number"},"routingRebalanceEnable":{"description":"Enables shard rebalancing for this index. It can be set to: <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span>, <span pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\">`primaries`</span> , <span pulumi-lang-nodejs=\"`replicas`\" pulumi-lang-dotnet=\"`Replicas`\" pulumi-lang-go=\"`replicas`\" pulumi-lang-python=\"`replicas`\" pulumi-lang-yaml=\"`replicas`\" pulumi-lang-java=\"`replicas`\">`replicas`</span> , <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>.","type":"string"},"searchIdleAfter":{"description":"How long a shard can not receive a search or get request until it’s considered search idle.","type":"string"},"searchSlowlogLevel":{"description":"Set which logging level to use for the search slow log, can be: <span pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\">`warn`</span>, <span pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\">`info`</span>, <span pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\">`debug`</span>, <span pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\">`trace`</span>","type":"string"},"searchSlowlogThresholdFetchDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>","type":"string"},"searchSlowlogThresholdFetchInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>","type":"string"},"searchSlowlogThresholdFetchTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>","type":"string"},"searchSlowlogThresholdFetchWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"searchSlowlogThresholdQueryDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>","type":"string"},"searchSlowlogThresholdQueryInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>","type":"string"},"searchSlowlogThresholdQueryTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>","type":"string"},"searchSlowlogThresholdQueryWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"settings":{"deprecationMessage":"Deprecated","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\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","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSetting:ElasticsearchIndexSetting"},"type":"array"},"settingsRaw":{"description":"All raw settings fetched from the cluster.","type":"string"},"shardCheckOnStartup":{"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 <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, <span pulumi-lang-nodejs=\"`checksum`\" pulumi-lang-dotnet=\"`Checksum`\" pulumi-lang-go=\"`checksum`\" pulumi-lang-python=\"`checksum`\" pulumi-lang-yaml=\"`checksum`\" pulumi-lang-java=\"`checksum`\">`checksum`</span>.","type":"string"},"sortFields":{"deprecationMessage":"Deprecated","description":"Deprecated: The field to sort documents within each shard segment by.","items":{"type":"string"},"type":"array"},"sortOrders":{"deprecationMessage":"Deprecated","description":"Deprecated: The direction to sort documents within each shard segment. Accepts <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span>, <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.","items":{"type":"string"},"type":"array"},"sorts":{"description":"Sort configuration for documents within each shard segment. Replaces the deprecated<span pulumi-lang-nodejs=\" sortField \" pulumi-lang-dotnet=\" SortField \" pulumi-lang-go=\" sortField \" pulumi-lang-python=\" sort_field \" pulumi-lang-yaml=\" sortField \" pulumi-lang-java=\" sortField \"> sort_field </span>and<span pulumi-lang-nodejs=\" sortOrder \" pulumi-lang-dotnet=\" SortOrder \" pulumi-lang-go=\" sortOrder \" pulumi-lang-python=\" sort_order \" pulumi-lang-yaml=\" sortOrder \" pulumi-lang-java=\" sortOrder \"> sort_order </span>attributes.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSort:ElasticsearchIndexSort"},"type":"array"},"timeout":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.","type":"string"},"unassignedNodeLeftDelayedTimeout":{"description":"Time to delay the allocation of replica shards which become unassigned because a node has left, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>","type":"string"},"useExisting":{"type":"boolean"},"waitForActiveShards":{"description":"The number of shard copies that must be active before proceeding with the operation. Set to <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span> or any positive integer up to the total number of shards in the index (`number_of_replicas+1`). Default: <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span>, the primary shard. This value is ignored when running against Serverless projects.","type":"string"}},"type":"object"},"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","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasElasticsearchConnection:ElasticsearchIndexAliasElasticsearchConnection"},"type":"array"},"name":{"description":"The alias name.\n","type":"string"},"readIndices":{"description":"Set of read indices for the alias.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasReadIndex:ElasticsearchIndexAliasReadIndex"},"type":"array"},"writeIndex":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasWriteIndex:ElasticsearchIndexAliasWriteIndex","description":"The write index for the alias. Only one write index is allowed per alias.\n"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasElasticsearchConnection:ElasticsearchIndexAliasElasticsearchConnection"},"type":"array"},"name":{"description":"The alias name.\n","type":"string"},"readIndices":{"description":"Set of read indices for the alias.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasReadIndex:ElasticsearchIndexAliasReadIndex"},"type":"array"},"writeIndex":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasWriteIndex:ElasticsearchIndexAliasWriteIndex","description":"The write index for the alias. Only one write index is allowed per alias.\n"}},"required":["name"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndexAlias resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasElasticsearchConnection:ElasticsearchIndexAliasElasticsearchConnection"},"type":"array"},"name":{"description":"The alias name.\n","type":"string"},"readIndices":{"description":"Set of read indices for the alias.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexAliasReadIndex:ElasticsearchIndexAliasReadIndex"},"type":"array"},"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"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\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\", &elasticstack.ElasticsearchIndexLifecycleArgs{\n\t\t\tName: pulumi.String(\"my_ilm_policy\"),\n\t\t\tHot: &elasticstack.ElasticsearchIndexLifecycleHotArgs{\n\t\t\t\tMinAge: pulumi.String(\"1h\"),\n\t\t\t\tSetPriority: &elasticstack.ElasticsearchIndexLifecycleHotSetPriorityArgs{\n\t\t\t\t\tPriority: pulumi.Float64(0),\n\t\t\t\t},\n\t\t\t\tRollover: &elasticstack.ElasticsearchIndexLifecycleHotRolloverArgs{\n\t\t\t\t\tMaxAge: pulumi.String(\"1d\"),\n\t\t\t\t},\n\t\t\t\tReadonly: &elasticstack.ElasticsearchIndexLifecycleHotReadonlyArgs{},\n\t\t\t},\n\t\t\tWarm: &elasticstack.ElasticsearchIndexLifecycleWarmArgs{\n\t\t\t\tMinAge: pulumi.String(\"0ms\"),\n\t\t\t\tSetPriority: &elasticstack.ElasticsearchIndexLifecycleWarmSetPriorityArgs{\n\t\t\t\t\tPriority: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t\tReadonly: &elasticstack.ElasticsearchIndexLifecycleWarmReadonlyArgs{},\n\t\t\t\tAllocate: &elasticstack.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: &elasticstack.ElasticsearchIndexLifecycleDeleteArgs{\n\t\t\t\tMinAge: pulumi.String(\"2d\"),\n\t\t\t\tDelete: &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<ilm_name>\n```\n\n","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 is 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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleElasticsearchConnection:ElasticsearchIndexLifecycleElasticsearchConnection"},"type":"array"},"forceDestroy":{"description":"When true, the provider will clear index.lifecycle.name from any indices that reference this policy before deleting the policy.\n","type":"boolean"},"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 is 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":{"description":"Optional user metadata about the ilm policy. Must be valid JSON document.\n","type":"string"},"name":{"description":"Identifier for the policy.\n","type":"string"},"warm":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarm:ElasticsearchIndexLifecycleWarm","description":"The index is no longer being updated but is still being queried.\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 is 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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleElasticsearchConnection:ElasticsearchIndexLifecycleElasticsearchConnection"},"type":"array"},"forceDestroy":{"description":"When true, the provider will clear index.lifecycle.name from any indices that reference this policy before deleting the policy.\n","type":"boolean"},"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 is 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":{"description":"Optional user metadata about the ilm policy. Must be valid JSON document.\n","type":"string"},"modifiedDate":{"description":"The DateTime of the last modification.\n","type":"string"},"name":{"description":"Identifier for the policy.\n","type":"string"},"warm":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarm:ElasticsearchIndexLifecycleWarm","description":"The index is no longer being updated but is still being queried.\n"}},"required":["forceDestroy","modifiedDate","name"],"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 is 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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleElasticsearchConnection:ElasticsearchIndexLifecycleElasticsearchConnection"},"type":"array"},"forceDestroy":{"description":"When true, the provider will clear index.lifecycle.name from any indices that reference this policy before deleting the policy.\n","type":"boolean"},"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 is 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":{"description":"Optional user metadata about the ilm policy. Must be valid JSON document.\n","type":"string"},"modifiedDate":{"description":"The DateTime of the last modification.\n","type":"string"},"name":{"description":"Identifier for the policy.\n","type":"string"},"warm":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleWarm:ElasticsearchIndexLifecycleWarm","description":"The index is no longer being updated but is still being queried.\n"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchIndexMappings:ElasticsearchIndexMappings":{"description":"Manage a user-declared subset of index mappings on an existing Elasticsearch index. Destroy is a no-op — field mappings are not removed.\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexMappingsElasticsearchConnection:ElasticsearchIndexMappingsElasticsearchConnection"},"type":"array"},"index":{"description":"Name of the target Elasticsearch index.\n","type":"string"},"mappings":{"description":"JSON mappings object to manage on the index. All top-level keys (<span pulumi-lang-nodejs=\"`properties`\" pulumi-lang-dotnet=\"`Properties`\" pulumi-lang-go=\"`properties`\" pulumi-lang-python=\"`properties`\" pulumi-lang-yaml=\"`properties`\" pulumi-lang-java=\"`properties`\">`properties`</span>, <span pulumi-lang-nodejs=\"`dynamic`\" pulumi-lang-dotnet=\"`Dynamic`\" pulumi-lang-go=\"`dynamic`\" pulumi-lang-python=\"`dynamic`\" pulumi-lang-yaml=\"`dynamic`\" pulumi-lang-java=\"`dynamic`\">`dynamic`</span>, `_source`, <span pulumi-lang-nodejs=\"`dynamicTemplates`\" pulumi-lang-dotnet=\"`DynamicTemplates`\" pulumi-lang-go=\"`dynamicTemplates`\" pulumi-lang-python=\"`dynamic_templates`\" pulumi-lang-yaml=\"`dynamicTemplates`\" pulumi-lang-java=\"`dynamicTemplates`\">`dynamic_templates`</span>, <span pulumi-lang-nodejs=\"`runtime`\" pulumi-lang-dotnet=\"`Runtime`\" pulumi-lang-go=\"`runtime`\" pulumi-lang-python=\"`runtime`\" pulumi-lang-yaml=\"`runtime`\" pulumi-lang-java=\"`runtime`\">`runtime`</span>, etc.) are supported. Only the keys and fields declared here are tracked; dynamic extras added by Elasticsearch are ignored. Destroying this resource does not remove mappings from the index (a no-op).\n","type":"string"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexMappingsElasticsearchConnection:ElasticsearchIndexMappingsElasticsearchConnection"},"type":"array"},"index":{"description":"Name of the target Elasticsearch index.\n","type":"string"},"mappings":{"description":"JSON mappings object to manage on the index. All top-level keys (<span pulumi-lang-nodejs=\"`properties`\" pulumi-lang-dotnet=\"`Properties`\" pulumi-lang-go=\"`properties`\" pulumi-lang-python=\"`properties`\" pulumi-lang-yaml=\"`properties`\" pulumi-lang-java=\"`properties`\">`properties`</span>, <span pulumi-lang-nodejs=\"`dynamic`\" pulumi-lang-dotnet=\"`Dynamic`\" pulumi-lang-go=\"`dynamic`\" pulumi-lang-python=\"`dynamic`\" pulumi-lang-yaml=\"`dynamic`\" pulumi-lang-java=\"`dynamic`\">`dynamic`</span>, `_source`, <span pulumi-lang-nodejs=\"`dynamicTemplates`\" pulumi-lang-dotnet=\"`DynamicTemplates`\" pulumi-lang-go=\"`dynamicTemplates`\" pulumi-lang-python=\"`dynamic_templates`\" pulumi-lang-yaml=\"`dynamicTemplates`\" pulumi-lang-java=\"`dynamicTemplates`\">`dynamic_templates`</span>, <span pulumi-lang-nodejs=\"`runtime`\" pulumi-lang-dotnet=\"`Runtime`\" pulumi-lang-go=\"`runtime`\" pulumi-lang-python=\"`runtime`\" pulumi-lang-yaml=\"`runtime`\" pulumi-lang-java=\"`runtime`\">`runtime`</span>, etc.) are supported. Only the keys and fields declared here are tracked; dynamic extras added by Elasticsearch are ignored. Destroying this resource does not remove mappings from the index (a no-op).\n","type":"string"}},"required":["index","mappings"],"requiredInputs":["index","mappings"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndexMappings resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexMappingsElasticsearchConnection:ElasticsearchIndexMappingsElasticsearchConnection"},"type":"array"},"index":{"description":"Name of the target Elasticsearch index.\n","type":"string"},"mappings":{"description":"JSON mappings object to manage on the index. All top-level keys (<span pulumi-lang-nodejs=\"`properties`\" pulumi-lang-dotnet=\"`Properties`\" pulumi-lang-go=\"`properties`\" pulumi-lang-python=\"`properties`\" pulumi-lang-yaml=\"`properties`\" pulumi-lang-java=\"`properties`\">`properties`</span>, <span pulumi-lang-nodejs=\"`dynamic`\" pulumi-lang-dotnet=\"`Dynamic`\" pulumi-lang-go=\"`dynamic`\" pulumi-lang-python=\"`dynamic`\" pulumi-lang-yaml=\"`dynamic`\" pulumi-lang-java=\"`dynamic`\">`dynamic`</span>, `_source`, <span pulumi-lang-nodejs=\"`dynamicTemplates`\" pulumi-lang-dotnet=\"`DynamicTemplates`\" pulumi-lang-go=\"`dynamicTemplates`\" pulumi-lang-python=\"`dynamic_templates`\" pulumi-lang-yaml=\"`dynamicTemplates`\" pulumi-lang-java=\"`dynamicTemplates`\">`dynamic_templates`</span>, <span pulumi-lang-nodejs=\"`runtime`\" pulumi-lang-dotnet=\"`Runtime`\" pulumi-lang-go=\"`runtime`\" pulumi-lang-python=\"`runtime`\" pulumi-lang-yaml=\"`runtime`\" pulumi-lang-java=\"`runtime`\">`runtime`</span>, etc.) are supported. Only the keys and fields declared here are tracked; dynamic extras added by Elasticsearch are ignored. Destroying this resource does not remove mappings from the index (a no-op).\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\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\", &elasticstack.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: &elasticstack.ElasticsearchIndexTemplateTemplateArgs{\n\t\t\t\tAliases: elasticstack.ElasticsearchIndexTemplateTemplateAliasArray{\n\t\t\t\t\t&elasticstack.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&elasticstack.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\", &elasticstack.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: &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<template_name>\n```\n\n","inputProperties":{"allowAutoCreate":{"description":"If true, index auto-creation is allowed for matching indices. If false, auto-creation is disabled for matching indices. When unset, the cluster-level `action.auto_create_index` setting applies.\n","type":"boolean"},"composedOfs":{"description":"An ordered list of component template names.\n","items":{"type":"string"},"type":"array"},"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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateElasticsearchConnection:ElasticsearchIndexTemplateElasticsearchConnection"},"type":"array"},"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":"Name of the index template to create.\n","type":"string"},"priority":{"description":"Priority to determine index template precedence when a new data stream or index is created.\n","type":"number"},"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":{"description":"Version number used to manage index templates externally.\n","type":"number"}},"properties":{"allowAutoCreate":{"description":"If true, index auto-creation is allowed for matching indices. If false, auto-creation is disabled for matching indices. When unset, the cluster-level `action.auto_create_index` setting applies.\n","type":"boolean"},"composedOfs":{"description":"An ordered list of component template names.\n","items":{"type":"string"},"type":"array"},"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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateElasticsearchConnection:ElasticsearchIndexTemplateElasticsearchConnection"},"type":"array"},"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":"Name of the index template to create.\n","type":"string"},"priority":{"description":"Priority to determine index template precedence when a new data stream or index is created.\n","type":"number"},"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":{"description":"Version number used to manage index templates externally.\n","type":"number"}},"required":["composedOfs","ignoreMissingComponentTemplates","indexPatterns","name"],"requiredInputs":["indexPatterns"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndexTemplate resources.\n","properties":{"allowAutoCreate":{"description":"If true, index auto-creation is allowed for matching indices. If false, auto-creation is disabled for matching indices. When unset, the cluster-level `action.auto_create_index` setting applies.\n","type":"boolean"},"composedOfs":{"description":"An ordered list of component template names.\n","items":{"type":"string"},"type":"array"},"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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateElasticsearchConnection:ElasticsearchIndexTemplateElasticsearchConnection"},"type":"array"},"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":"Name of the index template to create.\n","type":"string"},"priority":{"description":"Priority to determine index template precedence when a new data stream or index is created.\n","type":"number"},"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":{"description":"Version number used to manage index templates externally.\n","type":"number"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchIndexTemplateIlmAttachment:ElasticsearchIndexTemplateIlmAttachment":{"description":"## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Create an ILM policy\nconst retention90d = new elasticstack.ElasticsearchIndexLifecycle(\"retention_90d\", {\n    name: \"90-days-retention\",\n    hot: {\n        rollover: {\n            maxAge: \"7d\",\n        },\n    },\n    \"delete\": {\n        minAge: \"90d\",\n        \"delete\": {},\n    },\n});\n// Attach the ILM policy to a Fleet-managed template\nconst logsSystem = new elasticstack.ElasticsearchIndexTemplateIlmAttachment(\"logs_system\", {\n    indexTemplate: \"logs-system.syslog\",\n    lifecycleName: retention90d.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Create an ILM policy\nretention90d = elasticstack.ElasticsearchIndexLifecycle(\"retention_90d\",\n    name=\"90-days-retention\",\n    hot={\n        \"rollover\": {\n            \"max_age\": \"7d\",\n        },\n    },\n    delete={\n        \"min_age\": \"90d\",\n        \"delete\": {},\n    })\n# Attach the ILM policy to a Fleet-managed template\nlogs_system = elasticstack.ElasticsearchIndexTemplateIlmAttachment(\"logs_system\",\n    index_template=\"logs-system.syslog\",\n    lifecycle_name=retention90d.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    // Create an ILM policy\n    var retention90d = new Elasticstack.ElasticsearchIndexLifecycle(\"retention_90d\", new()\n    {\n        Name = \"90-days-retention\",\n        Hot = new Elasticstack.Inputs.ElasticsearchIndexLifecycleHotArgs\n        {\n            Rollover = new Elasticstack.Inputs.ElasticsearchIndexLifecycleHotRolloverArgs\n            {\n                MaxAge = \"7d\",\n            },\n        },\n        Delete = new Elasticstack.Inputs.ElasticsearchIndexLifecycleDeleteArgs\n        {\n            MinAge = \"90d\",\n            Delete = null,\n        },\n    });\n\n    // Attach the ILM policy to a Fleet-managed template\n    var logsSystem = new Elasticstack.ElasticsearchIndexTemplateIlmAttachment(\"logs_system\", new()\n    {\n        IndexTemplate = \"logs-system.syslog\",\n        LifecycleName = retention90d.Name,\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 an ILM policy\n\t\tretention90d, err := elasticstack.NewElasticsearchIndexLifecycle(ctx, \"retention_90d\", &elasticstack.ElasticsearchIndexLifecycleArgs{\n\t\t\tName: pulumi.String(\"90-days-retention\"),\n\t\t\tHot: &elasticstack.ElasticsearchIndexLifecycleHotArgs{\n\t\t\t\tRollover: &elasticstack.ElasticsearchIndexLifecycleHotRolloverArgs{\n\t\t\t\t\tMaxAge: pulumi.String(\"7d\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDelete: &elasticstack.ElasticsearchIndexLifecycleDeleteArgs{\n\t\t\t\tMinAge: pulumi.String(\"90d\"),\n\t\t\t\tDelete: &elasticstack.ElasticsearchIndexLifecycleDeleteDeleteArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Attach the ILM policy to a Fleet-managed template\n\t\t_, err = elasticstack.NewElasticsearchIndexTemplateIlmAttachment(ctx, \"logs_system\", &elasticstack.ElasticsearchIndexTemplateIlmAttachmentArgs{\n\t\t\tIndexTemplate: pulumi.String(\"logs-system.syslog\"),\n\t\t\tLifecycleName: retention90d.Name,\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.ElasticsearchIndexLifecycleHotRolloverArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleDeleteArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchIndexLifecycleDeleteDeleteArgs;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplateIlmAttachment;\nimport com.pulumi.elasticstack.ElasticsearchIndexTemplateIlmAttachmentArgs;\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\n        var retention90d = new ElasticsearchIndexLifecycle(\"retention90d\", ElasticsearchIndexLifecycleArgs.builder()\n            .name(\"90-days-retention\")\n            .hot(ElasticsearchIndexLifecycleHotArgs.builder()\n                .rollover(ElasticsearchIndexLifecycleHotRolloverArgs.builder()\n                    .maxAge(\"7d\")\n                    .build())\n                .build())\n            .delete(ElasticsearchIndexLifecycleDeleteArgs.builder()\n                .minAge(\"90d\")\n                .delete(ElasticsearchIndexLifecycleDeleteDeleteArgs.builder()\n                    .build())\n                .build())\n            .build());\n\n        // Attach the ILM policy to a Fleet-managed template\n        var logsSystem = new ElasticsearchIndexTemplateIlmAttachment(\"logsSystem\", ElasticsearchIndexTemplateIlmAttachmentArgs.builder()\n            .indexTemplate(\"logs-system.syslog\")\n            .lifecycleName(retention90d.name())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Create an ILM policy\n  retention90d:\n    type: elasticstack:ElasticsearchIndexLifecycle\n    name: retention_90d\n    properties:\n      name: 90-days-retention\n      hot:\n        rollover:\n          maxAge: 7d\n      delete:\n        minAge: 90d\n        delete: {}\n  # Attach the ILM policy to a Fleet-managed template\n  logsSystem:\n    type: elasticstack:ElasticsearchIndexTemplateIlmAttachment\n    name: logs_system\n    properties:\n      indexTemplate: logs-system.syslog\n      lifecycleName: ${retention90d.name}\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchIndexTemplateIlmAttachment:ElasticsearchIndexTemplateIlmAttachment logs_system <cluster_uuid>/logs-system.syslog@custom\n```\n\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateIlmAttachmentElasticsearchConnection:ElasticsearchIndexTemplateIlmAttachmentElasticsearchConnection"},"type":"array"},"indexTemplate":{"description":"Name of the index template to attach the ILM policy to. For Fleet-managed templates, this is typically the template name (e.g., 'logs-system.syslog').\n","type":"string"},"lifecycleName":{"description":"Name of the ILM policy to attach to the index template.\n","type":"string"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateIlmAttachmentElasticsearchConnection:ElasticsearchIndexTemplateIlmAttachmentElasticsearchConnection"},"type":"array"},"indexTemplate":{"description":"Name of the index template to attach the ILM policy to. For Fleet-managed templates, this is typically the template name (e.g., 'logs-system.syslog').\n","type":"string"},"lifecycleName":{"description":"Name of the ILM policy to attach to the index template.\n","type":"string"}},"required":["indexTemplate","lifecycleName"],"requiredInputs":["indexTemplate","lifecycleName"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIndexTemplateIlmAttachment resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateIlmAttachmentElasticsearchConnection:ElasticsearchIndexTemplateIlmAttachmentElasticsearchConnection"},"type":"array"},"indexTemplate":{"description":"Name of the index template to attach the ILM policy to. For Fleet-managed templates, this is typically the template name (e.g., 'logs-system.syslog').\n","type":"string"},"lifecycleName":{"description":"Name of the ILM policy to attach to the index template.\n","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchInferenceEndpoint:ElasticsearchInferenceEndpoint":{"description":"Creates or updates an inference endpoint.See the [inference endpoint API documentation](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-inference-put-1) for more details.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.ElasticsearchInferenceEndpoint(\"example\", {\n    inferenceId: \"text-embedding-3-large\",\n    taskType: \"text_embedding\",\n    service: \"azureaistudio\",\n    serviceSettings: JSON.stringify({\n        api_key: \"example_key\",\n        target: \"https://example.com/openai/deployments/text-embedding-3-large/embeddings?api-version=2023-05-151\",\n        provider: \"openai\",\n        endpoint_type: \"token\",\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.ElasticsearchInferenceEndpoint(\"example\",\n    inference_id=\"text-embedding-3-large\",\n    task_type=\"text_embedding\",\n    service=\"azureaistudio\",\n    service_settings=json.dumps({\n        \"api_key\": \"example_key\",\n        \"target\": \"https://example.com/openai/deployments/text-embedding-3-large/embeddings?api-version=2023-05-151\",\n        \"provider\": \"openai\",\n        \"endpoint_type\": \"token\",\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(() => \n{\n    var example = new Elasticstack.ElasticsearchInferenceEndpoint(\"example\", new()\n    {\n        InferenceId = \"text-embedding-3-large\",\n        TaskType = \"text_embedding\",\n        Service = \"azureaistudio\",\n        ServiceSettings = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"api_key\"] = \"example_key\",\n            [\"target\"] = \"https://example.com/openai/deployments/text-embedding-3-large/embeddings?api-version=2023-05-151\",\n            [\"provider\"] = \"openai\",\n            [\"endpoint_type\"] = \"token\",\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\"api_key\":       \"example_key\",\n\t\t\t\"target\":        \"https://example.com/openai/deployments/text-embedding-3-large/embeddings?api-version=2023-05-151\",\n\t\t\t\"provider\":      \"openai\",\n\t\t\t\"endpoint_type\": \"token\",\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.NewElasticsearchInferenceEndpoint(ctx, \"example\", &elasticstack.ElasticsearchInferenceEndpointArgs{\n\t\t\tInferenceId:     pulumi.String(\"text-embedding-3-large\"),\n\t\t\tTaskType:        pulumi.String(\"text_embedding\"),\n\t\t\tService:         pulumi.String(\"azureaistudio\"),\n\t\t\tServiceSettings: 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.ElasticsearchInferenceEndpoint;\nimport com.pulumi.elasticstack.ElasticsearchInferenceEndpointArgs;\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 ElasticsearchInferenceEndpoint(\"example\", ElasticsearchInferenceEndpointArgs.builder()\n            .inferenceId(\"text-embedding-3-large\")\n            .taskType(\"text_embedding\")\n            .service(\"azureaistudio\")\n            .serviceSettings(serializeJson(\n                jsonObject(\n                    jsonProperty(\"api_key\", \"example_key\"),\n                    jsonProperty(\"target\", \"https://example.com/openai/deployments/text-embedding-3-large/embeddings?api-version=2023-05-151\"),\n                    jsonProperty(\"provider\", \"openai\"),\n                    jsonProperty(\"endpoint_type\", \"token\")\n                )))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:ElasticsearchInferenceEndpoint\n    properties:\n      inferenceId: text-embedding-3-large\n      taskType: text_embedding\n      service: azureaistudio\n      serviceSettings:\n        fn::toJSON:\n          api_key: example_key\n          target: https://example.com/openai/deployments/text-embedding-3-large/embeddings?api-version=2023-05-151\n          provider: openai\n          endpoint_type: token\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"chunkingSettings":{"description":"Configuration for chunking input text, as a JSON object. Applicable only for embedding task types.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchInferenceEndpointElasticsearchConnection:ElasticsearchInferenceEndpointElasticsearchConnection"},"type":"array"},"inferenceId":{"description":"The unique identifier of the inference endpoint.\n","type":"string"},"service":{"description":"The service type for the inference endpoint (e.g. <span pulumi-lang-nodejs=\"`openai`\" pulumi-lang-dotnet=\"`Openai`\" pulumi-lang-go=\"`openai`\" pulumi-lang-python=\"`openai`\" pulumi-lang-yaml=\"`openai`\" pulumi-lang-java=\"`openai`\">`openai`</span>, <span pulumi-lang-nodejs=\"`cohere`\" pulumi-lang-dotnet=\"`Cohere`\" pulumi-lang-go=\"`cohere`\" pulumi-lang-python=\"`cohere`\" pulumi-lang-yaml=\"`cohere`\" pulumi-lang-java=\"`cohere`\">`cohere`</span>, <span pulumi-lang-nodejs=\"`elasticsearch`\" pulumi-lang-dotnet=\"`Elasticsearch`\" pulumi-lang-go=\"`elasticsearch`\" pulumi-lang-python=\"`elasticsearch`\" pulumi-lang-yaml=\"`elasticsearch`\" pulumi-lang-java=\"`elasticsearch`\">`elasticsearch`</span>).\n","type":"string"},"serviceSettings":{"description":"Settings specific to the service provider, as a JSON object. May include credentials and model identifiers.\n","secret":true,"type":"string"},"taskSettings":{"description":"Task-specific settings, as a JSON object. Optional and service-dependent. Only keys explicitly set here are tracked; server-applied defaults returned by the API are ignored to avoid perpetual drift.\n","type":"string"},"taskType":{"description":"must be one of [<span pulumi-lang-nodejs=\"`sparseEmbedding`\" pulumi-lang-dotnet=\"`SparseEmbedding`\" pulumi-lang-go=\"`sparseEmbedding`\" pulumi-lang-python=\"`sparse_embedding`\" pulumi-lang-yaml=\"`sparseEmbedding`\" pulumi-lang-java=\"`sparseEmbedding`\">`sparse_embedding`</span>, <span pulumi-lang-nodejs=\"`textEmbedding`\" pulumi-lang-dotnet=\"`TextEmbedding`\" pulumi-lang-go=\"`textEmbedding`\" pulumi-lang-python=\"`text_embedding`\" pulumi-lang-yaml=\"`textEmbedding`\" pulumi-lang-java=\"`textEmbedding`\">`text_embedding`</span>, <span pulumi-lang-nodejs=\"`rerank`\" pulumi-lang-dotnet=\"`Rerank`\" pulumi-lang-go=\"`rerank`\" pulumi-lang-python=\"`rerank`\" pulumi-lang-yaml=\"`rerank`\" pulumi-lang-java=\"`rerank`\">`rerank`</span>, <span pulumi-lang-nodejs=\"`completion`\" pulumi-lang-dotnet=\"`Completion`\" pulumi-lang-go=\"`completion`\" pulumi-lang-python=\"`completion`\" pulumi-lang-yaml=\"`completion`\" pulumi-lang-java=\"`completion`\">`completion`</span>, <span pulumi-lang-nodejs=\"`chatCompletion`\" pulumi-lang-dotnet=\"`ChatCompletion`\" pulumi-lang-go=\"`chatCompletion`\" pulumi-lang-python=\"`chat_completion`\" pulumi-lang-yaml=\"`chatCompletion`\" pulumi-lang-java=\"`chatCompletion`\">`chat_completion`</span>, <span pulumi-lang-nodejs=\"`embedding`\" pulumi-lang-dotnet=\"`Embedding`\" pulumi-lang-go=\"`embedding`\" pulumi-lang-python=\"`embedding`\" pulumi-lang-yaml=\"`embedding`\" pulumi-lang-java=\"`embedding`\">`embedding`</span>]\n","type":"string"}},"properties":{"chunkingSettings":{"description":"Configuration for chunking input text, as a JSON object. Applicable only for embedding task types.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchInferenceEndpointElasticsearchConnection:ElasticsearchInferenceEndpointElasticsearchConnection"},"type":"array"},"inferenceId":{"description":"The unique identifier of the inference endpoint.\n","type":"string"},"service":{"description":"The service type for the inference endpoint (e.g. <span pulumi-lang-nodejs=\"`openai`\" pulumi-lang-dotnet=\"`Openai`\" pulumi-lang-go=\"`openai`\" pulumi-lang-python=\"`openai`\" pulumi-lang-yaml=\"`openai`\" pulumi-lang-java=\"`openai`\">`openai`</span>, <span pulumi-lang-nodejs=\"`cohere`\" pulumi-lang-dotnet=\"`Cohere`\" pulumi-lang-go=\"`cohere`\" pulumi-lang-python=\"`cohere`\" pulumi-lang-yaml=\"`cohere`\" pulumi-lang-java=\"`cohere`\">`cohere`</span>, <span pulumi-lang-nodejs=\"`elasticsearch`\" pulumi-lang-dotnet=\"`Elasticsearch`\" pulumi-lang-go=\"`elasticsearch`\" pulumi-lang-python=\"`elasticsearch`\" pulumi-lang-yaml=\"`elasticsearch`\" pulumi-lang-java=\"`elasticsearch`\">`elasticsearch`</span>).\n","type":"string"},"serviceSettings":{"description":"Settings specific to the service provider, as a JSON object. May include credentials and model identifiers.\n","secret":true,"type":"string"},"taskSettings":{"description":"Task-specific settings, as a JSON object. Optional and service-dependent. Only keys explicitly set here are tracked; server-applied defaults returned by the API are ignored to avoid perpetual drift.\n","type":"string"},"taskType":{"description":"must be one of [<span pulumi-lang-nodejs=\"`sparseEmbedding`\" pulumi-lang-dotnet=\"`SparseEmbedding`\" pulumi-lang-go=\"`sparseEmbedding`\" pulumi-lang-python=\"`sparse_embedding`\" pulumi-lang-yaml=\"`sparseEmbedding`\" pulumi-lang-java=\"`sparseEmbedding`\">`sparse_embedding`</span>, <span pulumi-lang-nodejs=\"`textEmbedding`\" pulumi-lang-dotnet=\"`TextEmbedding`\" pulumi-lang-go=\"`textEmbedding`\" pulumi-lang-python=\"`text_embedding`\" pulumi-lang-yaml=\"`textEmbedding`\" pulumi-lang-java=\"`textEmbedding`\">`text_embedding`</span>, <span pulumi-lang-nodejs=\"`rerank`\" pulumi-lang-dotnet=\"`Rerank`\" pulumi-lang-go=\"`rerank`\" pulumi-lang-python=\"`rerank`\" pulumi-lang-yaml=\"`rerank`\" pulumi-lang-java=\"`rerank`\">`rerank`</span>, <span pulumi-lang-nodejs=\"`completion`\" pulumi-lang-dotnet=\"`Completion`\" pulumi-lang-go=\"`completion`\" pulumi-lang-python=\"`completion`\" pulumi-lang-yaml=\"`completion`\" pulumi-lang-java=\"`completion`\">`completion`</span>, <span pulumi-lang-nodejs=\"`chatCompletion`\" pulumi-lang-dotnet=\"`ChatCompletion`\" pulumi-lang-go=\"`chatCompletion`\" pulumi-lang-python=\"`chat_completion`\" pulumi-lang-yaml=\"`chatCompletion`\" pulumi-lang-java=\"`chatCompletion`\">`chat_completion`</span>, <span pulumi-lang-nodejs=\"`embedding`\" pulumi-lang-dotnet=\"`Embedding`\" pulumi-lang-go=\"`embedding`\" pulumi-lang-python=\"`embedding`\" pulumi-lang-yaml=\"`embedding`\" pulumi-lang-java=\"`embedding`\">`embedding`</span>]\n","type":"string"}},"required":["inferenceId","service","serviceSettings","taskType"],"requiredInputs":["inferenceId","service","serviceSettings"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchInferenceEndpoint resources.\n","properties":{"chunkingSettings":{"description":"Configuration for chunking input text, as a JSON object. Applicable only for embedding task types.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchInferenceEndpointElasticsearchConnection:ElasticsearchInferenceEndpointElasticsearchConnection"},"type":"array"},"inferenceId":{"description":"The unique identifier of the inference endpoint.\n","type":"string"},"service":{"description":"The service type for the inference endpoint (e.g. <span pulumi-lang-nodejs=\"`openai`\" pulumi-lang-dotnet=\"`Openai`\" pulumi-lang-go=\"`openai`\" pulumi-lang-python=\"`openai`\" pulumi-lang-yaml=\"`openai`\" pulumi-lang-java=\"`openai`\">`openai`</span>, <span pulumi-lang-nodejs=\"`cohere`\" pulumi-lang-dotnet=\"`Cohere`\" pulumi-lang-go=\"`cohere`\" pulumi-lang-python=\"`cohere`\" pulumi-lang-yaml=\"`cohere`\" pulumi-lang-java=\"`cohere`\">`cohere`</span>, <span pulumi-lang-nodejs=\"`elasticsearch`\" pulumi-lang-dotnet=\"`Elasticsearch`\" pulumi-lang-go=\"`elasticsearch`\" pulumi-lang-python=\"`elasticsearch`\" pulumi-lang-yaml=\"`elasticsearch`\" pulumi-lang-java=\"`elasticsearch`\">`elasticsearch`</span>).\n","type":"string"},"serviceSettings":{"description":"Settings specific to the service provider, as a JSON object. May include credentials and model identifiers.\n","secret":true,"type":"string"},"taskSettings":{"description":"Task-specific settings, as a JSON object. Optional and service-dependent. Only keys explicitly set here are tracked; server-applied defaults returned by the API are ignored to avoid perpetual drift.\n","type":"string"},"taskType":{"description":"must be one of [<span pulumi-lang-nodejs=\"`sparseEmbedding`\" pulumi-lang-dotnet=\"`SparseEmbedding`\" pulumi-lang-go=\"`sparseEmbedding`\" pulumi-lang-python=\"`sparse_embedding`\" pulumi-lang-yaml=\"`sparseEmbedding`\" pulumi-lang-java=\"`sparseEmbedding`\">`sparse_embedding`</span>, <span pulumi-lang-nodejs=\"`textEmbedding`\" pulumi-lang-dotnet=\"`TextEmbedding`\" pulumi-lang-go=\"`textEmbedding`\" pulumi-lang-python=\"`text_embedding`\" pulumi-lang-yaml=\"`textEmbedding`\" pulumi-lang-java=\"`textEmbedding`\">`text_embedding`</span>, <span pulumi-lang-nodejs=\"`rerank`\" pulumi-lang-dotnet=\"`Rerank`\" pulumi-lang-go=\"`rerank`\" pulumi-lang-python=\"`rerank`\" pulumi-lang-yaml=\"`rerank`\" pulumi-lang-java=\"`rerank`\">`rerank`</span>, <span pulumi-lang-nodejs=\"`completion`\" pulumi-lang-dotnet=\"`Completion`\" pulumi-lang-go=\"`completion`\" pulumi-lang-python=\"`completion`\" pulumi-lang-yaml=\"`completion`\" pulumi-lang-java=\"`completion`\">`completion`</span>, <span pulumi-lang-nodejs=\"`chatCompletion`\" pulumi-lang-dotnet=\"`ChatCompletion`\" pulumi-lang-go=\"`chatCompletion`\" pulumi-lang-python=\"`chat_completion`\" pulumi-lang-yaml=\"`chatCompletion`\" pulumi-lang-java=\"`chatCompletion`\">`chat_completion`</span>, <span pulumi-lang-nodejs=\"`embedding`\" pulumi-lang-dotnet=\"`Embedding`\" pulumi-lang-go=\"`embedding`\" pulumi-lang-python=\"`embedding`\" pulumi-lang-yaml=\"`embedding`\" pulumi-lang-java=\"`embedding`\">`embedding`</span>]\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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 => setCount.json),\n        parseStringSource.then(parseStringSource => 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(() => \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<string, object?>\n            {\n                [\"set\"] = new Dictionary<string, object?>\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 => getElasticsearchIngestProcessorSetResult.Json),\n            parseStringSource.Apply(getElasticsearchIngestProcessorJsonResult => 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\", &elasticstack.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, &elasticstack.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, &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<ingest pipeline name>\n```\n\n","inputProperties":{"description":{"description":"Description of the ingest pipeline.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIngestPipelineElasticsearchConnection:ElasticsearchIngestPipelineElasticsearchConnection"},"type":"array"},"metadata":{"description":"Optional user metadata about the ingest pipeline.\n","type":"string"},"name":{"description":"The name of the ingest pipeline.\n","type":"string"},"onFailures":{"description":"Processors to run immediately after a processor failure. Each processor supports a processor-level <span 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`\">`on_failure`</span> value. If a processor without an <span 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`\">`on_failure`</span> 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","items":{"type":"string"},"type":"array"},"processors":{"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","items":{"type":"string"},"type":"array"}},"properties":{"description":{"description":"Description of the ingest pipeline.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIngestPipelineElasticsearchConnection:ElasticsearchIngestPipelineElasticsearchConnection"},"type":"array"},"metadata":{"description":"Optional user metadata about the ingest pipeline.\n","type":"string"},"name":{"description":"The name of the ingest pipeline.\n","type":"string"},"onFailures":{"description":"Processors to run immediately after a processor failure. Each processor supports a processor-level <span 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`\">`on_failure`</span> value. If a processor without an <span 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`\">`on_failure`</span> 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","items":{"type":"string"},"type":"array"},"processors":{"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","items":{"type":"string"},"type":"array"}},"required":["name","processors"],"requiredInputs":["processors"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchIngestPipeline resources.\n","properties":{"description":{"description":"Description of the ingest pipeline.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIngestPipelineElasticsearchConnection:ElasticsearchIngestPipelineElasticsearchConnection"},"type":"array"},"metadata":{"description":"Optional user metadata about the ingest pipeline.\n","type":"string"},"name":{"description":"The name of the ingest pipeline.\n","type":"string"},"onFailures":{"description":"Processors to run immediately after a processor failure. Each processor supports a processor-level <span 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`\">`on_failure`</span> value. If a processor without an <span 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`\">`on_failure`</span> 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","items":{"type":"string"},"type":"array"},"processors":{"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","items":{"type":"string"},"type":"array"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\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<string, object?>\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\", &elasticstack.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<!--End PulumiCodeChooser -->\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchLogstashPipeline:ElasticsearchLogstashPipeline example <cluster_uuid>/<pipeline ID>\n```\n\n","inputProperties":{"description":{"description":"Description of the pipeline.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchLogstashPipelineElasticsearchConnection:ElasticsearchLogstashPipelineElasticsearchConnection"},"type":"array"},"pipeline":{"description":"Configuration for the pipeline.\n","type":"string"},"pipelineBatchDelay":{"description":"Time in milliseconds to wait for each event before sending an undersized batch to pipeline workers.\n","type":"number"},"pipelineBatchSize":{"description":"The maximum number of events an individual worker thread collects before executing filters and outputs.\n","type":"number"},"pipelineEcsCompatibility":{"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","type":"string"},"pipelineId":{"description":"Identifier for the pipeline.\n","type":"string"},"pipelineMetadata":{"description":"Optional JSON metadata about the pipeline.\n","type":"string"},"pipelineOrdered":{"description":"Set the pipeline event ordering.\n","type":"string"},"pipelinePluginClassloaders":{"description":"(Beta) Load Java plugins in independent classloaders to isolate their dependencies.\n","type":"boolean"},"pipelineUnsafeShutdown":{"description":"Forces Logstash to exit during shutdown even if there are still inflight events in memory.\n","type":"boolean"},"pipelineWorkers":{"description":"The number of parallel workers used to run the filter and output stages of the pipeline.\n","type":"number"},"queueCheckpointAcks":{"description":"The maximum number of ACKed events before forcing a checkpoint when persistent queues are enabled.\n","type":"number"},"queueCheckpointRetry":{"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","type":"boolean"},"queueCheckpointWrites":{"description":"The maximum number of written events before forcing a checkpoint when persistent queues are enabled.\n","type":"number"},"queueDrain":{"description":"When enabled, Logstash waits until the persistent queue is drained before shutting down.\n","type":"boolean"},"queueMaxBytes":{"description":"Units for the total capacity of the queue when persistent queues are enabled.\n","type":"string"},"queueMaxEvents":{"description":"The maximum number of unread events in the queue when persistent queues are enabled.\n","type":"number"},"queuePageCapacity":{"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","type":"string"},"queueType":{"description":"The internal queueing model for event buffering. Options are memory for in-memory queueing, or persisted for disk-based acknowledged queueing.\n","type":"string"},"username":{"description":"User who last updated the pipeline.\n","type":"string"}},"properties":{"description":{"description":"Description of the pipeline.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchLogstashPipelineElasticsearchConnection:ElasticsearchLogstashPipelineElasticsearchConnection"},"type":"array"},"lastModified":{"description":"Date the pipeline was last updated.\n","type":"string"},"pipeline":{"description":"Configuration for the pipeline.\n","type":"string"},"pipelineBatchDelay":{"description":"Time in milliseconds to wait for each event before sending an undersized batch to pipeline workers.\n","type":"number"},"pipelineBatchSize":{"description":"The maximum number of events an individual worker thread collects before executing filters and outputs.\n","type":"number"},"pipelineEcsCompatibility":{"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","type":"string"},"pipelineId":{"description":"Identifier for the pipeline.\n","type":"string"},"pipelineMetadata":{"description":"Optional JSON metadata about the pipeline.\n","type":"string"},"pipelineOrdered":{"description":"Set the pipeline event ordering.\n","type":"string"},"pipelinePluginClassloaders":{"description":"(Beta) Load Java plugins in independent classloaders to isolate their dependencies.\n","type":"boolean"},"pipelineUnsafeShutdown":{"description":"Forces Logstash to exit during shutdown even if there are still inflight events in memory.\n","type":"boolean"},"pipelineWorkers":{"description":"The number of parallel workers used to run the filter and output stages of the pipeline.\n","type":"number"},"queueCheckpointAcks":{"description":"The maximum number of ACKed events before forcing a checkpoint when persistent queues are enabled.\n","type":"number"},"queueCheckpointRetry":{"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","type":"boolean"},"queueCheckpointWrites":{"description":"The maximum number of written events before forcing a checkpoint when persistent queues are enabled.\n","type":"number"},"queueDrain":{"description":"When enabled, Logstash waits until the persistent queue is drained before shutting down.\n","type":"boolean"},"queueMaxBytes":{"description":"Units for the total capacity of the queue when persistent queues are enabled.\n","type":"string"},"queueMaxEvents":{"description":"The maximum number of unread events in the queue when persistent queues are enabled.\n","type":"number"},"queuePageCapacity":{"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","type":"string"},"queueType":{"description":"The internal queueing model for event buffering. Options are memory for in-memory queueing, or persisted for disk-based acknowledged queueing.\n","type":"string"},"username":{"description":"User who last updated the pipeline.\n","type":"string"}},"required":["description","lastModified","pipeline","pipelineBatchDelay","pipelineBatchSize","pipelineEcsCompatibility","pipelineId","pipelineMetadata","pipelineOrdered","pipelinePluginClassloaders","pipelineUnsafeShutdown","pipelineWorkers","queueCheckpointAcks","queueCheckpointRetry","queueCheckpointWrites","queueDrain","queueMaxBytes","queueMaxEvents","queuePageCapacity","queueType","username"],"requiredInputs":["pipeline","pipelineId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchLogstashPipeline resources.\n","properties":{"description":{"description":"Description of the pipeline.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchLogstashPipelineElasticsearchConnection:ElasticsearchLogstashPipelineElasticsearchConnection"},"type":"array"},"lastModified":{"description":"Date the pipeline was last updated.\n","type":"string"},"pipeline":{"description":"Configuration for the pipeline.\n","type":"string"},"pipelineBatchDelay":{"description":"Time in milliseconds to wait for each event before sending an undersized batch to pipeline workers.\n","type":"number"},"pipelineBatchSize":{"description":"The maximum number of events an individual worker thread collects before executing filters and outputs.\n","type":"number"},"pipelineEcsCompatibility":{"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","type":"string"},"pipelineId":{"description":"Identifier for the pipeline.\n","type":"string"},"pipelineMetadata":{"description":"Optional JSON metadata about the pipeline.\n","type":"string"},"pipelineOrdered":{"description":"Set the pipeline event ordering.\n","type":"string"},"pipelinePluginClassloaders":{"description":"(Beta) Load Java plugins in independent classloaders to isolate their dependencies.\n","type":"boolean"},"pipelineUnsafeShutdown":{"description":"Forces Logstash to exit during shutdown even if there are still inflight events in memory.\n","type":"boolean"},"pipelineWorkers":{"description":"The number of parallel workers used to run the filter and output stages of the pipeline.\n","type":"number"},"queueCheckpointAcks":{"description":"The maximum number of ACKed events before forcing a checkpoint when persistent queues are enabled.\n","type":"number"},"queueCheckpointRetry":{"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","type":"boolean"},"queueCheckpointWrites":{"description":"The maximum number of written events before forcing a checkpoint when persistent queues are enabled.\n","type":"number"},"queueDrain":{"description":"When enabled, Logstash waits until the persistent queue is drained before shutting down.\n","type":"boolean"},"queueMaxBytes":{"description":"Units for the total capacity of the queue when persistent queues are enabled.\n","type":"string"},"queueMaxEvents":{"description":"The maximum number of unread events in the queue when persistent queues are enabled.\n","type":"number"},"queuePageCapacity":{"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","type":"string"},"queueType":{"description":"The internal queueing model for event buffering. Options are memory for in-memory queueing, or persisted for disk-based acknowledged queueing.\n","type":"string"},"username":{"description":"User who last updated the pipeline.\n","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchMlAnomalyDetectionJob:ElasticsearchMlAnomalyDetectionJob":{"description":"Creates and manages Machine Learning anomaly detection jobs.\n\nSee the [ML Job API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html) for more details.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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: &elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"15m\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t&elasticstack.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&elasticstack.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: &elasticstack.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: &elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisLimitsArgs{\n\t\t\t\tModelMemoryLimit: pulumi.String(\"100mb\"),\n\t\t\t},\n\t\t\tModelPlotConfig: &elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"allowLazyOpen":{"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.","type":"boolean"},"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."},"backgroundPersistInterval":{"description":"Advanced configuration option. The time between each periodic persistence of the model.","type":"string"},"customSettings":{"description":"Advanced configuration option. Contains custom meta data about the job. For example, it can contain custom URL information.","type":"string"},"dailyModelSnapshotRetentionAfterDays":{"description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.","type":"number"},"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":{"description":"A description of the job.","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobElasticsearchConnection:ElasticsearchMlAnomalyDetectionJobElasticsearchConnection"},"type":"array"},"groups":{"description":"A set of job groups. A job can belong to no groups or many.","items":{"type":"string"},"type":"array"},"jobId":{"description":"The identifier for the anomaly detection job.\n","type":"string"},"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."},"modelSnapshotRetentionDays":{"description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.","type":"number"},"renormalizationWindowDays":{"description":"Advanced configuration option. The period over which adjustments to the score are applied, as new data is seen.","type":"number"},"resultsIndexName":{"description":"A text string that affects the name of the machine learning results index. Do not start the value with `custom-`; Elasticsearch automatically adds this prefix.","type":"string"},"resultsRetentionDays":{"description":"Advanced configuration option. The period of time (in days) that results are retained.","type":"number"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobTimeouts:ElasticsearchMlAnomalyDetectionJobTimeouts"}},"properties":{"allowLazyOpen":{"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.","type":"boolean"},"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."},"backgroundPersistInterval":{"description":"Advanced configuration option. The time between each periodic persistence of the model.","type":"string"},"createTime":{"description":"The time the job was created.","type":"string"},"customSettings":{"description":"Advanced configuration option. Contains custom meta data about the job. For example, it can contain custom URL information.","type":"string"},"dailyModelSnapshotRetentionAfterDays":{"description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.","type":"number"},"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":{"description":"A description of the job.","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobElasticsearchConnection:ElasticsearchMlAnomalyDetectionJobElasticsearchConnection"},"type":"array"},"groups":{"description":"A set of job groups. A job can belong to no groups or many.","items":{"type":"string"},"type":"array"},"jobId":{"description":"The identifier for the anomaly detection job.\n","type":"string"},"jobType":{"description":"Reserved for future use, currently set to anomaly_detector.","type":"string"},"jobVersion":{"description":"The version of Elasticsearch when the job was created.","type":"string"},"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."},"modelSnapshotId":{"description":"A numerical character string that uniquely identifies the model snapshot.","type":"string"},"modelSnapshotRetentionDays":{"description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.","type":"number"},"renormalizationWindowDays":{"description":"Advanced configuration option. The period over which adjustments to the score are applied, as new data is seen.","type":"number"},"resultsIndexName":{"description":"A text string that affects the name of the machine learning results index. Do not start the value with `custom-`; Elasticsearch automatically adds this prefix.","type":"string"},"resultsRetentionDays":{"description":"Advanced configuration option. The period of time (in days) that results are retained.","type":"number"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobTimeouts:ElasticsearchMlAnomalyDetectionJobTimeouts"}},"required":["allowLazyOpen","analysisConfig","analysisLimits","createTime","dailyModelSnapshotRetentionAfterDays","dataDescription","jobId","jobType","jobVersion","modelSnapshotId","modelSnapshotRetentionDays","resultsIndexName"],"requiredInputs":["analysisConfig","dataDescription","jobId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlAnomalyDetectionJob resources.\n","properties":{"allowLazyOpen":{"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.","type":"boolean"},"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."},"backgroundPersistInterval":{"description":"Advanced configuration option. The time between each periodic persistence of the model.","type":"string"},"createTime":{"description":"The time the job was created.","type":"string"},"customSettings":{"description":"Advanced configuration option. Contains custom meta data about the job. For example, it can contain custom URL information.","type":"string"},"dailyModelSnapshotRetentionAfterDays":{"description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.","type":"number"},"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":{"description":"A description of the job.","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobElasticsearchConnection:ElasticsearchMlAnomalyDetectionJobElasticsearchConnection"},"type":"array"},"groups":{"description":"A set of job groups. A job can belong to no groups or many.","items":{"type":"string"},"type":"array"},"jobId":{"description":"The identifier for the anomaly detection job.\n","type":"string"},"jobType":{"description":"Reserved for future use, currently set to anomaly_detector.","type":"string"},"jobVersion":{"description":"The version of Elasticsearch when the job was created.","type":"string"},"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."},"modelSnapshotId":{"description":"A numerical character string that uniquely identifies the model snapshot.","type":"string"},"modelSnapshotRetentionDays":{"description":"Advanced configuration option, which affects the automatic removal of old model snapshots for this job.","type":"number"},"renormalizationWindowDays":{"description":"Advanced configuration option. The period over which adjustments to the score are applied, as new data is seen.","type":"number"},"resultsIndexName":{"description":"A text string that affects the name of the machine learning results index. Do not start the value with `custom-`; Elasticsearch automatically adds this prefix.","type":"string"},"resultsRetentionDays":{"description":"Advanced configuration option. The period of time (in days) that results are retained.","type":"number"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobTimeouts:ElasticsearchMlAnomalyDetectionJobTimeouts"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchMlCalendar:ElasticsearchMlCalendar":{"description":"Manages Machine Learning calendars (the calendar definition only). To attach anomaly detection jobs to a calendar, use <span pulumi-lang-nodejs=\"`elasticstack.ElasticsearchMlCalendarJob`\" pulumi-lang-dotnet=\"`elasticstack.ElasticsearchMlCalendarJob`\" pulumi-lang-go=\"`ElasticsearchMlCalendarJob`\" pulumi-lang-python=\"`ElasticsearchMlCalendarJob`\" pulumi-lang-yaml=\"`elasticstack.ElasticsearchMlCalendarJob`\" pulumi-lang-java=\"`elasticstack.ElasticsearchMlCalendarJob`\">`elasticstack.ElasticsearchMlCalendarJob`</span>. See the [ML put calendar API](https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-calendar.html) for more details. **Import** id format: `<cluster_uuid>/<calendar_id>` (the same value as the computed <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span> attribute).\n","inputProperties":{"calendarId":{"description":"A string that uniquely identifies a calendar. Must contain lowercase alphanumeric characters (a-z and 0-9), hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"description":{"description":"A description of the calendar.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarElasticsearchConnection:ElasticsearchMlCalendarElasticsearchConnection"},"type":"array"}},"properties":{"calendarId":{"description":"A string that uniquely identifies a calendar. Must contain lowercase alphanumeric characters (a-z and 0-9), hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"description":{"description":"A description of the calendar.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarElasticsearchConnection:ElasticsearchMlCalendarElasticsearchConnection"},"type":"array"}},"required":["calendarId","description"],"requiredInputs":["calendarId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlCalendar resources.\n","properties":{"calendarId":{"description":"A string that uniquely identifies a calendar. Must contain lowercase alphanumeric characters (a-z and 0-9), hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"description":{"description":"A description of the calendar.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarElasticsearchConnection:ElasticsearchMlCalendarElasticsearchConnection"},"type":"array"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchMlCalendarEvent:ElasticsearchMlCalendarEvent":{"description":"Manages scheduled events for a Machine Learning calendar. See the [ML post calendar events API](https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-ml-post-calendar-events) for more details. **Import** id format: `<cluster_uuid>/<calendar_id>/<event_id>` (the same value as the computed <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span> attribute).\n","inputProperties":{"calendarId":{"description":"The identifier for the calendar that owns the event. Must contain lowercase alphanumeric characters (a-z and 0-9), hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"description":{"description":"A description of the scheduled event.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarEventElasticsearchConnection:ElasticsearchMlCalendarEventElasticsearchConnection"},"type":"array"},"endTime":{"description":"The end time of the scheduled event in RFC 3339 format.\n","type":"string"},"forceTimeShift":{"description":"When set, changes the duration of the event to the specified value in seconds (decimal digits as a string; the API uses a JSON number). Requires Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`forceTimeShift`\" pulumi-lang-dotnet=\"`ForceTimeShift`\" pulumi-lang-go=\"`forceTimeShift`\" pulumi-lang-python=\"`force_time_shift`\" pulumi-lang-yaml=\"`forceTimeShift`\" pulumi-lang-java=\"`forceTimeShift`\">`force_time_shift`</span> in the Elasticsearch API.\n","type":"string"},"skipModelUpdate":{"description":"If true, model updates are not generated for buckets that fall inside the event period. When omitted, the request does not send this field and Elasticsearch applies its default behavior. Explicit values require Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`skipModelUpdate`\" pulumi-lang-dotnet=\"`SkipModelUpdate`\" pulumi-lang-go=\"`skipModelUpdate`\" pulumi-lang-python=\"`skip_model_update`\" pulumi-lang-yaml=\"`skipModelUpdate`\" pulumi-lang-java=\"`skipModelUpdate`\">`skip_model_update`</span> in the Elasticsearch API.\n","type":"boolean"},"skipResult":{"description":"If true, results are not generated for buckets that fall inside the event period. When omitted, the request does not send this field and Elasticsearch applies its default behavior. Explicit values require Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`skipResult`\" pulumi-lang-dotnet=\"`SkipResult`\" pulumi-lang-go=\"`skipResult`\" pulumi-lang-python=\"`skip_result`\" pulumi-lang-yaml=\"`skipResult`\" pulumi-lang-java=\"`skipResult`\">`skip_result`</span> in the Elasticsearch API.\n","type":"boolean"},"startTime":{"description":"The start time of the scheduled event in RFC 3339 format.\n","type":"string"}},"properties":{"calendarId":{"description":"The identifier for the calendar that owns the event. Must contain lowercase alphanumeric characters (a-z and 0-9), hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"description":{"description":"A description of the scheduled event.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarEventElasticsearchConnection:ElasticsearchMlCalendarEventElasticsearchConnection"},"type":"array"},"endTime":{"description":"The end time of the scheduled event in RFC 3339 format.\n","type":"string"},"eventId":{"description":"The server-generated identifier for the event.\n","type":"string"},"forceTimeShift":{"description":"When set, changes the duration of the event to the specified value in seconds (decimal digits as a string; the API uses a JSON number). Requires Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`forceTimeShift`\" pulumi-lang-dotnet=\"`ForceTimeShift`\" pulumi-lang-go=\"`forceTimeShift`\" pulumi-lang-python=\"`force_time_shift`\" pulumi-lang-yaml=\"`forceTimeShift`\" pulumi-lang-java=\"`forceTimeShift`\">`force_time_shift`</span> in the Elasticsearch API.\n","type":"string"},"skipModelUpdate":{"description":"If true, model updates are not generated for buckets that fall inside the event period. When omitted, the request does not send this field and Elasticsearch applies its default behavior. Explicit values require Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`skipModelUpdate`\" pulumi-lang-dotnet=\"`SkipModelUpdate`\" pulumi-lang-go=\"`skipModelUpdate`\" pulumi-lang-python=\"`skip_model_update`\" pulumi-lang-yaml=\"`skipModelUpdate`\" pulumi-lang-java=\"`skipModelUpdate`\">`skip_model_update`</span> in the Elasticsearch API.\n","type":"boolean"},"skipResult":{"description":"If true, results are not generated for buckets that fall inside the event period. When omitted, the request does not send this field and Elasticsearch applies its default behavior. Explicit values require Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`skipResult`\" pulumi-lang-dotnet=\"`SkipResult`\" pulumi-lang-go=\"`skipResult`\" pulumi-lang-python=\"`skip_result`\" pulumi-lang-yaml=\"`skipResult`\" pulumi-lang-java=\"`skipResult`\">`skip_result`</span> in the Elasticsearch API.\n","type":"boolean"},"startTime":{"description":"The start time of the scheduled event in RFC 3339 format.\n","type":"string"}},"required":["calendarId","description","endTime","eventId","skipModelUpdate","skipResult","startTime"],"requiredInputs":["calendarId","description","endTime","startTime"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlCalendarEvent resources.\n","properties":{"calendarId":{"description":"The identifier for the calendar that owns the event. Must contain lowercase alphanumeric characters (a-z and 0-9), hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"description":{"description":"A description of the scheduled event.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarEventElasticsearchConnection:ElasticsearchMlCalendarEventElasticsearchConnection"},"type":"array"},"endTime":{"description":"The end time of the scheduled event in RFC 3339 format.\n","type":"string"},"eventId":{"description":"The server-generated identifier for the event.\n","type":"string"},"forceTimeShift":{"description":"When set, changes the duration of the event to the specified value in seconds (decimal digits as a string; the API uses a JSON number). Requires Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`forceTimeShift`\" pulumi-lang-dotnet=\"`ForceTimeShift`\" pulumi-lang-go=\"`forceTimeShift`\" pulumi-lang-python=\"`force_time_shift`\" pulumi-lang-yaml=\"`forceTimeShift`\" pulumi-lang-java=\"`forceTimeShift`\">`force_time_shift`</span> in the Elasticsearch API.\n","type":"string"},"skipModelUpdate":{"description":"If true, model updates are not generated for buckets that fall inside the event period. When omitted, the request does not send this field and Elasticsearch applies its default behavior. Explicit values require Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`skipModelUpdate`\" pulumi-lang-dotnet=\"`SkipModelUpdate`\" pulumi-lang-go=\"`skipModelUpdate`\" pulumi-lang-python=\"`skip_model_update`\" pulumi-lang-yaml=\"`skipModelUpdate`\" pulumi-lang-java=\"`skipModelUpdate`\">`skip_model_update`</span> in the Elasticsearch API.\n","type":"boolean"},"skipResult":{"description":"If true, results are not generated for buckets that fall inside the event period. When omitted, the request does not send this field and Elasticsearch applies its default behavior. Explicit values require Elasticsearch **8.16** or newer. Maps to <span pulumi-lang-nodejs=\"`skipResult`\" pulumi-lang-dotnet=\"`SkipResult`\" pulumi-lang-go=\"`skipResult`\" pulumi-lang-python=\"`skip_result`\" pulumi-lang-yaml=\"`skipResult`\" pulumi-lang-java=\"`skipResult`\">`skip_result`</span> in the Elasticsearch API.\n","type":"boolean"},"startTime":{"description":"The start time of the scheduled event in RFC 3339 format.\n","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchMlCalendarJob:ElasticsearchMlCalendarJob":{"inputProperties":{"calendarId":{"description":"Identifier of the ML calendar. Must contain lowercase alphanumeric characters (a-z and 0-9), dots, hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarJobElasticsearchConnection:ElasticsearchMlCalendarJobElasticsearchConnection"},"type":"array"},"jobId":{"description":"Anomaly detection **job identifier** or **job group name** to attach to the calendar, matching Elasticsearch `PUT .../jobs/{job_id}` (one value per resource; not a comma-separated list).\n","type":"string"}},"properties":{"calendarId":{"description":"Identifier of the ML calendar. Must contain lowercase alphanumeric characters (a-z and 0-9), dots, hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarJobElasticsearchConnection:ElasticsearchMlCalendarJobElasticsearchConnection"},"type":"array"},"jobId":{"description":"Anomaly detection **job identifier** or **job group name** to attach to the calendar, matching Elasticsearch `PUT .../jobs/{job_id}` (one value per resource; not a comma-separated list).\n","type":"string"}},"required":["calendarId","jobId"],"requiredInputs":["calendarId","jobId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlCalendarJob resources.\n","properties":{"calendarId":{"description":"Identifier of the ML calendar. Must contain lowercase alphanumeric characters (a-z and 0-9), dots, hyphens, or underscores. Must start and end with an alphanumeric character.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlCalendarJobElasticsearchConnection:ElasticsearchMlCalendarJobElasticsearchConnection"},"type":"array"},"jobId":{"description":"Anomaly detection **job identifier** or **job group name** to attach to the calendar, matching Elasticsearch `PUT .../jobs/{job_id}` (one value per resource; not a comma-separated list).\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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.ElasticsearchMlAnomalyDetectionJob(\"example\", {\n    jobId: \"example-anomaly-job\",\n    description: \"Example anomaly detection job\",\n    analysisConfig: {\n        bucketSpan: \"15m\",\n        detectors: [{\n            \"function\": \"count\",\n            detectorDescription: \"Count anomalies\",\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.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\": \"count\",\n            \"detector_description\": \"Count anomalies\",\n        }],\n    },\n    data_description={\n        \"time_field\": \"@timestamp\",\n        \"time_format\": \"epoch_ms\",\n    })\n# Basic ML Datafeed\nbasic = elasticstack.ElasticsearchMlDatafeed(\"basic\",\n    datafeed_id=\"my-basic-datafeed\",\n    job_id=example.job_id,\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.job_id,\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(() => \n{\n    // Required ML Job for the datafeed\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 = \"count\",\n                    DetectorDescription = \"Count anomalies\",\n                },\n            },\n        },\n        DataDescription = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs\n        {\n            TimeField = \"@timestamp\",\n            TimeFormat = \"epoch_ms\",\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<string, object?>\n        {\n            [\"match_all\"] = new Dictionary<string, object?>\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<string, object?>\n        {\n            [\"bool\"] = new Dictionary<string, object?>\n            {\n                [\"must\"] = new[]\n                {\n                    new Dictionary<string, object?>\n                    {\n                        [\"range\"] = new Dictionary<string, object?>\n                        {\n                            [\"@timestamp\"] = new Dictionary<string, object?>\n                            {\n                                [\"gte\"] = \"now-1h\",\n                            },\n                        },\n                    },\n                    new Dictionary<string, object?>\n                    {\n                        [\"term\"] = new Dictionary<string, object?>\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<string, object?>\n        {\n            [\"hour_of_day\"] = new Dictionary<string, object?>\n            {\n                [\"type\"] = \"long\",\n                [\"script\"] = new Dictionary<string, object?>\n                {\n                    [\"source\"] = \"emit(doc['@timestamp'].value.getHour())\",\n                },\n            },\n        }),\n        ScriptFields = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"my_script_field\"] = new Dictionary<string, object?>\n            {\n                [\"script\"] = new Dictionary<string, object?>\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.NewElasticsearchMlAnomalyDetectionJob(ctx, \"example\", &elasticstack.ElasticsearchMlAnomalyDetectionJobArgs{\n\t\t\tJobId:       pulumi.String(\"example-anomaly-job\"),\n\t\t\tDescription: pulumi.String(\"Example anomaly detection job\"),\n\t\t\tAnalysisConfig: &elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"15m\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t&elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs{\n\t\t\t\t\t\tFunction:            pulumi.String(\"count\"),\n\t\t\t\t\t\tDetectorDescription: pulumi.String(\"Count anomalies\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDescription: &elasticstack.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})\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\", &elasticstack.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\", &elasticstack.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: &elasticstack.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: &elasticstack.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: &elasticstack.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.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.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 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(\"count\")\n                    .detectorDescription(\"Count anomalies\")\n                    .build())\n                .build())\n            .dataDescription(ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs.builder()\n                .timeField(\"@timestamp\")\n                .timeFormat(\"epoch_ms\")\n                .build())\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:ElasticsearchMlAnomalyDetectionJob\n    properties:\n      jobId: example-anomaly-job\n      description: Example anomaly detection job\n      analysisConfig:\n        bucketSpan: 15m\n        detectors:\n          - function: count\n            detectorDescription: Count anomalies\n      dataDescription:\n        timeField: '@timestamp'\n        timeFormat: epoch_ms\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"aggregations":{"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","type":"string"},"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":{"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","type":"string"},"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 <span 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`\">`query_delay`</span> 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":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedElasticsearchConnection:ElasticsearchMlDatafeedElasticsearchConnection"},"type":"array"},"frequency":{"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 <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> 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","type":"string"},"indices":{"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 <span 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`\">`remote_cluster_client`</span> role.\n","items":{"type":"string"},"type":"array"},"indicesOptions":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedIndicesOptions:ElasticsearchMlDatafeedIndicesOptions","description":"Specifies index expansion options that are used during search.\n"},"jobId":{"description":"Identifier for the anomaly detection job. The job must exist before creating the datafeed.\n","type":"string"},"maxEmptySearches":{"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 <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> times <span 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`\">`max_empty_searches`</span> 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","type":"number"},"query":{"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 `{<span 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\"\">\"match_all\"</span>: {\"boost\": 1}}`.\n","type":"string"},"queryDelay":{"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 <span pulumi-lang-nodejs=\"`60s`\" pulumi-lang-dotnet=\"`60s`\" pulumi-lang-go=\"`60s`\" pulumi-lang-python=\"`60s`\" pulumi-lang-yaml=\"`60s`\" pulumi-lang-java=\"`60s`\">`60s`</span> and <span pulumi-lang-nodejs=\"`120s`\" pulumi-lang-dotnet=\"`120s`\" pulumi-lang-go=\"`120s`\" pulumi-lang-python=\"`120s`\" pulumi-lang-yaml=\"`120s`\" pulumi-lang-java=\"`120s`\">`120s`</span>. This randomness improves the query performance when there are multiple jobs running on the same node.\n","type":"string"},"runtimeMappings":{"description":"Specifies runtime fields for the datafeed search. This should be a JSON object representing the runtime field mappings.\n","type":"string"},"scriptFields":{"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","type":"string"},"scrollSize":{"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":"number"}},"properties":{"aggregations":{"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","type":"string"},"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":{"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","type":"string"},"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 <span 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`\">`query_delay`</span> 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":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedElasticsearchConnection:ElasticsearchMlDatafeedElasticsearchConnection"},"type":"array"},"frequency":{"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 <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> 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","type":"string"},"indices":{"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 <span 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`\">`remote_cluster_client`</span> role.\n","items":{"type":"string"},"type":"array"},"indicesOptions":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedIndicesOptions:ElasticsearchMlDatafeedIndicesOptions","description":"Specifies index expansion options that are used during search.\n"},"jobId":{"description":"Identifier for the anomaly detection job. The job must exist before creating the datafeed.\n","type":"string"},"maxEmptySearches":{"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 <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> times <span 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`\">`max_empty_searches`</span> 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","type":"number"},"query":{"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 `{<span 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\"\">\"match_all\"</span>: {\"boost\": 1}}`.\n","type":"string"},"queryDelay":{"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 <span pulumi-lang-nodejs=\"`60s`\" pulumi-lang-dotnet=\"`60s`\" pulumi-lang-go=\"`60s`\" pulumi-lang-python=\"`60s`\" pulumi-lang-yaml=\"`60s`\" pulumi-lang-java=\"`60s`\">`60s`</span> and <span pulumi-lang-nodejs=\"`120s`\" pulumi-lang-dotnet=\"`120s`\" pulumi-lang-go=\"`120s`\" pulumi-lang-python=\"`120s`\" pulumi-lang-yaml=\"`120s`\" pulumi-lang-java=\"`120s`\">`120s`</span>. This randomness improves the query performance when there are multiple jobs running on the same node.\n","type":"string"},"runtimeMappings":{"description":"Specifies runtime fields for the datafeed search. This should be a JSON object representing the runtime field mappings.\n","type":"string"},"scriptFields":{"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","type":"string"},"scrollSize":{"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":"number"}},"required":["chunkingConfig","datafeedId","delayedDataCheckConfig","frequency","indices","indicesOptions","jobId","query","queryDelay","scrollSize"],"requiredInputs":["datafeedId","indices","jobId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlDatafeed resources.\n","properties":{"aggregations":{"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","type":"string"},"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":{"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","type":"string"},"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 <span 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`\">`query_delay`</span> 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":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedElasticsearchConnection:ElasticsearchMlDatafeedElasticsearchConnection"},"type":"array"},"frequency":{"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 <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> 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","type":"string"},"indices":{"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 <span 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`\">`remote_cluster_client`</span> role.\n","items":{"type":"string"},"type":"array"},"indicesOptions":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedIndicesOptions:ElasticsearchMlDatafeedIndicesOptions","description":"Specifies index expansion options that are used during search.\n"},"jobId":{"description":"Identifier for the anomaly detection job. The job must exist before creating the datafeed.\n","type":"string"},"maxEmptySearches":{"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 <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> times <span 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`\">`max_empty_searches`</span> 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","type":"number"},"query":{"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 `{<span 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\"\">\"match_all\"</span>: {\"boost\": 1}}`.\n","type":"string"},"queryDelay":{"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 <span pulumi-lang-nodejs=\"`60s`\" pulumi-lang-dotnet=\"`60s`\" pulumi-lang-go=\"`60s`\" pulumi-lang-python=\"`60s`\" pulumi-lang-yaml=\"`60s`\" pulumi-lang-java=\"`60s`\">`60s`</span> and <span pulumi-lang-nodejs=\"`120s`\" pulumi-lang-dotnet=\"`120s`\" pulumi-lang-go=\"`120s`\" pulumi-lang-python=\"`120s`\" pulumi-lang-yaml=\"`120s`\" pulumi-lang-java=\"`120s`\">`120s`</span>. This randomness improves the query performance when there are multiple jobs running on the same node.\n","type":"string"},"runtimeMappings":{"description":"Specifies runtime fields for the datafeed search. This should be a JSON object representing the runtime field mappings.\n","type":"string"},"scriptFields":{"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","type":"string"},"scrollSize":{"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":"number"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchMlDatafeedState:ElasticsearchMlDatafeedState":{"description":"## Example Usage\n\n<!--Start PulumiCodeChooser -->\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        timeFormat: \"epoch_ms\",\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});\nexport const effectiveSearchStart = non_realtimeElasticsearchMlDatafeedState.effectiveSearchStart;\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        \"time_format\": \"epoch_ms\",\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\")\npulumi.export(\"effectiveSearchStart\", non_realtime_elasticsearch_ml_datafeed_state.effective_search_start)\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(() => \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<string, object?>\n        {\n            [\"properties\"] = new Dictionary<string, object?>\n            {\n                [\"@timestamp\"] = new Dictionary<string, object?>\n                {\n                    [\"type\"] = \"date\",\n                },\n                [\"value\"] = new Dictionary<string, object?>\n                {\n                    [\"type\"] = \"double\",\n                },\n                [\"user\"] = new Dictionary<string, object?>\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            TimeFormat = \"epoch_ms\",\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<string, object?>\n        {\n            [\"bool\"] = new Dictionary<string, object?>\n            {\n                [\"must\"] = new[]\n                {\n                    new Dictionary<string, object?>\n                    {\n                        [\"range\"] = new Dictionary<string, object?>\n                        {\n                            [\"@timestamp\"] = new Dictionary<string, object?>\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<string, object?>\n        {\n            [\"match_all\"] = new Dictionary<string, object?>\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    return new Dictionary<string, object?>\n    {\n        [\"effectiveSearchStart\"] = non_realtimeElasticsearchMlDatafeedState.EffectiveSearchStart,\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\", &elasticstack.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\", &elasticstack.ElasticsearchMlAnomalyDetectionJobArgs{\n\t\t\tJobId:       pulumi.String(\"example-anomaly-job\"),\n\t\t\tDescription: pulumi.String(\"Example anomaly detection job\"),\n\t\t\tAnalysisConfig: &elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"15m\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t&elasticstack.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: &elasticstack.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})\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\", &elasticstack.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\", &elasticstack.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\", &elasticstack.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: &elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"1h\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t&elasticstack.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: &elasticstack.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: &elasticstack.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\", &elasticstack.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\", &elasticstack.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\tnon_realtimeElasticsearchMlDatafeedState, err := elasticstack.NewElasticsearchMlDatafeedState(ctx, \"non-realtime\", &elasticstack.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\tctx.Export(\"effectiveSearchStart\", non_realtimeElasticsearchMlDatafeedState.EffectiveSearchStart)\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                .timeFormat(\"epoch_ms\")\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        ctx.export(\"effectiveSearchStart\", non_realtimeElasticsearchMlDatafeedState.effectiveSearchStart());\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        timeFormat: epoch_ms\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\noutputs:\n  effectiveSearchStart: ${[\"non-realtimeElasticsearchMlDatafeedState\"].effectiveSearchStart}\n```\n<!--End PulumiCodeChooser -->\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","inputProperties":{"datafeedId":{"description":"Identifier for the ML datafeed.\n","type":"string"},"datafeedTimeout":{"description":"Timeout for the operation. Examples: <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>, <span pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\">`5m`</span>, <span pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\">`1h`</span>. Default is <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateElasticsearchConnection:ElasticsearchMlDatafeedStateElasticsearchConnection"},"type":"array"},"end":{"description":"The time that the datafeed should end collecting data. When not specified, the datafeed continues in real-time. This value is preserved verbatim in state and is passed to the Start Datafeed API; Elasticsearch may use a different effective search end, which is reported in <span pulumi-lang-nodejs=\"`effectiveSearchEnd`\" pulumi-lang-dotnet=\"`EffectiveSearchEnd`\" pulumi-lang-go=\"`effectiveSearchEnd`\" pulumi-lang-python=\"`effective_search_end`\" pulumi-lang-yaml=\"`effectiveSearchEnd`\" pulumi-lang-java=\"`effectiveSearchEnd`\">`effective_search_end`</span>. This property must be specified in RFC 3339 format.\n","type":"string"},"force":{"description":"When stopping a datafeed, use to forcefully stop it.\n","type":"boolean"},"start":{"description":"The time that the datafeed should start collecting data. When not specified, the datafeed starts in real-time. This value is preserved verbatim in state and is passed to the Start Datafeed API; Elasticsearch may use a different effective search start, which is reported in <span pulumi-lang-nodejs=\"`effectiveSearchStart`\" pulumi-lang-dotnet=\"`EffectiveSearchStart`\" pulumi-lang-go=\"`effectiveSearchStart`\" pulumi-lang-python=\"`effective_search_start`\" pulumi-lang-yaml=\"`effectiveSearchStart`\" pulumi-lang-java=\"`effectiveSearchStart`\">`effective_search_start`</span>. This property must be specified in RFC 3339 format.\n","type":"string"},"state":{"description":"The desired state for the ML datafeed. Valid values are <span pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\">`started`</span> and <span pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\">`stopped`</span>.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateTimeouts:ElasticsearchMlDatafeedStateTimeouts"}},"properties":{"datafeedId":{"description":"Identifier for the ML datafeed.\n","type":"string"},"datafeedTimeout":{"description":"Timeout for the operation. Examples: <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>, <span pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\">`5m`</span>, <span pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\">`1h`</span>. Default is <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"effectiveSearchEnd":{"description":"The effective search end time reported by Elasticsearch for a started datafeed (`running_state.search_interval.end_ms`). Null when the datafeed is stopped, when `running_state.real_time_configured` is true, or when <span pulumi-lang-nodejs=\"`runningState`\" pulumi-lang-dotnet=\"`RunningState`\" pulumi-lang-go=\"`runningState`\" pulumi-lang-python=\"`running_state`\" pulumi-lang-yaml=\"`runningState`\" pulumi-lang-java=\"`runningState`\">`running_state`</span> / <span pulumi-lang-nodejs=\"`searchInterval`\" pulumi-lang-dotnet=\"`SearchInterval`\" pulumi-lang-go=\"`searchInterval`\" pulumi-lang-python=\"`search_interval`\" pulumi-lang-yaml=\"`searchInterval`\" pulumi-lang-java=\"`searchInterval`\">`search_interval`</span> is absent.\n","type":"string"},"effectiveSearchStart":{"description":"The effective search start time reported by Elasticsearch for a started datafeed (`running_state.search_interval.start_ms`). Null when the datafeed is stopped or when <span pulumi-lang-nodejs=\"`runningState`\" pulumi-lang-dotnet=\"`RunningState`\" pulumi-lang-go=\"`runningState`\" pulumi-lang-python=\"`running_state`\" pulumi-lang-yaml=\"`runningState`\" pulumi-lang-java=\"`runningState`\">`running_state`</span> / <span pulumi-lang-nodejs=\"`searchInterval`\" pulumi-lang-dotnet=\"`SearchInterval`\" pulumi-lang-go=\"`searchInterval`\" pulumi-lang-python=\"`search_interval`\" pulumi-lang-yaml=\"`searchInterval`\" pulumi-lang-java=\"`searchInterval`\">`search_interval`</span> is absent.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateElasticsearchConnection:ElasticsearchMlDatafeedStateElasticsearchConnection"},"type":"array"},"end":{"description":"The time that the datafeed should end collecting data. When not specified, the datafeed continues in real-time. This value is preserved verbatim in state and is passed to the Start Datafeed API; Elasticsearch may use a different effective search end, which is reported in <span pulumi-lang-nodejs=\"`effectiveSearchEnd`\" pulumi-lang-dotnet=\"`EffectiveSearchEnd`\" pulumi-lang-go=\"`effectiveSearchEnd`\" pulumi-lang-python=\"`effective_search_end`\" pulumi-lang-yaml=\"`effectiveSearchEnd`\" pulumi-lang-java=\"`effectiveSearchEnd`\">`effective_search_end`</span>. This property must be specified in RFC 3339 format.\n","type":"string"},"force":{"description":"When stopping a datafeed, use to forcefully stop it.\n","type":"boolean"},"start":{"description":"The time that the datafeed should start collecting data. When not specified, the datafeed starts in real-time. This value is preserved verbatim in state and is passed to the Start Datafeed API; Elasticsearch may use a different effective search start, which is reported in <span pulumi-lang-nodejs=\"`effectiveSearchStart`\" pulumi-lang-dotnet=\"`EffectiveSearchStart`\" pulumi-lang-go=\"`effectiveSearchStart`\" pulumi-lang-python=\"`effective_search_start`\" pulumi-lang-yaml=\"`effectiveSearchStart`\" pulumi-lang-java=\"`effectiveSearchStart`\">`effective_search_start`</span>. This property must be specified in RFC 3339 format.\n","type":"string"},"state":{"description":"The desired state for the ML datafeed. Valid values are <span pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\">`started`</span> and <span pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\">`stopped`</span>.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateTimeouts:ElasticsearchMlDatafeedStateTimeouts"}},"required":["datafeedId","datafeedTimeout","effectiveSearchEnd","effectiveSearchStart","force","state"],"requiredInputs":["datafeedId","state"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlDatafeedState resources.\n","properties":{"datafeedId":{"description":"Identifier for the ML datafeed.\n","type":"string"},"datafeedTimeout":{"description":"Timeout for the operation. Examples: <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>, <span pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\">`5m`</span>, <span pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\">`1h`</span>. Default is <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"effectiveSearchEnd":{"description":"The effective search end time reported by Elasticsearch for a started datafeed (`running_state.search_interval.end_ms`). Null when the datafeed is stopped, when `running_state.real_time_configured` is true, or when <span pulumi-lang-nodejs=\"`runningState`\" pulumi-lang-dotnet=\"`RunningState`\" pulumi-lang-go=\"`runningState`\" pulumi-lang-python=\"`running_state`\" pulumi-lang-yaml=\"`runningState`\" pulumi-lang-java=\"`runningState`\">`running_state`</span> / <span pulumi-lang-nodejs=\"`searchInterval`\" pulumi-lang-dotnet=\"`SearchInterval`\" pulumi-lang-go=\"`searchInterval`\" pulumi-lang-python=\"`search_interval`\" pulumi-lang-yaml=\"`searchInterval`\" pulumi-lang-java=\"`searchInterval`\">`search_interval`</span> is absent.\n","type":"string"},"effectiveSearchStart":{"description":"The effective search start time reported by Elasticsearch for a started datafeed (`running_state.search_interval.start_ms`). Null when the datafeed is stopped or when <span pulumi-lang-nodejs=\"`runningState`\" pulumi-lang-dotnet=\"`RunningState`\" pulumi-lang-go=\"`runningState`\" pulumi-lang-python=\"`running_state`\" pulumi-lang-yaml=\"`runningState`\" pulumi-lang-java=\"`runningState`\">`running_state`</span> / <span pulumi-lang-nodejs=\"`searchInterval`\" pulumi-lang-dotnet=\"`SearchInterval`\" pulumi-lang-go=\"`searchInterval`\" pulumi-lang-python=\"`search_interval`\" pulumi-lang-yaml=\"`searchInterval`\" pulumi-lang-java=\"`searchInterval`\">`search_interval`</span> is absent.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateElasticsearchConnection:ElasticsearchMlDatafeedStateElasticsearchConnection"},"type":"array"},"end":{"description":"The time that the datafeed should end collecting data. When not specified, the datafeed continues in real-time. This value is preserved verbatim in state and is passed to the Start Datafeed API; Elasticsearch may use a different effective search end, which is reported in <span pulumi-lang-nodejs=\"`effectiveSearchEnd`\" pulumi-lang-dotnet=\"`EffectiveSearchEnd`\" pulumi-lang-go=\"`effectiveSearchEnd`\" pulumi-lang-python=\"`effective_search_end`\" pulumi-lang-yaml=\"`effectiveSearchEnd`\" pulumi-lang-java=\"`effectiveSearchEnd`\">`effective_search_end`</span>. This property must be specified in RFC 3339 format.\n","type":"string"},"force":{"description":"When stopping a datafeed, use to forcefully stop it.\n","type":"boolean"},"start":{"description":"The time that the datafeed should start collecting data. When not specified, the datafeed starts in real-time. This value is preserved verbatim in state and is passed to the Start Datafeed API; Elasticsearch may use a different effective search start, which is reported in <span pulumi-lang-nodejs=\"`effectiveSearchStart`\" pulumi-lang-dotnet=\"`EffectiveSearchStart`\" pulumi-lang-go=\"`effectiveSearchStart`\" pulumi-lang-python=\"`effective_search_start`\" pulumi-lang-yaml=\"`effectiveSearchStart`\" pulumi-lang-java=\"`effectiveSearchStart`\">`effective_search_start`</span>. This property must be specified in RFC 3339 format.\n","type":"string"},"state":{"description":"The desired state for the ML datafeed. Valid values are <span pulumi-lang-nodejs=\"`started`\" pulumi-lang-dotnet=\"`Started`\" pulumi-lang-go=\"`started`\" pulumi-lang-python=\"`started`\" pulumi-lang-yaml=\"`started`\" pulumi-lang-java=\"`started`\">`started`</span> and <span pulumi-lang-nodejs=\"`stopped`\" pulumi-lang-dotnet=\"`Stopped`\" pulumi-lang-go=\"`stopped`\" pulumi-lang-python=\"`stopped`\" pulumi-lang-yaml=\"`stopped`\" pulumi-lang-java=\"`stopped`\">`stopped`</span>.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlDatafeedStateTimeouts:ElasticsearchMlDatafeedStateTimeouts"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchMlFilter:ElasticsearchMlFilter":{"description":"Manages Machine Learning filters. A filter contains a list of strings that can be referenced in the <span pulumi-lang-nodejs=\"`customRules`\" pulumi-lang-dotnet=\"`CustomRules`\" pulumi-lang-go=\"`customRules`\" pulumi-lang-python=\"`custom_rules`\" pulumi-lang-yaml=\"`customRules`\" pulumi-lang-java=\"`customRules`\">`custom_rules`</span> property of detector configuration objects. See the [ML Filter API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-filter.html) for more details.\n","inputProperties":{"description":{"description":"A description of the filter.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlFilterElasticsearchConnection:ElasticsearchMlFilterElasticsearchConnection"},"type":"array"},"filterId":{"description":"A string that uniquely identifies a filter.\n","type":"string"},"items":{"description":"The items of the filter. A wildcard `*` can be used at the beginning or the end of an item. Up to 10000 items are allowed in each filter.\n","items":{"type":"string"},"type":"array"}},"properties":{"description":{"description":"A description of the filter.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlFilterElasticsearchConnection:ElasticsearchMlFilterElasticsearchConnection"},"type":"array"},"filterId":{"description":"A string that uniquely identifies a filter.\n","type":"string"},"items":{"description":"The items of the filter. A wildcard `*` can be used at the beginning or the end of an item. Up to 10000 items are allowed in each filter.\n","items":{"type":"string"},"type":"array"}},"required":["filterId"],"requiredInputs":["filterId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlFilter resources.\n","properties":{"description":{"description":"A description of the filter.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlFilterElasticsearchConnection:ElasticsearchMlFilterElasticsearchConnection"},"type":"array"},"filterId":{"description":"A string that uniquely identifies a filter.\n","type":"string"},"items":{"description":"The items of the filter. A wildcard `*` can be used at the beginning or the end of an item. Up to 10000 items are allowed in each filter.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst forOpenExample = new elasticstack.ElasticsearchMlAnomalyDetectionJob(\"for_open_example\", {\n    jobId: \"example-ml-job-open-example\",\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});\nconst example = new elasticstack.ElasticsearchMlJobState(\"example\", {\n    jobId: forOpenExample.jobId,\n    state: \"opened\",\n    force: false,\n    jobTimeout: \"30s\",\n    timeouts: {\n        create: \"5m\",\n        update: \"5m\",\n    },\n}, {\n    dependsOn: [forOpenExample],\n});\nconst forCloseExample = new elasticstack.ElasticsearchMlAnomalyDetectionJob(\"for_close_example\", {\n    jobId: \"example-ml-job-close-example\",\n    description: \"Example anomaly detection job for force-close illustration\",\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});\nconst exampleWithOptions = new elasticstack.ElasticsearchMlJobState(\"example_with_options\", {\n    jobId: forCloseExample.jobId,\n    state: \"closed\",\n    force: true,\n    jobTimeout: \"2m\",\n    timeouts: {\n        create: \"10m\",\n        update: \"3m\",\n    },\n}, {\n    dependsOn: [forCloseExample],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nfor_open_example = elasticstack.ElasticsearchMlAnomalyDetectionJob(\"for_open_example\",\n    job_id=\"example-ml-job-open-example\",\n    description=\"Example anomaly detection job\",\n    analysis_config={\n        \"bucket_span\": \"15m\",\n        \"detectors\": [{\n            \"function\": \"count\",\n            \"detector_description\": \"Count detector\",\n        }],\n    },\n    data_description={\n        \"time_field\": \"@timestamp\",\n        \"time_format\": \"epoch_ms\",\n    })\nexample = elasticstack.ElasticsearchMlJobState(\"example\",\n    job_id=for_open_example.job_id,\n    state=\"opened\",\n    force=False,\n    job_timeout=\"30s\",\n    timeouts={\n        \"create\": \"5m\",\n        \"update\": \"5m\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[for_open_example]))\nfor_close_example = elasticstack.ElasticsearchMlAnomalyDetectionJob(\"for_close_example\",\n    job_id=\"example-ml-job-close-example\",\n    description=\"Example anomaly detection job for force-close illustration\",\n    analysis_config={\n        \"bucket_span\": \"15m\",\n        \"detectors\": [{\n            \"function\": \"count\",\n            \"detector_description\": \"Count detector\",\n        }],\n    },\n    data_description={\n        \"time_field\": \"@timestamp\",\n        \"time_format\": \"epoch_ms\",\n    })\nexample_with_options = elasticstack.ElasticsearchMlJobState(\"example_with_options\",\n    job_id=for_close_example.job_id,\n    state=\"closed\",\n    force=True,\n    job_timeout=\"2m\",\n    timeouts={\n        \"create\": \"10m\",\n        \"update\": \"3m\",\n    },\n    opts = pulumi.ResourceOptions(depends_on=[for_close_example]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var forOpenExample = new Elasticstack.ElasticsearchMlAnomalyDetectionJob(\"for_open_example\", new()\n    {\n        JobId = \"example-ml-job-open-example\",\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 = \"count\",\n                    DetectorDescription = \"Count detector\",\n                },\n            },\n        },\n        DataDescription = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs\n        {\n            TimeField = \"@timestamp\",\n            TimeFormat = \"epoch_ms\",\n        },\n    });\n\n    var example = new Elasticstack.ElasticsearchMlJobState(\"example\", new()\n    {\n        JobId = forOpenExample.JobId,\n        State = \"opened\",\n        Force = false,\n        JobTimeout = \"30s\",\n        Timeouts = new Elasticstack.Inputs.ElasticsearchMlJobStateTimeoutsArgs\n        {\n            Create = \"5m\",\n            Update = \"5m\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            forOpenExample,\n        },\n    });\n\n    var forCloseExample = new Elasticstack.ElasticsearchMlAnomalyDetectionJob(\"for_close_example\", new()\n    {\n        JobId = \"example-ml-job-close-example\",\n        Description = \"Example anomaly detection job for force-close illustration\",\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 detector\",\n                },\n            },\n        },\n        DataDescription = new Elasticstack.Inputs.ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs\n        {\n            TimeField = \"@timestamp\",\n            TimeFormat = \"epoch_ms\",\n        },\n    });\n\n    var exampleWithOptions = new Elasticstack.ElasticsearchMlJobState(\"example_with_options\", new()\n    {\n        JobId = forCloseExample.JobId,\n        State = \"closed\",\n        Force = true,\n        JobTimeout = \"2m\",\n        Timeouts = new Elasticstack.Inputs.ElasticsearchMlJobStateTimeoutsArgs\n        {\n            Create = \"10m\",\n            Update = \"3m\",\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            forCloseExample,\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\tforOpenExample, err := elasticstack.NewElasticsearchMlAnomalyDetectionJob(ctx, \"for_open_example\", &elasticstack.ElasticsearchMlAnomalyDetectionJobArgs{\n\t\t\tJobId:       pulumi.String(\"example-ml-job-open-example\"),\n\t\t\tDescription: pulumi.String(\"Example anomaly detection job\"),\n\t\t\tAnalysisConfig: &elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"15m\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t&elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs{\n\t\t\t\t\t\tFunction:            pulumi.String(\"count\"),\n\t\t\t\t\t\tDetectorDescription: pulumi.String(\"Count detector\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDescription: &elasticstack.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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchMlJobState(ctx, \"example\", &elasticstack.ElasticsearchMlJobStateArgs{\n\t\t\tJobId:      forOpenExample.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\tTimeouts: &elasticstack.ElasticsearchMlJobStateTimeoutsArgs{\n\t\t\t\tCreate: pulumi.String(\"5m\"),\n\t\t\t\tUpdate: pulumi.String(\"5m\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforOpenExample,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforCloseExample, err := elasticstack.NewElasticsearchMlAnomalyDetectionJob(ctx, \"for_close_example\", &elasticstack.ElasticsearchMlAnomalyDetectionJobArgs{\n\t\t\tJobId:       pulumi.String(\"example-ml-job-close-example\"),\n\t\t\tDescription: pulumi.String(\"Example anomaly detection job for force-close illustration\"),\n\t\t\tAnalysisConfig: &elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs{\n\t\t\t\tBucketSpan: pulumi.String(\"15m\"),\n\t\t\t\tDetectors: elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArray{\n\t\t\t\t\t&elasticstack.ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs{\n\t\t\t\t\t\tFunction:            pulumi.String(\"count\"),\n\t\t\t\t\t\tDetectorDescription: pulumi.String(\"Count detector\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDescription: &elasticstack.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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewElasticsearchMlJobState(ctx, \"example_with_options\", &elasticstack.ElasticsearchMlJobStateArgs{\n\t\t\tJobId:      forCloseExample.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\tTimeouts: &elasticstack.ElasticsearchMlJobStateTimeoutsArgs{\n\t\t\t\tCreate: pulumi.String(\"10m\"),\n\t\t\t\tUpdate: pulumi.String(\"3m\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforCloseExample,\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.ElasticsearchMlJobState;\nimport com.pulumi.elasticstack.ElasticsearchMlJobStateArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchMlJobStateTimeoutsArgs;\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 forOpenExample = new ElasticsearchMlAnomalyDetectionJob(\"forOpenExample\", ElasticsearchMlAnomalyDetectionJobArgs.builder()\n            .jobId(\"example-ml-job-open-example\")\n            .description(\"Example anomaly detection job\")\n            .analysisConfig(ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs.builder()\n                .bucketSpan(\"15m\")\n                .detectors(ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs.builder()\n                    .function(\"count\")\n                    .detectorDescription(\"Count detector\")\n                    .build())\n                .build())\n            .dataDescription(ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs.builder()\n                .timeField(\"@timestamp\")\n                .timeFormat(\"epoch_ms\")\n                .build())\n            .build());\n\n        var example = new ElasticsearchMlJobState(\"example\", ElasticsearchMlJobStateArgs.builder()\n            .jobId(forOpenExample.jobId())\n            .state(\"opened\")\n            .force(false)\n            .jobTimeout(\"30s\")\n            .timeouts(ElasticsearchMlJobStateTimeoutsArgs.builder()\n                .create(\"5m\")\n                .update(\"5m\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(forOpenExample)\n                .build());\n\n        var forCloseExample = new ElasticsearchMlAnomalyDetectionJob(\"forCloseExample\", ElasticsearchMlAnomalyDetectionJobArgs.builder()\n            .jobId(\"example-ml-job-close-example\")\n            .description(\"Example anomaly detection job for force-close illustration\")\n            .analysisConfig(ElasticsearchMlAnomalyDetectionJobAnalysisConfigArgs.builder()\n                .bucketSpan(\"15m\")\n                .detectors(ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorArgs.builder()\n                    .function(\"count\")\n                    .detectorDescription(\"Count detector\")\n                    .build())\n                .build())\n            .dataDescription(ElasticsearchMlAnomalyDetectionJobDataDescriptionArgs.builder()\n                .timeField(\"@timestamp\")\n                .timeFormat(\"epoch_ms\")\n                .build())\n            .build());\n\n        var exampleWithOptions = new ElasticsearchMlJobState(\"exampleWithOptions\", ElasticsearchMlJobStateArgs.builder()\n            .jobId(forCloseExample.jobId())\n            .state(\"closed\")\n            .force(true)\n            .jobTimeout(\"2m\")\n            .timeouts(ElasticsearchMlJobStateTimeoutsArgs.builder()\n                .create(\"10m\")\n                .update(\"3m\")\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(forCloseExample)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  forOpenExample:\n    type: elasticstack:ElasticsearchMlAnomalyDetectionJob\n    name: for_open_example\n    properties:\n      jobId: example-ml-job-open-example\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  example:\n    type: elasticstack:ElasticsearchMlJobState\n    properties:\n      jobId: ${forOpenExample.jobId}\n      state: opened\n      force: false\n      jobTimeout: 30s\n      timeouts:\n        create: 5m\n        update: 5m\n    options:\n      dependsOn:\n        - ${forOpenExample}\n  forCloseExample:\n    type: elasticstack:ElasticsearchMlAnomalyDetectionJob\n    name: for_close_example\n    properties:\n      jobId: example-ml-job-close-example\n      description: Example anomaly detection job for force-close illustration\n      analysisConfig:\n        bucketSpan: 15m\n        detectors:\n          - function: count\n            detectorDescription: Count detector\n      dataDescription:\n        timeField: '@timestamp'\n        timeFormat: epoch_ms\n  exampleWithOptions:\n    type: elasticstack:ElasticsearchMlJobState\n    name: example_with_options\n    properties:\n      jobId: ${forCloseExample.jobId}\n      state: closed\n      force: true\n      jobTimeout: 2m\n      timeouts:\n        create: 10m\n        update: 3m\n    options:\n      dependsOn:\n        - ${forCloseExample}\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateElasticsearchConnection:ElasticsearchMlJobStateElasticsearchConnection"},"type":"array"},"force":{"description":"When closing a job, use to forcefully close it. This method is quicker but can miss important clean up tasks.\n","type":"boolean"},"jobId":{"description":"Identifier for the anomaly detection job.\n","type":"string"},"jobTimeout":{"description":"Timeout for the operation. Examples: <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>, <span pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\">`5m`</span>, <span pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\">`1h`</span>. Default is <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"state":{"description":"The desired state for the ML job. Valid values are <span pulumi-lang-nodejs=\"`opened`\" pulumi-lang-dotnet=\"`Opened`\" pulumi-lang-go=\"`opened`\" pulumi-lang-python=\"`opened`\" pulumi-lang-yaml=\"`opened`\" pulumi-lang-java=\"`opened`\">`opened`</span> and <span pulumi-lang-nodejs=\"`closed`\" pulumi-lang-dotnet=\"`Closed`\" pulumi-lang-go=\"`closed`\" pulumi-lang-python=\"`closed`\" pulumi-lang-yaml=\"`closed`\" pulumi-lang-java=\"`closed`\">`closed`</span>.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateTimeouts:ElasticsearchMlJobStateTimeouts"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateElasticsearchConnection:ElasticsearchMlJobStateElasticsearchConnection"},"type":"array"},"force":{"description":"When closing a job, use to forcefully close it. This method is quicker but can miss important clean up tasks.\n","type":"boolean"},"jobId":{"description":"Identifier for the anomaly detection job.\n","type":"string"},"jobTimeout":{"description":"Timeout for the operation. Examples: <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>, <span pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\">`5m`</span>, <span pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\">`1h`</span>. Default is <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"state":{"description":"The desired state for the ML job. Valid values are <span pulumi-lang-nodejs=\"`opened`\" pulumi-lang-dotnet=\"`Opened`\" pulumi-lang-go=\"`opened`\" pulumi-lang-python=\"`opened`\" pulumi-lang-yaml=\"`opened`\" pulumi-lang-java=\"`opened`\">`opened`</span> and <span pulumi-lang-nodejs=\"`closed`\" pulumi-lang-dotnet=\"`Closed`\" pulumi-lang-go=\"`closed`\" pulumi-lang-python=\"`closed`\" pulumi-lang-yaml=\"`closed`\" pulumi-lang-java=\"`closed`\">`closed`</span>.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateTimeouts:ElasticsearchMlJobStateTimeouts"}},"required":["force","jobId","jobTimeout","state"],"requiredInputs":["jobId","state"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchMlJobState resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateElasticsearchConnection:ElasticsearchMlJobStateElasticsearchConnection"},"type":"array"},"force":{"description":"When closing a job, use to forcefully close it. This method is quicker but can miss important clean up tasks.\n","type":"boolean"},"jobId":{"description":"Identifier for the anomaly detection job.\n","type":"string"},"jobTimeout":{"description":"Timeout for the operation. Examples: <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>, <span pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\">`5m`</span>, <span pulumi-lang-nodejs=\"`1h`\" pulumi-lang-dotnet=\"`1h`\" pulumi-lang-go=\"`1h`\" pulumi-lang-python=\"`1h`\" pulumi-lang-yaml=\"`1h`\" pulumi-lang-java=\"`1h`\">`1h`</span>. Default is <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"state":{"description":"The desired state for the ML job. Valid values are <span pulumi-lang-nodejs=\"`opened`\" pulumi-lang-dotnet=\"`Opened`\" pulumi-lang-go=\"`opened`\" pulumi-lang-python=\"`opened`\" pulumi-lang-yaml=\"`opened`\" pulumi-lang-java=\"`opened`\">`opened`</span> and <span pulumi-lang-nodejs=\"`closed`\" pulumi-lang-dotnet=\"`Closed`\" pulumi-lang-go=\"`closed`\" pulumi-lang-python=\"`closed`\" pulumi-lang-yaml=\"`closed`\" pulumi-lang-java=\"`closed`\">`closed`</span>.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlJobStateTimeouts:ElasticsearchMlJobStateTimeouts"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchQueryRuleset:ElasticsearchQueryRuleset":{"description":"Manages Elasticsearch query rulesets for pinning or excluding search result documents based on contextual criteria. See the [Query Rules API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-rules-apis.html) for more details.\n\n**NOTE:** Minimum Elasticsearch version: 8.16.0. The Query Rules API is GA in 8.12, but the <span pulumi-lang-nodejs=\"`priority`\" pulumi-lang-dotnet=\"`Priority`\" pulumi-lang-go=\"`priority`\" pulumi-lang-python=\"`priority`\" pulumi-lang-yaml=\"`priority`\" pulumi-lang-java=\"`priority`\">`priority`</span> field and the <span pulumi-lang-nodejs=\"`exclude`\" pulumi-lang-dotnet=\"`Exclude`\" pulumi-lang-go=\"`exclude`\" pulumi-lang-python=\"`exclude`\" pulumi-lang-yaml=\"`exclude`\" pulumi-lang-java=\"`exclude`\">`exclude`</span> rule type exposed by this resource only stabilized in 8.16.\n\n**NOTE:** Required cluster privilege: <span pulumi-lang-nodejs=\"`manageSearchQueryRules`\" pulumi-lang-dotnet=\"`ManageSearchQueryRules`\" pulumi-lang-go=\"`manageSearchQueryRules`\" pulumi-lang-python=\"`manage_search_query_rules`\" pulumi-lang-yaml=\"`manageSearchQueryRules`\" pulumi-lang-java=\"`manageSearchQueryRules`\">`manage_search_query_rules`</span>.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myRuleset = new elasticstack.ElasticsearchQueryRuleset(\"my_ruleset\", {\n    rulesetId: \"my-search-rules\",\n    rules: [\n        {\n            ruleId: \"pin-laptops\",\n            type: \"pinned\",\n            priority: 1,\n            criterias: [{\n                type: \"exact\",\n                metadata: \"query\",\n                values: JSON.stringify([\n                    \"laptop\",\n                    \"notebook\",\n                ]),\n            }],\n            actions: {\n                ids: [\n                    \"doc-1\",\n                    \"doc-2\",\n                ],\n            },\n        },\n        {\n            ruleId: \"exclude-deprecated\",\n            type: \"exclude\",\n            criterias: [{\n                type: \"contains\",\n                metadata: \"query\",\n                values: JSON.stringify([\"deprecated\"]),\n            }],\n            actions: {\n                docs: [{\n                    _index: \"products\",\n                    _id: \"old-1\",\n                }],\n            },\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_ruleset = elasticstack.ElasticsearchQueryRuleset(\"my_ruleset\",\n    ruleset_id=\"my-search-rules\",\n    rules=[\n        {\n            \"rule_id\": \"pin-laptops\",\n            \"type\": \"pinned\",\n            \"priority\": 1,\n            \"criterias\": [{\n                \"type\": \"exact\",\n                \"metadata\": \"query\",\n                \"values\": json.dumps([\n                    \"laptop\",\n                    \"notebook\",\n                ]),\n            }],\n            \"actions\": {\n                \"ids\": [\n                    \"doc-1\",\n                    \"doc-2\",\n                ],\n            },\n        },\n        {\n            \"rule_id\": \"exclude-deprecated\",\n            \"type\": \"exclude\",\n            \"criterias\": [{\n                \"type\": \"contains\",\n                \"metadata\": \"query\",\n                \"values\": json.dumps([\"deprecated\"]),\n            }],\n            \"actions\": {\n                \"docs\": [{\n                    \"_index\": \"products\",\n                    \"_id\": \"old-1\",\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(() => \n{\n    var myRuleset = new Elasticstack.ElasticsearchQueryRuleset(\"my_ruleset\", new()\n    {\n        RulesetId = \"my-search-rules\",\n        Rules = new[]\n        {\n            new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleArgs\n            {\n                RuleId = \"pin-laptops\",\n                Type = \"pinned\",\n                Priority = 1,\n                Criterias = new[]\n                {\n                    new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleCriteriaArgs\n                    {\n                        Type = \"exact\",\n                        Metadata = \"query\",\n                        Values = JsonSerializer.Serialize(new[]\n                        {\n                            \"laptop\",\n                            \"notebook\",\n                        }),\n                    },\n                },\n                Actions = new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleActionsArgs\n                {\n                    Ids = new[]\n                    {\n                        \"doc-1\",\n                        \"doc-2\",\n                    },\n                },\n            },\n            new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleArgs\n            {\n                RuleId = \"exclude-deprecated\",\n                Type = \"exclude\",\n                Criterias = new[]\n                {\n                    new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleCriteriaArgs\n                    {\n                        Type = \"contains\",\n                        Metadata = \"query\",\n                        Values = JsonSerializer.Serialize(new[]\n                        {\n                            \"deprecated\",\n                        }),\n                    },\n                },\n                Actions = new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleActionsArgs\n                {\n                    Docs = new[]\n                    {\n                        new Elasticstack.Inputs.ElasticsearchQueryRulesetRuleActionsDocArgs\n                        {\n                            _index = \"products\",\n                            _id = \"old-1\",\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([]string{\n\t\t\t\"laptop\",\n\t\t\t\"notebook\",\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([]string{\n\t\t\t\"deprecated\",\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.NewElasticsearchQueryRuleset(ctx, \"my_ruleset\", &elasticstack.ElasticsearchQueryRulesetArgs{\n\t\t\tRulesetId: pulumi.String(\"my-search-rules\"),\n\t\t\tRules: elasticstack.ElasticsearchQueryRulesetRuleArray{\n\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleArgs{\n\t\t\t\t\tRuleId:   pulumi.String(\"pin-laptops\"),\n\t\t\t\t\tType:     pulumi.String(\"pinned\"),\n\t\t\t\t\tPriority: pulumi.Float64(1),\n\t\t\t\t\tCriterias: elasticstack.ElasticsearchQueryRulesetRuleCriteriaArray{\n\t\t\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleCriteriaArgs{\n\t\t\t\t\t\t\tType:     pulumi.String(\"exact\"),\n\t\t\t\t\t\t\tMetadata: pulumi.String(\"query\"),\n\t\t\t\t\t\t\tValues:   pulumi.String(json0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: &elasticstack.ElasticsearchQueryRulesetRuleActionsArgs{\n\t\t\t\t\t\tIds: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"doc-1\"),\n\t\t\t\t\t\t\tpulumi.String(\"doc-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleArgs{\n\t\t\t\t\tRuleId: pulumi.String(\"exclude-deprecated\"),\n\t\t\t\t\tType:   pulumi.String(\"exclude\"),\n\t\t\t\t\tCriterias: elasticstack.ElasticsearchQueryRulesetRuleCriteriaArray{\n\t\t\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleCriteriaArgs{\n\t\t\t\t\t\t\tType:     pulumi.String(\"contains\"),\n\t\t\t\t\t\t\tMetadata: pulumi.String(\"query\"),\n\t\t\t\t\t\t\tValues:   pulumi.String(json1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tActions: &elasticstack.ElasticsearchQueryRulesetRuleActionsArgs{\n\t\t\t\t\t\tDocs: elasticstack.ElasticsearchQueryRulesetRuleActionsDocArray{\n\t\t\t\t\t\t\t&elasticstack.ElasticsearchQueryRulesetRuleActionsDocArgs{\n\t\t\t\t\t\t\t\t_index: pulumi.String(\"products\"),\n\t\t\t\t\t\t\t\t_id:    pulumi.String(\"old-1\"),\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\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.ElasticsearchQueryRuleset;\nimport com.pulumi.elasticstack.ElasticsearchQueryRulesetArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchQueryRulesetRuleArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchQueryRulesetRuleActionsArgs;\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 myRuleset = new ElasticsearchQueryRuleset(\"myRuleset\", ElasticsearchQueryRulesetArgs.builder()\n            .rulesetId(\"my-search-rules\")\n            .rules(            \n                ElasticsearchQueryRulesetRuleArgs.builder()\n                    .ruleId(\"pin-laptops\")\n                    .type(\"pinned\")\n                    .priority(1.0)\n                    .criterias(ElasticsearchQueryRulesetRuleCriteriaArgs.builder()\n                        .type(\"exact\")\n                        .metadata(\"query\")\n                        .values(serializeJson(\n                            jsonArray(\n                                \"laptop\", \n                                \"notebook\"\n                            )))\n                        .build())\n                    .actions(ElasticsearchQueryRulesetRuleActionsArgs.builder()\n                        .ids(                        \n                            \"doc-1\",\n                            \"doc-2\")\n                        .build())\n                    .build(),\n                ElasticsearchQueryRulesetRuleArgs.builder()\n                    .ruleId(\"exclude-deprecated\")\n                    .type(\"exclude\")\n                    .criterias(ElasticsearchQueryRulesetRuleCriteriaArgs.builder()\n                        .type(\"contains\")\n                        .metadata(\"query\")\n                        .values(serializeJson(\n                            jsonArray(\"deprecated\")))\n                        .build())\n                    .actions(ElasticsearchQueryRulesetRuleActionsArgs.builder()\n                        .docs(ElasticsearchQueryRulesetRuleActionsDocArgs.builder()\n                            ._index(\"products\")\n                            ._id(\"old-1\")\n                            .build())\n                        .build())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myRuleset:\n    type: elasticstack:ElasticsearchQueryRuleset\n    name: my_ruleset\n    properties:\n      rulesetId: my-search-rules\n      rules:\n        - ruleId: pin-laptops\n          type: pinned\n          priority: 1\n          criterias:\n            - type: exact\n              metadata: query\n              values:\n                fn::toJSON:\n                  - laptop\n                  - notebook\n          actions:\n            ids:\n              - doc-1\n              - doc-2\n        - ruleId: exclude-deprecated\n          type: exclude\n          criterias:\n            - type: contains\n              metadata: query\n              values:\n                fn::toJSON:\n                  - deprecated\n          actions:\n            docs:\n              - _index: products\n                _id: old-1\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchQueryRuleset:ElasticsearchQueryRuleset my_ruleset <cluster_uuid>/<ruleset_id>\n```\n\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetElasticsearchConnection:ElasticsearchQueryRulesetElasticsearchConnection"},"type":"array"},"rules":{"description":"Ordered list of query rules for this ruleset.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetRule:ElasticsearchQueryRulesetRule"},"type":"array"},"rulesetId":{"description":"Unique identifier for the query ruleset.\n","type":"string"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetElasticsearchConnection:ElasticsearchQueryRulesetElasticsearchConnection"},"type":"array"},"rules":{"description":"Ordered list of query rules for this ruleset.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetRule:ElasticsearchQueryRulesetRule"},"type":"array"},"rulesetId":{"description":"Unique identifier for the query ruleset.\n","type":"string"}},"required":["rules","rulesetId"],"requiredInputs":["rules","rulesetId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchQueryRuleset resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetElasticsearchConnection:ElasticsearchQueryRulesetElasticsearchConnection"},"type":"array"},"rules":{"description":"Ordered list of query rules for this ruleset.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetRule:ElasticsearchQueryRulesetRule"},"type":"array"},"rulesetId":{"description":"Unique identifier for the query ruleset.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\n        {\n            [\"query\"] = new Dictionary<string, object?>\n            {\n                [\"match\"] = new Dictionary<string, object?>\n                {\n                    [\"message\"] = \"{{query_string}}\",\n                },\n            },\n            [\"from\"] = \"{{from}}\",\n            [\"size\"] = \"{{size}}\",\n        }),\n        Params = JsonSerializer.Serialize(new Dictionary<string, object?>\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\", &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<script id>\n```\n\n","inputProperties":{"context":{"description":"Context in which the script or search template should run.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchScriptElasticsearchConnection:ElasticsearchScriptElasticsearchConnection"},"type":"array"},"lang":{"description":"Script language. For search templates, use <span pulumi-lang-nodejs=\"`mustache`\" pulumi-lang-dotnet=\"`Mustache`\" pulumi-lang-go=\"`mustache`\" pulumi-lang-python=\"`mustache`\" pulumi-lang-yaml=\"`mustache`\" pulumi-lang-java=\"`mustache`\">`mustache`</span>.\n","type":"string"},"params":{"description":"Parameters for the script or search template.\n","type":"string"},"scriptId":{"description":"Identifier for the stored script. Must be unique within the cluster.\n","type":"string"},"source":{"description":"For scripts, a string containing the script. For search templates, an object containing the search template.\n","type":"string"}},"properties":{"context":{"description":"Context in which the script or search template should run.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchScriptElasticsearchConnection:ElasticsearchScriptElasticsearchConnection"},"type":"array"},"lang":{"description":"Script language. For search templates, use <span pulumi-lang-nodejs=\"`mustache`\" pulumi-lang-dotnet=\"`Mustache`\" pulumi-lang-go=\"`mustache`\" pulumi-lang-python=\"`mustache`\" pulumi-lang-yaml=\"`mustache`\" pulumi-lang-java=\"`mustache`\">`mustache`</span>.\n","type":"string"},"params":{"description":"Parameters for the script or search template.\n","type":"string"},"scriptId":{"description":"Identifier for the stored script. Must be unique within the cluster.\n","type":"string"},"source":{"description":"For scripts, a string containing the script. For search templates, an object containing the search template.\n","type":"string"}},"required":["lang","scriptId","source"],"requiredInputs":["lang","scriptId","source"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchScript resources.\n","properties":{"context":{"description":"Context in which the script or search template should run.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchScriptElasticsearchConnection:ElasticsearchScriptElasticsearchConnection"},"type":"array"},"lang":{"description":"Script language. For search templates, use <span pulumi-lang-nodejs=\"`mustache`\" pulumi-lang-dotnet=\"`Mustache`\" pulumi-lang-go=\"`mustache`\" pulumi-lang-python=\"`mustache`\" pulumi-lang-yaml=\"`mustache`\" pulumi-lang-java=\"`mustache`\">`mustache`</span>.\n","type":"string"},"params":{"description":"Parameters for the script or search template.\n","type":"string"},"scriptId":{"description":"Identifier for the stored script. Must be unique within the cluster.\n","type":"string"},"source":{"description":"For scripts, a string containing the script. For search templates, an object containing the search template.\n","type":"string"}},"type":"object"},"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.\n\nSee 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## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nexport = async () => {\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    };\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    }))\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(() => \n{\n    var apiKey = new Elasticstack.ElasticsearchSecurityApiKey(\"api_key\", new()\n    {\n        Name = \"My API key\",\n        RoleDescriptors = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"role-a\"] = new Dictionary<string, object?>\n            {\n                [\"cluster\"] = new[]\n                {\n                    \"all\",\n                },\n                [\"indices\"] = new[]\n                {\n                    new Dictionary<string, object?>\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<string, object?>\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<string, object?>\n        {\n            [\"role-a\"] = new Dictionary<string, object?>\n            {\n                [\"cluster\"] = new[]\n                {\n                    \"all\",\n                },\n                [\"indices\"] = new[]\n                {\n                    new Dictionary<string, object?>\n                    {\n                        [\"names\"] = new[]\n                        {\n                            \"index-a*\",\n                        },\n                        [\"privileges\"] = new[]\n                        {\n                            \"read\",\n                        },\n                    },\n                },\n                [\"restriction\"] = new Dictionary<string, object?>\n                {\n                    [\"workflows\"] = new[]\n                    {\n                        \"search_application_query\",\n                    },\n                },\n            },\n        }),\n        Expiration = \"1d\",\n        Metadata = JsonSerializer.Serialize(new Dictionary<string, object?>\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<string, object?>\n        {\n            [\"description\"] = \"Cross-cluster key for production environment\",\n            [\"environment\"] = \"production\",\n            [\"team\"] = \"platform\",\n        }),\n    });\n\n    return new Dictionary<string, object?>\n    {\n        [\"apiKey\"] = apiKey,\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\", &elasticstack.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\", &elasticstack.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\t_, err = elasticstack.NewElasticsearchSecurityApiKey(ctx, \"cross_cluster_key\", &elasticstack.ElasticsearchSecurityApiKeyArgs{\n\t\t\tName: pulumi.String(\"My Cross-Cluster API Key\"),\n\t\t\tType: pulumi.String(\"cross_cluster\"),\n\t\t\tAccess: &elasticstack.ElasticsearchSecurityApiKeyAccessArgs{\n\t\t\t\tReplications: elasticstack.ElasticsearchSecurityApiKeyAccessReplicationArray{\n\t\t\t\t\t&elasticstack.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\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    }\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```\n<!--End PulumiCodeChooser -->\n","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":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyElasticsearchConnection:ElasticsearchSecurityApiKeyElasticsearchConnection"},"type":"array"},"expiration":{"description":"Expiration time for the API key. By default, API keys never expire.\n","type":"string"},"metadata":{"description":"Arbitrary metadata that you want to associate with the API key.\n","type":"string"},"name":{"description":"Specifies the name for this API key.\n","type":"string"},"roleDescriptors":{"description":"Role descriptors for this API key.\n","type":"string"},"type":{"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":"string"}},"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":{"description":"Generated API Key.\n","secret":true,"type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyElasticsearchConnection:ElasticsearchSecurityApiKeyElasticsearchConnection"},"type":"array"},"encoded":{"description":"API key credentials which is the Base64-encoding of the UTF-8 representation of the id and<span 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 \"> api_key </span>joined by a colon (:).\n","secret":true,"type":"string"},"expiration":{"description":"Expiration time for the API key. By default, API keys never expire.\n","type":"string"},"expirationTimestamp":{"description":"Expiration time in milliseconds for the API key. By default, API keys never expire.\n","type":"number"},"keyId":{"description":"Unique id for this API key.\n","type":"string"},"metadata":{"description":"Arbitrary metadata that you want to associate with the API key.\n","type":"string"},"name":{"description":"Specifies the name for this API key.\n","type":"string"},"roleDescriptors":{"description":"Role descriptors for this API key.\n","type":"string"},"type":{"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":"string"}},"required":["apiKey","encoded","expirationTimestamp","keyId","metadata","name","roleDescriptors","type"],"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":{"description":"Generated API Key.\n","secret":true,"type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyElasticsearchConnection:ElasticsearchSecurityApiKeyElasticsearchConnection"},"type":"array"},"encoded":{"description":"API key credentials which is the Base64-encoding of the UTF-8 representation of the id and<span 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 \"> api_key </span>joined by a colon (:).\n","secret":true,"type":"string"},"expiration":{"description":"Expiration time for the API key. By default, API keys never expire.\n","type":"string"},"expirationTimestamp":{"description":"Expiration time in milliseconds for the API key. By default, API keys never expire.\n","type":"number"},"keyId":{"description":"Unique id for this API key.\n","type":"string"},"metadata":{"description":"Arbitrary metadata that you want to associate with the API key.\n","type":"string"},"name":{"description":"Specifies the name for this API key.\n","type":"string"},"roleDescriptors":{"description":"Role descriptors for this API key.\n","type":"string"},"type":{"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":"string"}},"type":"object"},"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.\nSee also: Security Roles Guide\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst dataAnalyst = new elasticstack.ElasticsearchSecurityRole(\"data_analyst\", {\n    name: \"data_analyst\",\n    clusters: [\"monitor\"],\n    indices: [{\n        names: [\"logs-*\"],\n        privileges: [\n            \"read\",\n            \"view_index_metadata\",\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndata_analyst = elasticstack.ElasticsearchSecurityRole(\"data_analyst\",\n    name=\"data_analyst\",\n    clusters=[\"monitor\"],\n    indices=[{\n        \"names\": [\"logs-*\"],\n        \"privileges\": [\n            \"read\",\n            \"view_index_metadata\",\n        ],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var dataAnalyst = new Elasticstack.ElasticsearchSecurityRole(\"data_analyst\", new()\n    {\n        Name = \"data_analyst\",\n        Clusters = new[]\n        {\n            \"monitor\",\n        },\n        Indices = new[]\n        {\n            new Elasticstack.Inputs.ElasticsearchSecurityRoleIndexArgs\n            {\n                Names = new[]\n                {\n                    \"logs-*\",\n                },\n                Privileges = new[]\n                {\n                    \"read\",\n                    \"view_index_metadata\",\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.NewElasticsearchSecurityRole(ctx, \"data_analyst\", &elasticstack.ElasticsearchSecurityRoleArgs{\n\t\t\tName: pulumi.String(\"data_analyst\"),\n\t\t\tClusters: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"monitor\"),\n\t\t\t},\n\t\t\tIndices: elasticstack.ElasticsearchSecurityRoleIndexArray{\n\t\t\t\t&elasticstack.ElasticsearchSecurityRoleIndexArgs{\n\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"logs-*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"read\"),\n\t\t\t\t\t\tpulumi.String(\"view_index_metadata\"),\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.ElasticsearchSecurityRole;\nimport com.pulumi.elasticstack.ElasticsearchSecurityRoleArgs;\nimport com.pulumi.elasticstack.inputs.ElasticsearchSecurityRoleIndexArgs;\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 dataAnalyst = new ElasticsearchSecurityRole(\"dataAnalyst\", ElasticsearchSecurityRoleArgs.builder()\n            .name(\"data_analyst\")\n            .clusters(\"monitor\")\n            .indices(ElasticsearchSecurityRoleIndexArgs.builder()\n                .names(\"logs-*\")\n                .privileges(                \n                    \"read\",\n                    \"view_index_metadata\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  dataAnalyst:\n    type: elasticstack:ElasticsearchSecurityRole\n    name: data_analyst\n    properties:\n      name: data_analyst\n      clusters:\n        - monitor\n      indices:\n        - names:\n            - logs-*\n          privileges:\n            - read\n            - view_index_metadata\n```\n<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<role name>\n```\n\n","inputProperties":{"applications":{"description":"A list of application privilege entries.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleApplication:ElasticsearchSecurityRoleApplication"},"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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleElasticsearchConnection:ElasticsearchSecurityRoleElasticsearchConnection"},"type":"array"},"global":{"description":"An object defining global privileges.\n","type":"string"},"indices":{"description":"A list of indices permissions entries.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleIndex:ElasticsearchSecurityRoleIndex"},"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%2FElasticsearchSecurityRoleRemoteIndex:ElasticsearchSecurityRoleRemoteIndex"},"type":"array"},"runAs":{"description":"A list of users that the owners of this role can impersonate.\n","items":{"type":"string"},"type":"array"}},"properties":{"applications":{"description":"A list of application privilege entries.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleApplication:ElasticsearchSecurityRoleApplication"},"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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleElasticsearchConnection:ElasticsearchSecurityRoleElasticsearchConnection"},"type":"array"},"global":{"description":"An object defining global privileges.\n","type":"string"},"indices":{"description":"A list of indices permissions entries.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleIndex:ElasticsearchSecurityRoleIndex"},"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%2FElasticsearchSecurityRoleRemoteIndex:ElasticsearchSecurityRoleRemoteIndex"},"type":"array"},"runAs":{"description":"A list of users that the owners of this role can impersonate.\n","items":{"type":"string"},"type":"array"}},"required":["metadata","name"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecurityRole resources.\n","properties":{"applications":{"description":"A list of application privilege entries.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleApplication:ElasticsearchSecurityRoleApplication"},"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"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleElasticsearchConnection:ElasticsearchSecurityRoleElasticsearchConnection"},"type":"array"},"global":{"description":"An object defining global privileges.\n","type":"string"},"indices":{"description":"A list of indices permissions entries.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleIndex:ElasticsearchSecurityRoleIndex"},"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%2FElasticsearchSecurityRoleRemoteIndex:ElasticsearchSecurityRoleRemoteIndex"},"type":"array"},"runAs":{"description":"A list of users that the owners of this role can impersonate.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\n        {\n            [\"any\"] = new[]\n            {\n                new Dictionary<string, object?>\n                {\n                    [\"field\"] = new Dictionary<string, object?>\n                    {\n                        [\"username\"] = \"esadmin\",\n                    },\n                },\n                new Dictionary<string, object?>\n                {\n                    [\"field\"] = new Dictionary<string, object?>\n                    {\n                        [\"groups\"] = \"cn=admins,dc=example,dc=com\",\n                    },\n                },\n            },\n        }),\n    });\n\n    return new Dictionary<string, object?>\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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<role mapping name>\n```\n\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleMappingElasticsearchConnection:ElasticsearchSecurityRoleMappingElasticsearchConnection"},"type":"array"},"enabled":{"description":"Mappings that have <span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span> set to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> are ignored when role mapping is performed.\n","type":"boolean"},"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"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleMappingElasticsearchConnection:ElasticsearchSecurityRoleMappingElasticsearchConnection"},"type":"array"},"enabled":{"description":"Mappings that have <span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span> set to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> are ignored when role mapping is performed.\n","type":"boolean"},"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","metadata","name","rules"],"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecurityRoleMapping resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleMappingElasticsearchConnection:ElasticsearchSecurityRoleMappingElasticsearchConnection"},"type":"array"},"enabled":{"description":"Mappings that have <span pulumi-lang-nodejs=\"`enabled`\" pulumi-lang-dotnet=\"`Enabled`\" pulumi-lang-go=\"`enabled`\" pulumi-lang-python=\"`enabled`\" pulumi-lang-yaml=\"`enabled`\" pulumi-lang-java=\"`enabled`\">`enabled`</span> set to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> are ignored when role mapping is performed.\n","type":"boolean"},"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"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchSecuritySystemUser:ElasticsearchSecuritySystemUser":{"description":"## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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&elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecuritySystemUserElasticsearchConnection:ElasticsearchSecuritySystemUserElasticsearchConnection"},"type":"array"},"enabled":{"description":"Specifies whether the user is enabled. The default value is true.\n","type":"boolean"},"password":{"description":"The user's password. Passwords must be at least 6 characters long.\n","secret":true,"type":"string"},"passwordHash":{"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,"type":"string"},"username":{"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":"string"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecuritySystemUserElasticsearchConnection:ElasticsearchSecuritySystemUserElasticsearchConnection"},"type":"array"},"enabled":{"description":"Specifies whether the user is enabled. The default value is true.\n","type":"boolean"},"password":{"description":"The user's password. Passwords must be at least 6 characters long.\n","secret":true,"type":"string"},"passwordHash":{"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,"type":"string"},"username":{"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":"string"}},"required":["enabled","username"],"requiredInputs":["username"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecuritySystemUser resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecuritySystemUserElasticsearchConnection:ElasticsearchSecuritySystemUserElasticsearchConnection"},"type":"array"},"enabled":{"description":"Specifies whether the user is enabled. The default value is true.\n","type":"boolean"},"password":{"description":"The user's password. Passwords must be at least 6 characters long.\n","secret":true,"type":"string"},"passwordHash":{"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,"type":"string"},"username":{"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":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\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<string, object?>\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\", &elasticstack.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&elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\n```sh\n$ pulumi import elasticstack:index/elasticsearchSecurityUser:ElasticsearchSecurityUser user <cluster_uuid>/<user-name>\n```\n\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityUserElasticsearchConnection:ElasticsearchSecurityUserElasticsearchConnection"},"type":"array"},"email":{"description":"The email of the user.","type":"string"},"enabled":{"description":"Specifies whether the user is enabled. The default value is true.","type":"boolean"},"fullName":{"description":"The full name of the user.","type":"string"},"metadata":{"description":"Arbitrary metadata that you want to associate with the user.","type":"string"},"password":{"description":"The user's password. Passwords must be at least 6 characters long. Note: Consider using <span 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`\">`password_wo`</span> for better security with ephemeral resources.","secret":true,"type":"string"},"passwordHash":{"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,"type":"string"},"passwordWo":{"secret":true,"type":"string"},"passwordWoVersion":{"description":"Version identifier for the write-only password. This field is used to trigger updates when the password changes. Required when <span 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`\">`password_wo`</span> is set. Typically, you would use a hash of the password or a version identifier from your secret management system.","type":"string"},"roles":{"description":"A set of roles the user has. The roles determine the user's access permissions.\n","items":{"type":"string"},"type":"array"},"username":{"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":"string"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityUserElasticsearchConnection:ElasticsearchSecurityUserElasticsearchConnection"},"type":"array"},"email":{"description":"The email of the user.","type":"string"},"enabled":{"description":"Specifies whether the user is enabled. The default value is true.","type":"boolean"},"fullName":{"description":"The full name of the user.","type":"string"},"metadata":{"description":"Arbitrary metadata that you want to associate with the user.","type":"string"},"password":{"description":"The user's password. Passwords must be at least 6 characters long. Note: Consider using <span 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`\">`password_wo`</span> for better security with ephemeral resources.","secret":true,"type":"string"},"passwordHash":{"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,"type":"string"},"passwordWo":{"secret":true,"type":"string"},"passwordWoVersion":{"description":"Version identifier for the write-only password. This field is used to trigger updates when the password changes. Required when <span 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`\">`password_wo`</span> is set. Typically, you would use a hash of the password or a version identifier from your secret management system.","type":"string"},"roles":{"description":"A set of roles the user has. The roles determine the user's access permissions.\n","items":{"type":"string"},"type":"array"},"username":{"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":"string"}},"required":["email","enabled","fullName","metadata","roles","username"],"requiredInputs":["roles","username"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSecurityUser resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityUserElasticsearchConnection:ElasticsearchSecurityUserElasticsearchConnection"},"type":"array"},"email":{"description":"The email of the user.","type":"string"},"enabled":{"description":"Specifies whether the user is enabled. The default value is true.","type":"boolean"},"fullName":{"description":"The full name of the user.","type":"string"},"metadata":{"description":"Arbitrary metadata that you want to associate with the user.","type":"string"},"password":{"description":"The user's password. Passwords must be at least 6 characters long. Note: Consider using <span 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`\">`password_wo`</span> for better security with ephemeral resources.","secret":true,"type":"string"},"passwordHash":{"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,"type":"string"},"passwordWo":{"secret":true,"type":"string"},"passwordWoVersion":{"description":"Version identifier for the write-only password. This field is used to trigger updates when the password changes. Required when <span 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`\">`password_wo`</span> is set. Typically, you would use a hash of the password or a version identifier from your secret management system.","type":"string"},"roles":{"description":"A set of roles the user has. The roles determine the user's access permissions.\n","items":{"type":"string"},"type":"array"},"username":{"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":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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: \"<daily-snap-{now/d}>\",\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=\"<daily-snap-{now/d}>\",\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(() => \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 = \"<daily-snap-{now/d}>\",\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\", &elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_snap_repo\"),\n\t\t\tFs: &elasticstack.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\", &elasticstack.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(\"<daily-snap-{now/d}>\"),\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(\"<daily-snap-{now/d}>\")\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: <daily-snap-{now/d}>\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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<slm policy name>\n```\n\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotLifecycleElasticsearchConnection:ElasticsearchSnapshotLifecycleElasticsearchConnection"},"type":"array"},"expandWildcards":{"description":"Determines how wildcard patterns in the <span pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\">`indices`</span> parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n","type":"string"},"expireAfter":{"description":"Time period after which a snapshot is considered expired and eligible for deletion.\n","type":"string"},"featureStates":{"description":"Feature states to include in the snapshot.\n","items":{"type":"string"},"type":"array"},"ignoreUnavailable":{"description":"If <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, the snapshot fails if any data stream or index in indices is missing or closed. If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the snapshot ignores missing or closed data streams and indices.\n","type":"boolean"},"includeGlobalState":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, include the cluster state in the snapshot.\n","type":"boolean"},"indices":{"description":"List of data streams and indices to include in the snapshot.\n","items":{"type":"string"},"type":"array"},"maxCount":{"description":"Maximum number of snapshots to retain, even if the snapshots have not yet expired.\n","type":"number"},"metadata":{"description":"Attaches arbitrary metadata to the snapshot.\n","type":"string"},"minCount":{"description":"Minimum number of snapshots to retain, even if the snapshots have expired.\n","type":"number"},"name":{"description":"ID for the snapshot lifecycle policy you want to create or update.\n","type":"string"},"partial":{"description":"If <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, the entire snapshot will fail if one or more indices included in the snapshot do not have all primary shards available.\n","type":"boolean"},"repository":{"description":"Repository used to store snapshots created by this policy.\n","type":"string"},"schedule":{"description":"Periodic or absolute schedule at which the policy creates snapshots.\n","type":"string"},"snapshotName":{"description":"Name automatically assigned to each snapshot created by the policy.\n","type":"string"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotLifecycleElasticsearchConnection:ElasticsearchSnapshotLifecycleElasticsearchConnection"},"type":"array"},"expandWildcards":{"description":"Determines how wildcard patterns in the <span pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\">`indices`</span> parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n","type":"string"},"expireAfter":{"description":"Time period after which a snapshot is considered expired and eligible for deletion.\n","type":"string"},"featureStates":{"description":"Feature states to include in the snapshot.\n","items":{"type":"string"},"type":"array"},"ignoreUnavailable":{"description":"If <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, the snapshot fails if any data stream or index in indices is missing or closed. If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the snapshot ignores missing or closed data streams and indices.\n","type":"boolean"},"includeGlobalState":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, include the cluster state in the snapshot.\n","type":"boolean"},"indices":{"description":"List of data streams and indices to include in the snapshot.\n","items":{"type":"string"},"type":"array"},"maxCount":{"description":"Maximum number of snapshots to retain, even if the snapshots have not yet expired.\n","type":"number"},"metadata":{"description":"Attaches arbitrary metadata to the snapshot.\n","type":"string"},"minCount":{"description":"Minimum number of snapshots to retain, even if the snapshots have expired.\n","type":"number"},"name":{"description":"ID for the snapshot lifecycle policy you want to create or update.\n","type":"string"},"partial":{"description":"If <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, the entire snapshot will fail if one or more indices included in the snapshot do not have all primary shards available.\n","type":"boolean"},"repository":{"description":"Repository used to store snapshots created by this policy.\n","type":"string"},"schedule":{"description":"Periodic or absolute schedule at which the policy creates snapshots.\n","type":"string"},"snapshotName":{"description":"Name automatically assigned to each snapshot created by the policy.\n","type":"string"}},"required":["expandWildcards","expireAfter","featureStates","ignoreUnavailable","includeGlobalState","indices","maxCount","metadata","minCount","name","partial","repository","schedule","snapshotName"],"requiredInputs":["repository","schedule"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSnapshotLifecycle resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotLifecycleElasticsearchConnection:ElasticsearchSnapshotLifecycleElasticsearchConnection"},"type":"array"},"expandWildcards":{"description":"Determines how wildcard patterns in the <span pulumi-lang-nodejs=\"`indices`\" pulumi-lang-dotnet=\"`Indices`\" pulumi-lang-go=\"`indices`\" pulumi-lang-python=\"`indices`\" pulumi-lang-yaml=\"`indices`\" pulumi-lang-java=\"`indices`\">`indices`</span> parameter match data streams and indices. Supports comma-separated values, such as `closed,hidden`.\n","type":"string"},"expireAfter":{"description":"Time period after which a snapshot is considered expired and eligible for deletion.\n","type":"string"},"featureStates":{"description":"Feature states to include in the snapshot.\n","items":{"type":"string"},"type":"array"},"ignoreUnavailable":{"description":"If <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, the snapshot fails if any data stream or index in indices is missing or closed. If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the snapshot ignores missing or closed data streams and indices.\n","type":"boolean"},"includeGlobalState":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, include the cluster state in the snapshot.\n","type":"boolean"},"indices":{"description":"List of data streams and indices to include in the snapshot.\n","items":{"type":"string"},"type":"array"},"maxCount":{"description":"Maximum number of snapshots to retain, even if the snapshots have not yet expired.\n","type":"number"},"metadata":{"description":"Attaches arbitrary metadata to the snapshot.\n","type":"string"},"minCount":{"description":"Minimum number of snapshots to retain, even if the snapshots have expired.\n","type":"number"},"name":{"description":"ID for the snapshot lifecycle policy you want to create or update.\n","type":"string"},"partial":{"description":"If <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, the entire snapshot will fail if one or more indices included in the snapshot do not have all primary shards available.\n","type":"boolean"},"repository":{"description":"Repository used to store snapshots created by this policy.\n","type":"string"},"schedule":{"description":"Periodic or absolute schedule at which the policy creates snapshots.\n","type":"string"},"snapshotName":{"description":"Name automatically assigned to each snapshot created by the policy.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_url_repo\"),\n\t\t\tUrl: &elasticstack.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\", &elasticstack.ElasticsearchSnapshotRepositoryArgs{\n\t\t\tName: pulumi.String(\"my_fs_repo\"),\n\t\t\tFs: &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<repository name>\n```\n\n","inputProperties":{"azure":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryAzure:ElasticsearchSnapshotRepositoryAzure","description":"Azure repository. Stores snapshots in Microsoft Azure Blob Storage.\n"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryElasticsearchConnection:ElasticsearchSnapshotRepositoryElasticsearchConnection"},"type":"array"},"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":"Google Cloud Storage repository. Stores snapshots in a Google Cloud Storage bucket.\n"},"hdfs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryHdfs:ElasticsearchSnapshotRepositoryHdfs","description":"HDFS repository. Stores snapshots in Hadoop Distributed File System.\n"},"name":{"description":"Name of the snapshot repository to register or update.\n","type":"string"},"s3":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryS3:ElasticsearchSnapshotRepositoryS3","description":"S3 repository. Stores snapshots in an Amazon S3 bucket.\n"},"url":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryUrl:ElasticsearchSnapshotRepositoryUrl","description":"URL repository. Provides read-only access to a shared filesystem repository.\n"},"verify":{"description":"If true, the request verifies the repository is functional on all master and data nodes in the cluster.\n","type":"boolean"}},"properties":{"azure":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryAzure:ElasticsearchSnapshotRepositoryAzure","description":"Azure repository. Stores snapshots in Microsoft Azure Blob Storage.\n"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryElasticsearchConnection:ElasticsearchSnapshotRepositoryElasticsearchConnection"},"type":"array"},"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":"Google Cloud Storage repository. Stores snapshots in a Google Cloud Storage bucket.\n"},"hdfs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryHdfs:ElasticsearchSnapshotRepositoryHdfs","description":"HDFS repository. Stores snapshots in Hadoop Distributed File System.\n"},"name":{"description":"Name of the snapshot repository to register or update.\n","type":"string"},"s3":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryS3:ElasticsearchSnapshotRepositoryS3","description":"S3 repository. Stores snapshots in an Amazon S3 bucket.\n"},"url":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryUrl:ElasticsearchSnapshotRepositoryUrl","description":"URL repository. Provides read-only access to a shared filesystem repository.\n"},"verify":{"description":"If true, the request verifies the repository is functional on all master and data nodes in the cluster.\n","type":"boolean"}},"required":["name","verify"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSnapshotRepository resources.\n","properties":{"azure":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryAzure:ElasticsearchSnapshotRepositoryAzure","description":"Azure repository. Stores snapshots in Microsoft Azure Blob Storage.\n"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryElasticsearchConnection:ElasticsearchSnapshotRepositoryElasticsearchConnection"},"type":"array"},"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":"Google Cloud Storage repository. Stores snapshots in a Google Cloud Storage bucket.\n"},"hdfs":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryHdfs:ElasticsearchSnapshotRepositoryHdfs","description":"HDFS repository. Stores snapshots in Hadoop Distributed File System.\n"},"name":{"description":"Name of the snapshot repository to register or update.\n","type":"string"},"s3":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryS3:ElasticsearchSnapshotRepositoryS3","description":"S3 repository. Stores snapshots in an Amazon S3 bucket.\n"},"url":{"$ref":"#/types/elasticstack:index%2FElasticsearchSnapshotRepositoryUrl:ElasticsearchSnapshotRepositoryUrl","description":"URL repository. Provides read-only access to a shared filesystem repository.\n"},"verify":{"description":"If true, the request verifies the repository is functional on all master and data nodes in the cluster.\n","type":"boolean"}},"type":"object"},"type":"object"},"elasticstack:index/elasticsearchSynonymSet:ElasticsearchSynonymSet":{"description":"Manages an Elasticsearch synonym set. See the [synonym set API documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/synonyms-apis.html) for more details.\n","inputProperties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSynonymSetElasticsearchConnection:ElasticsearchSynonymSetElasticsearchConnection"},"type":"array"},"synonymSetId":{"description":"The name of the synonym set. Must be unique within the Elasticsearch cluster.\n","type":"string"},"synonymsSets":{"description":"The list of synonym rules for this synonym set.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSynonymSetSynonymsSet:ElasticsearchSynonymSetSynonymsSet"},"type":"array"}},"properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSynonymSetElasticsearchConnection:ElasticsearchSynonymSetElasticsearchConnection"},"type":"array"},"synonymSetId":{"description":"The name of the synonym set. Must be unique within the Elasticsearch cluster.\n","type":"string"},"synonymsSets":{"description":"The list of synonym rules for this synonym set.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSynonymSetSynonymsSet:ElasticsearchSynonymSetSynonymsSet"},"type":"array"}},"required":["synonymSetId","synonymsSets"],"requiredInputs":["synonymSetId","synonymsSets"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchSynonymSet resources.\n","properties":{"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSynonymSetElasticsearchConnection:ElasticsearchSynonymSetElasticsearchConnection"},"type":"array"},"synonymSetId":{"description":"The name of the synonym set. Must be unique within the Elasticsearch cluster.\n","type":"string"},"synonymsSets":{"description":"The list of synonym rules for this synonym set.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSynonymSetSynonymsSet:ElasticsearchSynonymSetSynonymsSet"},"type":"array"}},"type":"object"},"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<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\n        {\n            [\"group_by\"] = new Dictionary<string, object?>\n            {\n                [\"customer_id\"] = new Dictionary<string, object?>\n                {\n                    [\"terms\"] = new Dictionary<string, object?>\n                    {\n                        [\"field\"] = \"customer_id\",\n                        [\"missing_bucket\"] = true,\n                    },\n                },\n            },\n            [\"aggregations\"] = new Dictionary<string, object?>\n            {\n                [\"max_price\"] = new Dictionary<string, object?>\n                {\n                    [\"max\"] = new Dictionary<string, object?>\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\", &elasticstack.ElasticsearchTransformArgs{\n\t\t\tName:        pulumi.String(\"transform-pivot\"),\n\t\t\tDescription: pulumi.String(\"A meaningful description\"),\n\t\t\tSource: &elasticstack.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: &elasticstack.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&elasticstack.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&elasticstack.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: &elasticstack.ElasticsearchTransformRetentionPolicyArgs{\n\t\t\t\tTime: &elasticstack.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: &elasticstack.ElasticsearchTransformSyncArgs{\n\t\t\t\tTime: &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<transform_name>\n```\n\n","inputProperties":{"alignCheckpoints":{"description":"Specifies whether the transform checkpoint ranges should be optimized for performance.\n","type":"boolean"},"datesAsEpochMillis":{"description":"Defines if dates in the output should be written as ISO formatted string (default) or as millis since epoch.\n","type":"boolean"},"deduceMappings":{"description":"Specifies whether the transform should deduce the destination index mappings from the transform config.\n","type":"boolean"},"deferValidation":{"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 <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>\n","type":"boolean"},"description":{"description":"Free text description of the transform.\n","type":"string"},"destination":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformDestination:ElasticsearchTransformDestination","description":"The destination for the transform.\n"},"docsPerSecond":{"description":"Specifies a limit on the number of input documents per second. Default (unset) value disables throttling.\n","type":"number"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformElasticsearchConnection:ElasticsearchTransformElasticsearchConnection"},"type":"array"},"enabled":{"description":"Controls whether the transform should be started or stopped. Default is <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> (stopped).\n","type":"boolean"},"frequency":{"description":"The interval between checks for changes in the source indices when the transform is running continuously. Defaults to <span pulumi-lang-nodejs=\"`1m`\" pulumi-lang-dotnet=\"`1m`\" pulumi-lang-go=\"`1m`\" pulumi-lang-python=\"`1m`\" pulumi-lang-yaml=\"`1m`\" pulumi-lang-java=\"`1m`\">`1m`</span>.\n","type":"string"},"latest":{"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","type":"string"},"maxPageSearchSize":{"description":"Defines the initial page size to use for the composite aggregation for each checkpoint. Default is 500.\n","type":"number"},"metadata":{"description":"Defines optional transform metadata.\n","type":"string"},"name":{"description":"Name of the transform you wish to create.\n","type":"string"},"numFailureRetries":{"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","type":"number"},"pivot":{"description":"The pivot method transforms the data by aggregating and grouping it. JSON definition expected. Either 'pivot' or 'latest' must be present.\n","type":"string"},"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":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"unattended":{"description":"In unattended mode, the transform retries indefinitely in case of an error which means the transform never fails.\n","type":"boolean"}},"properties":{"alignCheckpoints":{"description":"Specifies whether the transform checkpoint ranges should be optimized for performance.\n","type":"boolean"},"datesAsEpochMillis":{"description":"Defines if dates in the output should be written as ISO formatted string (default) or as millis since epoch.\n","type":"boolean"},"deduceMappings":{"description":"Specifies whether the transform should deduce the destination index mappings from the transform config.\n","type":"boolean"},"deferValidation":{"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 <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>\n","type":"boolean"},"description":{"description":"Free text description of the transform.\n","type":"string"},"destination":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformDestination:ElasticsearchTransformDestination","description":"The destination for the transform.\n"},"docsPerSecond":{"description":"Specifies a limit on the number of input documents per second. Default (unset) value disables throttling.\n","type":"number"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformElasticsearchConnection:ElasticsearchTransformElasticsearchConnection"},"type":"array"},"enabled":{"description":"Controls whether the transform should be started or stopped. Default is <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> (stopped).\n","type":"boolean"},"frequency":{"description":"The interval between checks for changes in the source indices when the transform is running continuously. Defaults to <span pulumi-lang-nodejs=\"`1m`\" pulumi-lang-dotnet=\"`1m`\" pulumi-lang-go=\"`1m`\" pulumi-lang-python=\"`1m`\" pulumi-lang-yaml=\"`1m`\" pulumi-lang-java=\"`1m`\">`1m`</span>.\n","type":"string"},"latest":{"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","type":"string"},"maxPageSearchSize":{"description":"Defines the initial page size to use for the composite aggregation for each checkpoint. Default is 500.\n","type":"number"},"metadata":{"description":"Defines optional transform metadata.\n","type":"string"},"name":{"description":"Name of the transform you wish to create.\n","type":"string"},"numFailureRetries":{"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","type":"number"},"pivot":{"description":"The pivot method transforms the data by aggregating and grouping it. JSON definition expected. Either 'pivot' or 'latest' must be present.\n","type":"string"},"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":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"unattended":{"description":"In unattended mode, the transform retries indefinitely in case of an error which means the transform never fails.\n","type":"boolean"}},"required":["deferValidation","enabled","frequency","name","timeout"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchTransform resources.\n","properties":{"alignCheckpoints":{"description":"Specifies whether the transform checkpoint ranges should be optimized for performance.\n","type":"boolean"},"datesAsEpochMillis":{"description":"Defines if dates in the output should be written as ISO formatted string (default) or as millis since epoch.\n","type":"boolean"},"deduceMappings":{"description":"Specifies whether the transform should deduce the destination index mappings from the transform config.\n","type":"boolean"},"deferValidation":{"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 <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>\n","type":"boolean"},"description":{"description":"Free text description of the transform.\n","type":"string"},"destination":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformDestination:ElasticsearchTransformDestination","description":"The destination for the transform.\n"},"docsPerSecond":{"description":"Specifies a limit on the number of input documents per second. Default (unset) value disables throttling.\n","type":"number"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformElasticsearchConnection:ElasticsearchTransformElasticsearchConnection"},"type":"array"},"enabled":{"description":"Controls whether the transform should be started or stopped. Default is <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> (stopped).\n","type":"boolean"},"frequency":{"description":"The interval between checks for changes in the source indices when the transform is running continuously. Defaults to <span pulumi-lang-nodejs=\"`1m`\" pulumi-lang-dotnet=\"`1m`\" pulumi-lang-go=\"`1m`\" pulumi-lang-python=\"`1m`\" pulumi-lang-yaml=\"`1m`\" pulumi-lang-java=\"`1m`\">`1m`</span>.\n","type":"string"},"latest":{"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","type":"string"},"maxPageSearchSize":{"description":"Defines the initial page size to use for the composite aggregation for each checkpoint. Default is 500.\n","type":"number"},"metadata":{"description":"Defines optional transform metadata.\n","type":"string"},"name":{"description":"Name of the transform you wish to create.\n","type":"string"},"numFailureRetries":{"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","type":"number"},"pivot":{"description":"The pivot method transforms the data by aggregating and grouping it. JSON definition expected. Either 'pivot' or 'latest' must be present.\n","type":"string"},"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":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"unattended":{"description":"In unattended mode, the transform retries indefinitely in case of an error which means the transform never fails.\n","type":"boolean"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \n{\n    var example = new Elasticstack.ElasticsearchWatch(\"example\", new()\n    {\n        WatchId = \"test_watch\",\n        Active = true,\n        Trigger = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"schedule\"] = new Dictionary<string, object?>\n            {\n                [\"cron\"] = \"0 0/1 * * * ?\",\n            },\n        }),\n        Input = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"none\"] = new Dictionary<string, object?>\n            {\n            },\n        }),\n        Condition = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"always\"] = new Dictionary<string, object?>\n            {\n            },\n        }),\n        Actions = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n        }),\n        Metadata = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"example_key\"] = \"example_value\",\n        }),\n        Transform = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"script\"] = \"return [ 'time' : ctx.trigger.scheduled_time ]\",\n        }),\n        ThrottlePeriodInMillis = 10000,\n    });\n\n    return new Dictionary<string, object?>\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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<watch ID>\n```\n\n","inputProperties":{"actions":{"description":"The list of actions that will be run if the condition matches.\n","type":"string"},"active":{"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","type":"boolean"},"condition":{"description":"The condition that defines if the actions should be run.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchWatchElasticsearchConnection:ElasticsearchWatchElasticsearchConnection"},"type":"array"},"input":{"description":"The input that defines the input that loads the data for the watch.\n","type":"string"},"metadata":{"description":"Metadata json that will be copied into the history entries.\n","type":"string"},"throttlePeriodInMillis":{"description":"Minimum time in milliseconds between actions being run. Defaults to 5000.\n","type":"number"},"transform":{"description":"Processes the watch payload to prepare it for the watch actions.\n","type":"string"},"trigger":{"description":"The trigger that defines when the watch should run.\n","type":"string"},"watchId":{"description":"Identifier for the watch.\n","type":"string"}},"properties":{"actions":{"description":"The list of actions that will be run if the condition matches.\n","type":"string"},"active":{"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","type":"boolean"},"condition":{"description":"The condition that defines if the actions should be run.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchWatchElasticsearchConnection:ElasticsearchWatchElasticsearchConnection"},"type":"array"},"input":{"description":"The input that defines the input that loads the data for the watch.\n","type":"string"},"metadata":{"description":"Metadata json that will be copied into the history entries.\n","type":"string"},"throttlePeriodInMillis":{"description":"Minimum time in milliseconds between actions being run. Defaults to 5000.\n","type":"number"},"transform":{"description":"Processes the watch payload to prepare it for the watch actions.\n","type":"string"},"trigger":{"description":"The trigger that defines when the watch should run.\n","type":"string"},"watchId":{"description":"Identifier for the watch.\n","type":"string"}},"required":["actions","active","condition","input","metadata","throttlePeriodInMillis","trigger","watchId"],"requiredInputs":["trigger","watchId"],"stateInputs":{"description":"Input properties used for looking up and filtering ElasticsearchWatch resources.\n","properties":{"actions":{"description":"The list of actions that will be run if the condition matches.\n","type":"string"},"active":{"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","type":"boolean"},"condition":{"description":"The condition that defines if the actions should be run.\n","type":"string"},"elasticsearchConnections":{"description":"Elasticsearch connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchWatchElasticsearchConnection:ElasticsearchWatchElasticsearchConnection"},"type":"array"},"input":{"description":"The input that defines the input that loads the data for the watch.\n","type":"string"},"metadata":{"description":"Metadata json that will be copied into the history entries.\n","type":"string"},"throttlePeriodInMillis":{"description":"Minimum time in milliseconds between actions being run. Defaults to 5000.\n","type":"number"},"transform":{"description":"Processes the watch payload to prepare it for the watch actions.\n","type":"string"},"trigger":{"description":"The trigger that defines when the watch should run.\n","type":"string"},"watchId":{"description":"Identifier for the watch.\n","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/fleetAgentDownloadSource:FleetAgentDownloadSource":{"description":"Creates a new Fleet Agent Binary Download Source.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.FleetAgentDownloadSource(\"example\", {\n    name: \"Agent Download Source example\",\n    host: \"https://artifacts.elastic.co/downloads/elastic-agent\",\n    \"default\": false,\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.FleetAgentDownloadSource(\"example\",\n    name=\"Agent Download Source example\",\n    host=\"https://artifacts.elastic.co/downloads/elastic-agent\",\n    default=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var example = new Elasticstack.FleetAgentDownloadSource(\"example\", new()\n    {\n        Name = \"Agent Download Source example\",\n        Host = \"https://artifacts.elastic.co/downloads/elastic-agent\",\n        Default = 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\t_, err := elasticstack.NewFleetAgentDownloadSource(ctx, \"example\", &elasticstack.FleetAgentDownloadSourceArgs{\n\t\t\tName:    pulumi.String(\"Agent Download Source example\"),\n\t\t\tHost:    pulumi.String(\"https://artifacts.elastic.co/downloads/elastic-agent\"),\n\t\t\tDefault: 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.FleetAgentDownloadSource;\nimport com.pulumi.elasticstack.FleetAgentDownloadSourceArgs;\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 FleetAgentDownloadSource(\"example\", FleetAgentDownloadSourceArgs.builder()\n            .name(\"Agent Download Source example\")\n            .host(\"https://artifacts.elastic.co/downloads/elastic-agent\")\n            .default_(false)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:FleetAgentDownloadSource\n    properties:\n      name: Agent Download Source example\n      host: https://artifacts.elastic.co/downloads/elastic-agent\n      default: false\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"default":{"description":"Set this download source as the default for agents.\n","type":"boolean"},"host":{"description":"The base URL from which Elastic Agents will download binaries.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetAgentDownloadSourceKibanaConnection:FleetAgentDownloadSourceKibanaConnection"},"type":"array"},"name":{"description":"The name of the Fleet agent download source.\n","type":"string"},"proxyId":{"description":"The ID of the proxy to use for this download source.\n","type":"string"},"sourceId":{"description":"Unique identifier of the Fleet agent download source.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this download source is available. When set, the download source will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n","items":{"type":"string"},"type":"array"}},"properties":{"default":{"description":"Set this download source as the default for agents.\n","type":"boolean"},"host":{"description":"The base URL from which Elastic Agents will download binaries.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetAgentDownloadSourceKibanaConnection:FleetAgentDownloadSourceKibanaConnection"},"type":"array"},"name":{"description":"The name of the Fleet agent download source.\n","type":"string"},"proxyId":{"description":"The ID of the proxy to use for this download source.\n","type":"string"},"sourceId":{"description":"Unique identifier of the Fleet agent download source.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this download source is available. When set, the download source will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n","items":{"type":"string"},"type":"array"}},"required":["default","host","name","sourceId","spaceIds"],"requiredInputs":["host"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetAgentDownloadSource resources.\n","properties":{"default":{"description":"Set this download source as the default for agents.\n","type":"boolean"},"host":{"description":"The base URL from which Elastic Agents will download binaries.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetAgentDownloadSourceKibanaConnection:FleetAgentDownloadSourceKibanaConnection"},"type":"array"},"name":{"description":"The name of the Fleet agent download source.\n","type":"string"},"proxyId":{"description":"The ID of the proxy to use for this download source.\n","type":"string"},"sourceId":{"description":"Unique identifier of the Fleet agent download source.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this download source is available. When set, the download source will be created and managed within the specified space. Note: The order of space IDs does not matter as this is a set.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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\": &elasticstack.FleetAgentPolicyGlobalDataTagsArgs{\n\t\t\t\t\tStringValue: pulumi.String(\"tag_value\"),\n\t\t\t\t},\n\t\t\t\t\"second_tag\": &elasticstack.FleetAgentPolicyGlobalDataTagsArgs{\n\t\t\t\t\tNumberValue: pulumi.Float64(1.2),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedMonitoringOptions: &elasticstack.FleetAgentPolicyAdvancedMonitoringOptionsArgs{\n\t\t\t\tHttpMonitoringEndpoint: &elasticstack.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: &elasticstack.FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsArgs{\n\t\t\t\t\tRateLimits: &elasticstack.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: &elasticstack.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 # is_protected   = true  # optional: agent tamper protection (requires Elastic Stack 8.10.0+)\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<!--End PulumiCodeChooser -->\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 <space_id>/<fleet_agent_policy_id>\n```\n\n","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":{"description":"The identifier for the data output.\n","type":"string"},"description":{"description":"The description of the agent policy.\n","type":"string"},"downloadSourceId":{"description":"The identifier for the Elastic Agent binary download server.\n","type":"string"},"fleetServerHostId":{"description":"The identifier for the Fleet server host.\n","type":"string"},"globalDataTags":{"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","type":"object"},"hostNameFormat":{"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","type":"string"},"inactivityTimeout":{"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","type":"string"},"isProtected":{"description":"Enable tamper protection for this agent policy (Fleet API <span pulumi-lang-nodejs=\"`isProtected`\" pulumi-lang-dotnet=\"`IsProtected`\" pulumi-lang-go=\"`isProtected`\" pulumi-lang-python=\"`is_protected`\" pulumi-lang-yaml=\"`isProtected`\" pulumi-lang-java=\"`isProtected`\">`is_protected`</span>). When true, agents use uninstall tokens. Requires Elastic Stack 8.10.0 or later.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyKibanaConnection:FleetAgentPolicyKibanaConnection"},"type":"array"},"monitorLogs":{"description":"Enable collection of agent logs.\n","type":"boolean"},"monitorMetrics":{"description":"Enable collection of agent metrics.\n","type":"boolean"},"monitoringOutputId":{"description":"The identifier for monitoring output.\n","type":"string"},"name":{"description":"The name of the agent policy.\n","type":"string"},"namespace":{"description":"The namespace of the agent policy.\n","type":"string"},"policyId":{"description":"Unique identifier of the agent policy.\n","type":"string"},"requiredVersions":{"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","type":"object"},"skipDestroy":{"type":"boolean"},"spaceIds":{"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","items":{"type":"string"},"type":"array"},"supportsAgentless":{"description":"Set to true to enable agentless data collection.\n","type":"boolean"},"sysMonitoring":{"description":"Enable collection of system logs and metrics.\n","type":"boolean"},"unenrollmentTimeout":{"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":"string"}},"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":{"description":"The identifier for the data output.\n","type":"string"},"description":{"description":"The description of the agent policy.\n","type":"string"},"downloadSourceId":{"description":"The identifier for the Elastic Agent binary download server.\n","type":"string"},"fleetServerHostId":{"description":"The identifier for the Fleet server host.\n","type":"string"},"globalDataTags":{"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","type":"object"},"hostNameFormat":{"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","type":"string"},"inactivityTimeout":{"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","type":"string"},"isProtected":{"description":"Enable tamper protection for this agent policy (Fleet API <span pulumi-lang-nodejs=\"`isProtected`\" pulumi-lang-dotnet=\"`IsProtected`\" pulumi-lang-go=\"`isProtected`\" pulumi-lang-python=\"`is_protected`\" pulumi-lang-yaml=\"`isProtected`\" pulumi-lang-java=\"`isProtected`\">`is_protected`</span>). When true, agents use uninstall tokens. Requires Elastic Stack 8.10.0 or later.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyKibanaConnection:FleetAgentPolicyKibanaConnection"},"type":"array"},"monitorLogs":{"description":"Enable collection of agent logs.\n","type":"boolean"},"monitorMetrics":{"description":"Enable collection of agent metrics.\n","type":"boolean"},"monitoringOutputId":{"description":"The identifier for monitoring output.\n","type":"string"},"name":{"description":"The name of the agent policy.\n","type":"string"},"namespace":{"description":"The namespace of the agent policy.\n","type":"string"},"policyId":{"description":"Unique identifier of the agent policy.\n","type":"string"},"requiredVersions":{"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","type":"object"},"skipDestroy":{"type":"boolean"},"spaceIds":{"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","items":{"type":"string"},"type":"array"},"supportsAgentless":{"description":"Set to true to enable agentless data collection.\n","type":"boolean"},"sysMonitoring":{"description":"Enable collection of system logs and metrics.\n","type":"boolean"},"unenrollmentTimeout":{"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":"string"}},"required":["advancedMonitoringOptions","advancedSettings","globalDataTags","hostNameFormat","inactivityTimeout","isProtected","monitorLogs","monitorMetrics","name","namespace","policyId","requiredVersions","spaceIds","unenrollmentTimeout"],"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":{"description":"The identifier for the data output.\n","type":"string"},"description":{"description":"The description of the agent policy.\n","type":"string"},"downloadSourceId":{"description":"The identifier for the Elastic Agent binary download server.\n","type":"string"},"fleetServerHostId":{"description":"The identifier for the Fleet server host.\n","type":"string"},"globalDataTags":{"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","type":"object"},"hostNameFormat":{"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","type":"string"},"inactivityTimeout":{"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","type":"string"},"isProtected":{"description":"Enable tamper protection for this agent policy (Fleet API <span pulumi-lang-nodejs=\"`isProtected`\" pulumi-lang-dotnet=\"`IsProtected`\" pulumi-lang-go=\"`isProtected`\" pulumi-lang-python=\"`is_protected`\" pulumi-lang-yaml=\"`isProtected`\" pulumi-lang-java=\"`isProtected`\">`is_protected`</span>). When true, agents use uninstall tokens. Requires Elastic Stack 8.10.0 or later.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetAgentPolicyKibanaConnection:FleetAgentPolicyKibanaConnection"},"type":"array"},"monitorLogs":{"description":"Enable collection of agent logs.\n","type":"boolean"},"monitorMetrics":{"description":"Enable collection of agent metrics.\n","type":"boolean"},"monitoringOutputId":{"description":"The identifier for monitoring output.\n","type":"string"},"name":{"description":"The name of the agent policy.\n","type":"string"},"namespace":{"description":"The namespace of the agent policy.\n","type":"string"},"policyId":{"description":"Unique identifier of the agent policy.\n","type":"string"},"requiredVersions":{"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","type":"object"},"skipDestroy":{"type":"boolean"},"spaceIds":{"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","items":{"type":"string"},"type":"array"},"supportsAgentless":{"description":"Set to true to enable agentless data collection.\n","type":"boolean"},"sysMonitoring":{"description":"Enable collection of system logs and metrics.\n","type":"boolean"},"unenrollmentTimeout":{"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":"string"}},"type":"object"},"type":"object"},"elasticstack:index/fleetCustomIntegration:FleetCustomIntegration":{"description":"Uploads and installs a custom (locally packaged) Fleet integration. The package must be a zip or tar.gz archive conforming to the Elastic package specification.\n\nTo prevent the package from being uninstalled when the resource is destroyed, set <span 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`\">`skip_destroy`</span> to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>.\n","inputProperties":{"ignoreMappingUpdateErrors":{"description":"Set to true to ignore mapping update errors during package installation.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetCustomIntegrationKibanaConnection:FleetCustomIntegrationKibanaConnection"},"type":"array"},"packagePath":{"description":"Path to the local zip or tar.gz file containing the integration package.\n","type":"string"},"skipDataStreamRollover":{"description":"Set to true to skip data stream rollover during package installation.\n","type":"boolean"},"skipDestroy":{"type":"boolean"},"spaceId":{"description":"The Kibana space ID where this integration package should be installed. Changing this value forces resource replacement.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FFleetCustomIntegrationTimeouts:FleetCustomIntegrationTimeouts"}},"properties":{"checksum":{"description":"SHA256 hex digest of the uploaded package file.\n","type":"string"},"ignoreMappingUpdateErrors":{"description":"Set to true to ignore mapping update errors during package installation.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetCustomIntegrationKibanaConnection:FleetCustomIntegrationKibanaConnection"},"type":"array"},"packageName":{"description":"The integration package name, populated from the upload response.\n","type":"string"},"packagePath":{"description":"Path to the local zip or tar.gz file containing the integration package.\n","type":"string"},"packageVersion":{"description":"The integration package version, populated after upload.\n","type":"string"},"skipDataStreamRollover":{"description":"Set to true to skip data stream rollover during package installation.\n","type":"boolean"},"skipDestroy":{"type":"boolean"},"spaceId":{"description":"The Kibana space ID where this integration package should be installed. Changing this value forces resource replacement.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FFleetCustomIntegrationTimeouts:FleetCustomIntegrationTimeouts"}},"required":["checksum","ignoreMappingUpdateErrors","packageName","packagePath","packageVersion","skipDataStreamRollover","skipDestroy","spaceId"],"requiredInputs":["packagePath"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetCustomIntegration resources.\n","properties":{"checksum":{"description":"SHA256 hex digest of the uploaded package file.\n","type":"string"},"ignoreMappingUpdateErrors":{"description":"Set to true to ignore mapping update errors during package installation.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetCustomIntegrationKibanaConnection:FleetCustomIntegrationKibanaConnection"},"type":"array"},"packageName":{"description":"The integration package name, populated from the upload response.\n","type":"string"},"packagePath":{"description":"Path to the local zip or tar.gz file containing the integration package.\n","type":"string"},"packageVersion":{"description":"The integration package version, populated after upload.\n","type":"string"},"skipDataStreamRollover":{"description":"Set to true to skip data stream rollover during package installation.\n","type":"boolean"},"skipDestroy":{"type":"boolean"},"spaceId":{"description":"The Kibana space ID where this integration package should be installed. Changing this value forces resource replacement.\n","type":"string"},"timeouts":{"$ref":"#/types/elasticstack:index%2FFleetCustomIntegrationTimeouts:FleetCustomIntegrationTimeouts"}},"type":"object"},"type":"object"},"elasticstack:index/fleetElasticDefendIntegrationPolicy:FleetElasticDefendIntegrationPolicy":{"description":"Manages an Elastic Defend Fleet integration policy (package policy for the <span pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\">`endpoint`</span> package). Uses a two-phase create (bootstrap then finalize) and preserves server-managed payloads such as <span pulumi-lang-nodejs=\"`artifactManifest`\" pulumi-lang-dotnet=\"`ArtifactManifest`\" pulumi-lang-go=\"`artifactManifest`\" pulumi-lang-python=\"`artifact_manifest`\" pulumi-lang-yaml=\"`artifactManifest`\" pulumi-lang-java=\"`artifactManifest`\">`artifact_manifest`</span> and the package policy <span pulumi-lang-nodejs=\"`version`\" pulumi-lang-dotnet=\"`Version`\" pulumi-lang-go=\"`version`\" pulumi-lang-python=\"`version`\" pulumi-lang-yaml=\"`version`\" pulumi-lang-java=\"`version`\">`version`</span> in private state.\n","inputProperties":{"agentPolicyId":{"description":"ID of the agent policy.\n","type":"string"},"description":{"description":"The description of the integration policy.\n","type":"string"},"enabled":{"description":"Enable the integration policy.\n","type":"boolean"},"force":{"description":"Force operations, such as creation and deletion, to occur.\n","type":"boolean"},"integrationVersion":{"description":"The version of the Elastic Defend integration package.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyKibanaConnection:FleetElasticDefendIntegrationPolicyKibanaConnection"},"type":"array"},"name":{"description":"The name of the integration policy.\n","type":"string"},"namespace":{"description":"The namespace of the integration policy.\n","type":"string"},"policy":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicy:FleetElasticDefendIntegrationPolicyPolicy","description":"Elastic Defend policy configuration.\n"},"policyId":{"description":"Unique identifier of the Elastic Defend integration policy. Used as the import key.\n","type":"string"},"preset":{"description":"Elastic Defend preset configuration. Maps to `endpointConfig.preset` in the Defend API. Common values include `\"NGAv1\"`, `\"NGAV\"`, `\"dataCollection\"`, `\"EDRComplete\"`, `\"EDREssential\"`.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this integration policy is available. When set, must match the<span 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 \"> space_ids </span>of the referenced agent policy. If not set, will be inherited from the agent policy.\n","items":{"type":"string"},"type":"array"}},"properties":{"agentPolicyId":{"description":"ID of the agent policy.\n","type":"string"},"description":{"description":"The description of the integration policy.\n","type":"string"},"enabled":{"description":"Enable the integration policy.\n","type":"boolean"},"force":{"description":"Force operations, such as creation and deletion, to occur.\n","type":"boolean"},"integrationVersion":{"description":"The version of the Elastic Defend integration package.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyKibanaConnection:FleetElasticDefendIntegrationPolicyKibanaConnection"},"type":"array"},"name":{"description":"The name of the integration policy.\n","type":"string"},"namespace":{"description":"The namespace of the integration policy.\n","type":"string"},"policy":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicy:FleetElasticDefendIntegrationPolicyPolicy","description":"Elastic Defend policy configuration.\n"},"policyId":{"description":"Unique identifier of the Elastic Defend integration policy. Used as the import key.\n","type":"string"},"preset":{"description":"Elastic Defend preset configuration. Maps to `endpointConfig.preset` in the Defend API. Common values include `\"NGAv1\"`, `\"NGAV\"`, `\"dataCollection\"`, `\"EDRComplete\"`, `\"EDREssential\"`.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this integration policy is available. When set, must match the<span 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 \"> space_ids </span>of the referenced agent policy. If not set, will be inherited from the agent policy.\n","items":{"type":"string"},"type":"array"}},"required":["agentPolicyId","enabled","integrationVersion","name","namespace","policy","policyId","spaceIds"],"requiredInputs":["agentPolicyId","integrationVersion","namespace","policy"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetElasticDefendIntegrationPolicy resources.\n","properties":{"agentPolicyId":{"description":"ID of the agent policy.\n","type":"string"},"description":{"description":"The description of the integration policy.\n","type":"string"},"enabled":{"description":"Enable the integration policy.\n","type":"boolean"},"force":{"description":"Force operations, such as creation and deletion, to occur.\n","type":"boolean"},"integrationVersion":{"description":"The version of the Elastic Defend integration package.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyKibanaConnection:FleetElasticDefendIntegrationPolicyKibanaConnection"},"type":"array"},"name":{"description":"The name of the integration policy.\n","type":"string"},"namespace":{"description":"The namespace of the integration policy.\n","type":"string"},"policy":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicy:FleetElasticDefendIntegrationPolicyPolicy","description":"Elastic Defend policy configuration.\n"},"policyId":{"description":"Unique identifier of the Elastic Defend integration policy. Used as the import key.\n","type":"string"},"preset":{"description":"Elastic Defend preset configuration. Maps to `endpointConfig.preset` in the Defend API. Common values include `\"NGAv1\"`, `\"NGAV\"`, `\"dataCollection\"`, `\"EDRComplete\"`, `\"EDREssential\"`.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this integration policy is available. When set, must match the<span 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 \"> space_ids </span>of the referenced agent policy. If not set, will be inherited from the agent policy.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"type":"object"},"elasticstack:index/fleetIntegration:FleetIntegration":{"inputProperties":{"force":{"description":"Set to true to force the requested action.\n","type":"boolean"},"ignoreConstraints":{"description":"Set to true to ignore constraint errors during package installation.\n","type":"boolean"},"ignoreMappingUpdateErrors":{"description":"Set to true to ignore mapping update errors during package installation.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationKibanaConnection:FleetIntegrationKibanaConnection"},"type":"array"},"name":{"description":"The integration package name.\n","type":"string"},"prerelease":{"description":"Set to true to allow installation of prerelease (beta, non-GA) packages.\n","type":"boolean"},"skipDataStreamRollover":{"description":"Set to true to skip data stream rollover during package installation.\n","type":"boolean"},"skipDestroy":{"type":"boolean"},"spaceId":{"description":"The Kibana space ID where this integration package should be installed.\n","type":"string"},"version":{"description":"The integration package version.\n","type":"string"}},"properties":{"force":{"description":"Set to true to force the requested action.\n","type":"boolean"},"ignoreConstraints":{"description":"Set to true to ignore constraint errors during package installation.\n","type":"boolean"},"ignoreMappingUpdateErrors":{"description":"Set to true to ignore mapping update errors during package installation.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationKibanaConnection:FleetIntegrationKibanaConnection"},"type":"array"},"name":{"description":"The integration package name.\n","type":"string"},"prerelease":{"description":"Set to true to allow installation of prerelease (beta, non-GA) packages.\n","type":"boolean"},"skipDataStreamRollover":{"description":"Set to true to skip data stream rollover during package installation.\n","type":"boolean"},"skipDestroy":{"type":"boolean"},"spaceId":{"description":"The Kibana space ID where this integration package should be installed.\n","type":"string"},"version":{"description":"The integration package version.\n","type":"string"}},"required":["name","spaceId","version"],"requiredInputs":["version"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetIntegration resources.\n","properties":{"force":{"description":"Set to true to force the requested action.\n","type":"boolean"},"ignoreConstraints":{"description":"Set to true to ignore constraint errors during package installation.\n","type":"boolean"},"ignoreMappingUpdateErrors":{"description":"Set to true to ignore mapping update errors during package installation.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationKibanaConnection:FleetIntegrationKibanaConnection"},"type":"array"},"name":{"description":"The integration package name.\n","type":"string"},"prerelease":{"description":"Set to true to allow installation of prerelease (beta, non-GA) packages.\n","type":"boolean"},"skipDataStreamRollover":{"description":"Set to true to skip data stream rollover during package installation.\n","type":"boolean"},"skipDestroy":{"type":"boolean"},"spaceId":{"description":"The Kibana space ID where this integration package should be installed.\n","type":"string"},"version":{"description":"The integration package version.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\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\", &elasticstack.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\", &elasticstack.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\", &elasticstack.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\": &elasticstack.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\": &elasticstack.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<!--End PulumiCodeChooser -->\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 <fleet_integration_policy_id>\n```\n\n","inputProperties":{"agentPolicyId":{"description":"ID of the agent policy.\n","type":"string"},"agentPolicyIds":{"description":"List of agent policy IDs.\n","items":{"type":"string"},"type":"array"},"description":{"description":"The description of the integration policy.\n","type":"string"},"force":{"description":"Force operations, such as creation and deletion, to occur.\n","type":"boolean"},"inputs":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputs:FleetIntegrationPolicyInputs"},"description":"Integration inputs mapped by input ID.\n","type":"object"},"integrationName":{"description":"The name of the integration package.\n","type":"string"},"integrationVersion":{"description":"The version of the integration package.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyKibanaConnection:FleetIntegrationPolicyKibanaConnection"},"type":"array"},"name":{"description":"The name of the integration policy.\n","type":"string"},"namespace":{"description":"The namespace of the integration policy.\n","type":"string"},"outputId":{"description":"The ID of the output to send data to. When not specified, the default output of the agent policy will be used.\n","type":"string"},"policyId":{"description":"Unique identifier of the integration policy.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this integration policy is available. When set, must match the<span 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 \"> space_ids </span>of the referenced agent policy. Note: The order of space IDs does not matter as this is a set.\n","items":{"type":"string"},"type":"array"},"varsJson":{"description":"Integration-level variables as JSON. Variables vary depending on the integration package.\n","secret":true,"type":"string"}},"properties":{"agentPolicyId":{"description":"ID of the agent policy.\n","type":"string"},"agentPolicyIds":{"description":"List of agent policy IDs.\n","items":{"type":"string"},"type":"array"},"description":{"description":"The description of the integration policy.\n","type":"string"},"force":{"description":"Force operations, such as creation and deletion, to occur.\n","type":"boolean"},"inputs":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputs:FleetIntegrationPolicyInputs"},"description":"Integration inputs mapped by input ID.\n","type":"object"},"integrationName":{"description":"The name of the integration package.\n","type":"string"},"integrationVersion":{"description":"The version of the integration package.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyKibanaConnection:FleetIntegrationPolicyKibanaConnection"},"type":"array"},"name":{"description":"The name of the integration policy.\n","type":"string"},"namespace":{"description":"The namespace of the integration policy.\n","type":"string"},"outputId":{"description":"The ID of the output to send data to. When not specified, the default output of the agent policy will be used.\n","type":"string"},"policyId":{"description":"Unique identifier of the integration policy.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this integration policy is available. When set, must match the<span 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 \"> space_ids </span>of the referenced agent policy. Note: The order of space IDs does not matter as this is a set.\n","items":{"type":"string"},"type":"array"},"varsJson":{"description":"Integration-level variables as JSON. Variables vary depending on the integration package.\n","secret":true,"type":"string"}},"required":["inputs","integrationName","integrationVersion","name","namespace","policyId","spaceIds","varsJson"],"requiredInputs":["integrationName","integrationVersion","namespace"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetIntegrationPolicy resources.\n","properties":{"agentPolicyId":{"description":"ID of the agent policy.\n","type":"string"},"agentPolicyIds":{"description":"List of agent policy IDs.\n","items":{"type":"string"},"type":"array"},"description":{"description":"The description of the integration policy.\n","type":"string"},"force":{"description":"Force operations, such as creation and deletion, to occur.\n","type":"boolean"},"inputs":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputs:FleetIntegrationPolicyInputs"},"description":"Integration inputs mapped by input ID.\n","type":"object"},"integrationName":{"description":"The name of the integration package.\n","type":"string"},"integrationVersion":{"description":"The version of the integration package.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyKibanaConnection:FleetIntegrationPolicyKibanaConnection"},"type":"array"},"name":{"description":"The name of the integration policy.\n","type":"string"},"namespace":{"description":"The namespace of the integration policy.\n","type":"string"},"outputId":{"description":"The ID of the output to send data to. When not specified, the default output of the agent policy will be used.\n","type":"string"},"policyId":{"description":"Unique identifier of the integration policy.\n","type":"string"},"spaceIds":{"description":"The Kibana space IDs where this integration policy is available. When set, must match the<span 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 \"> space_ids </span>of the referenced agent policy. Note: The order of space IDs does not matter as this is a set.\n","items":{"type":"string"},"type":"array"},"varsJson":{"description":"Integration-level variables as JSON. Variables vary depending on the integration package.\n","secret":true,"type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/fleetOutput:FleetOutput":{"description":"Creates a new Fleet Output.\n\n## Example Usage\n\n### Basic Kafka output\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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: &elasticstack.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&elasticstack.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<!--End PulumiCodeChooser -->\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 <fleet_output_id>\n```\n\n","inputProperties":{"caSha256":{"description":"Fingerprint of the Elasticsearch CA certificate.\n","type":"string"},"caTrustedFingerprint":{"description":"Fingerprint of trusted CA.\n","type":"string"},"configYaml":{"description":"Advanced YAML configuration. YAML settings here will be added to the output section of each agent policy. Note: the Fleet API treats an omitted <span pulumi-lang-nodejs=\"`configYaml`\" pulumi-lang-dotnet=\"`ConfigYaml`\" pulumi-lang-go=\"`configYaml`\" pulumi-lang-python=\"`config_yaml`\" pulumi-lang-yaml=\"`configYaml`\" pulumi-lang-java=\"`configYaml`\">`config_yaml`</span> in an update request as \"no change\" and does not clear the stored value. To clear a previously stored value, delete and re-create the output.\n","secret":true,"type":"string"},"defaultIntegrations":{"description":"Make this output the default for agent integrations.\n","type":"boolean"},"defaultMonitoring":{"description":"Make this output the default for agent monitoring.\n","type":"boolean"},"hosts":{"description":"A list of hosts.\n","items":{"type":"string"},"type":"array"},"kafka":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafka:FleetOutputKafka","description":"Kafka-specific configuration.\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetOutputKibanaConnection:FleetOutputKibanaConnection"},"type":"array"},"name":{"description":"The name of the output.\n","type":"string"},"outputId":{"description":"Unique identifier of the output.\n","type":"string"},"serviceToken":{"description":"Service token for remote Elasticsearch outputs.\n","secret":true,"type":"string"},"spaceIds":{"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","items":{"type":"string"},"type":"array"},"ssl":{"$ref":"#/types/elasticstack:index%2FFleetOutputSsl:FleetOutputSsl","description":"SSL configuration.\n"},"syncIntegrations":{"description":"When type is remote_elasticsearch, whether Fleet synchronizes integration assets to the remote cluster. Subscription and version requirements apply per Elastic documentation.\n","type":"boolean"},"syncUninstalledIntegrations":{"description":"When type is remote*elasticsearch, whether to sync uninstalled integrations. Only meaningful when sync*integrations is enabled.\n","type":"boolean"},"type":{"description":"The output type.\n","type":"string"},"writeToLogsStreams":{"description":"When type is remote_elasticsearch, whether agents using this output send data to wired logs streams (preview in newer stacks).\n","type":"boolean"}},"properties":{"caSha256":{"description":"Fingerprint of the Elasticsearch CA certificate.\n","type":"string"},"caTrustedFingerprint":{"description":"Fingerprint of trusted CA.\n","type":"string"},"configYaml":{"description":"Advanced YAML configuration. YAML settings here will be added to the output section of each agent policy. Note: the Fleet API treats an omitted <span pulumi-lang-nodejs=\"`configYaml`\" pulumi-lang-dotnet=\"`ConfigYaml`\" pulumi-lang-go=\"`configYaml`\" pulumi-lang-python=\"`config_yaml`\" pulumi-lang-yaml=\"`configYaml`\" pulumi-lang-java=\"`configYaml`\">`config_yaml`</span> in an update request as \"no change\" and does not clear the stored value. To clear a previously stored value, delete and re-create the output.\n","secret":true,"type":"string"},"defaultIntegrations":{"description":"Make this output the default for agent integrations.\n","type":"boolean"},"defaultMonitoring":{"description":"Make this output the default for agent monitoring.\n","type":"boolean"},"hosts":{"description":"A list of hosts.\n","items":{"type":"string"},"type":"array"},"kafka":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafka:FleetOutputKafka","description":"Kafka-specific configuration.\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetOutputKibanaConnection:FleetOutputKibanaConnection"},"type":"array"},"name":{"description":"The name of the output.\n","type":"string"},"outputId":{"description":"Unique identifier of the output.\n","type":"string"},"serviceToken":{"description":"Service token for remote Elasticsearch outputs.\n","secret":true,"type":"string"},"spaceIds":{"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","items":{"type":"string"},"type":"array"},"ssl":{"$ref":"#/types/elasticstack:index%2FFleetOutputSsl:FleetOutputSsl","description":"SSL configuration.\n"},"syncIntegrations":{"description":"When type is remote_elasticsearch, whether Fleet synchronizes integration assets to the remote cluster. Subscription and version requirements apply per Elastic documentation.\n","type":"boolean"},"syncUninstalledIntegrations":{"description":"When type is remote*elasticsearch, whether to sync uninstalled integrations. Only meaningful when sync*integrations is enabled.\n","type":"boolean"},"type":{"description":"The output type.\n","type":"string"},"writeToLogsStreams":{"description":"When type is remote_elasticsearch, whether agents using this output send data to wired logs streams (preview in newer stacks).\n","type":"boolean"}},"required":["defaultIntegrations","defaultMonitoring","hosts","name","outputId","spaceIds","type"],"requiredInputs":["hosts","type"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetOutput resources.\n","properties":{"caSha256":{"description":"Fingerprint of the Elasticsearch CA certificate.\n","type":"string"},"caTrustedFingerprint":{"description":"Fingerprint of trusted CA.\n","type":"string"},"configYaml":{"description":"Advanced YAML configuration. YAML settings here will be added to the output section of each agent policy. Note: the Fleet API treats an omitted <span pulumi-lang-nodejs=\"`configYaml`\" pulumi-lang-dotnet=\"`ConfigYaml`\" pulumi-lang-go=\"`configYaml`\" pulumi-lang-python=\"`config_yaml`\" pulumi-lang-yaml=\"`configYaml`\" pulumi-lang-java=\"`configYaml`\">`config_yaml`</span> in an update request as \"no change\" and does not clear the stored value. To clear a previously stored value, delete and re-create the output.\n","secret":true,"type":"string"},"defaultIntegrations":{"description":"Make this output the default for agent integrations.\n","type":"boolean"},"defaultMonitoring":{"description":"Make this output the default for agent monitoring.\n","type":"boolean"},"hosts":{"description":"A list of hosts.\n","items":{"type":"string"},"type":"array"},"kafka":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafka:FleetOutputKafka","description":"Kafka-specific configuration.\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetOutputKibanaConnection:FleetOutputKibanaConnection"},"type":"array"},"name":{"description":"The name of the output.\n","type":"string"},"outputId":{"description":"Unique identifier of the output.\n","type":"string"},"serviceToken":{"description":"Service token for remote Elasticsearch outputs.\n","secret":true,"type":"string"},"spaceIds":{"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","items":{"type":"string"},"type":"array"},"ssl":{"$ref":"#/types/elasticstack:index%2FFleetOutputSsl:FleetOutputSsl","description":"SSL configuration.\n"},"syncIntegrations":{"description":"When type is remote_elasticsearch, whether Fleet synchronizes integration assets to the remote cluster. Subscription and version requirements apply per Elastic documentation.\n","type":"boolean"},"syncUninstalledIntegrations":{"description":"When type is remote*elasticsearch, whether to sync uninstalled integrations. Only meaningful when sync*integrations is enabled.\n","type":"boolean"},"type":{"description":"The output type.\n","type":"string"},"writeToLogsStreams":{"description":"When type is remote_elasticsearch, whether agents using this output send data to wired logs streams (preview in newer stacks).\n","type":"boolean"}},"type":"object"},"type":"object"},"elasticstack:index/fleetProxy:FleetProxy":{"description":"Manages Fleet proxies. See the [Fleet Proxies API documentation](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-fleet-proxies) for more information.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst example = new elasticstack.FleetProxy(\"example\", {\n    name: \"My Proxy\",\n    url: \"https://proxy.example.com:3128\",\n    certificate: `-----BEGIN CERTIFICATE-----\n...`,\n    certificateKey: `-----BEGIN PRIVATE KEY-----\n...`,\n    certificateAuthorities: `-----BEGIN CERTIFICATE-----\n...`,\n    proxyHeaders: {\n        \"X-Custom-Header\": \"my-value\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nexample = elasticstack.FleetProxy(\"example\",\n    name=\"My Proxy\",\n    url=\"https://proxy.example.com:3128\",\n    certificate=\"\"\"-----BEGIN CERTIFICATE-----\n...\"\"\",\n    certificate_key=\"\"\"-----BEGIN PRIVATE KEY-----\n...\"\"\",\n    certificate_authorities=\"\"\"-----BEGIN CERTIFICATE-----\n...\"\"\",\n    proxy_headers={\n        \"X-Custom-Header\": \"my-value\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var example = new Elasticstack.FleetProxy(\"example\", new()\n    {\n        Name = \"My Proxy\",\n        Url = \"https://proxy.example.com:3128\",\n        Certificate = @\"-----BEGIN CERTIFICATE-----\n...\",\n        CertificateKey = @\"-----BEGIN PRIVATE KEY-----\n...\",\n        CertificateAuthorities = @\"-----BEGIN CERTIFICATE-----\n...\",\n        ProxyHeaders = \n        {\n            { \"X-Custom-Header\", \"my-value\" },\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.NewFleetProxy(ctx, \"example\", &elasticstack.FleetProxyArgs{\n\t\t\tName:                   pulumi.String(\"My Proxy\"),\n\t\t\tUrl:                    pulumi.String(\"https://proxy.example.com:3128\"),\n\t\t\tCertificate:            pulumi.String(\"-----BEGIN CERTIFICATE-----\\n...\"),\n\t\t\tCertificateKey:         pulumi.String(\"-----BEGIN PRIVATE KEY-----\\n...\"),\n\t\t\tCertificateAuthorities: pulumi.String(\"-----BEGIN CERTIFICATE-----\\n...\"),\n\t\t\tProxyHeaders: pulumi.StringMap{\n\t\t\t\t\"X-Custom-Header\": pulumi.String(\"my-value\"),\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.FleetProxy;\nimport com.pulumi.elasticstack.FleetProxyArgs;\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 FleetProxy(\"example\", FleetProxyArgs.builder()\n            .name(\"My Proxy\")\n            .url(\"https://proxy.example.com:3128\")\n            .certificate(\"\"\"\n-----BEGIN CERTIFICATE-----\n...            \"\"\")\n            .certificateKey(\"\"\"\n-----BEGIN PRIVATE KEY-----\n...            \"\"\")\n            .certificateAuthorities(\"\"\"\n-----BEGIN CERTIFICATE-----\n...            \"\"\")\n            .proxyHeaders(Map.of(\"X-Custom-Header\", \"my-value\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  example:\n    type: elasticstack:FleetProxy\n    properties:\n      name: My Proxy\n      url: https://proxy.example.com:3128\n      certificate: |-\n        -----BEGIN CERTIFICATE-----\n        ...\n      certificateKey: |-\n        -----BEGIN PRIVATE KEY-----\n        ...\n      certificateAuthorities: |-\n        -----BEGIN CERTIFICATE-----\n        ...\n      proxyHeaders:\n        X-Custom-Header: my-value\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"certificate":{"description":"The proxy certificate.\n","type":"string"},"certificateAuthorities":{"description":"The proxy certificate authorities.\n","type":"string"},"certificateKey":{"description":"The proxy certificate key.\n","secret":true,"type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetProxyKibanaConnection:FleetProxyKibanaConnection"},"type":"array"},"name":{"description":"The proxy name.\n","type":"string"},"proxyHeaders":{"additionalProperties":{"type":"string"},"description":"Additional headers to send to the proxy during CONNECT requests.\n","type":"object"},"proxyId":{"description":"The proxy ID.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If not provided, the default space is used.\n","type":"string"},"url":{"description":"The proxy URL.\n","type":"string"}},"properties":{"certificate":{"description":"The proxy certificate.\n","type":"string"},"certificateAuthorities":{"description":"The proxy certificate authorities.\n","type":"string"},"certificateKey":{"description":"The proxy certificate key.\n","secret":true,"type":"string"},"isPreconfigured":{"description":"Whether the proxy is preconfigured.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetProxyKibanaConnection:FleetProxyKibanaConnection"},"type":"array"},"name":{"description":"The proxy name.\n","type":"string"},"proxyHeaders":{"additionalProperties":{"type":"string"},"description":"Additional headers to send to the proxy during CONNECT requests.\n","type":"object"},"proxyId":{"description":"The proxy ID.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If not provided, the default space is used.\n","type":"string"},"url":{"description":"The proxy URL.\n","type":"string"}},"required":["isPreconfigured","name","proxyId","spaceId","url"],"requiredInputs":["url"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetProxy resources.\n","properties":{"certificate":{"description":"The proxy certificate.\n","type":"string"},"certificateAuthorities":{"description":"The proxy certificate authorities.\n","type":"string"},"certificateKey":{"description":"The proxy certificate key.\n","secret":true,"type":"string"},"isPreconfigured":{"description":"Whether the proxy is preconfigured.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetProxyKibanaConnection:FleetProxyKibanaConnection"},"type":"array"},"name":{"description":"The proxy name.\n","type":"string"},"proxyHeaders":{"additionalProperties":{"type":"string"},"description":"Additional headers to send to the proxy during CONNECT requests.\n","type":"object"},"proxyId":{"description":"The proxy ID.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If not provided, the default space is used.\n","type":"string"},"url":{"description":"The proxy URL.\n","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/fleetServerHost:FleetServerHost":{"description":"Creates a new Fleet Server Host.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <fleet_server_host_id>\n```\n\n","inputProperties":{"default":{"description":"Set as default.\n","type":"boolean"},"hostId":{"description":"Unique identifier of the Fleet server host.\n","type":"string"},"hosts":{"description":"A list of hosts.\n","items":{"type":"string"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetServerHostKibanaConnection:FleetServerHostKibanaConnection"},"type":"array"},"name":{"description":"The name of the Fleet server host.\n","type":"string"},"spaceIds":{"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","items":{"type":"string"},"type":"array"}},"properties":{"default":{"description":"Set as default.\n","type":"boolean"},"hostId":{"description":"Unique identifier of the Fleet server host.\n","type":"string"},"hosts":{"description":"A list of hosts.\n","items":{"type":"string"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetServerHostKibanaConnection:FleetServerHostKibanaConnection"},"type":"array"},"name":{"description":"The name of the Fleet server host.\n","type":"string"},"spaceIds":{"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","items":{"type":"string"},"type":"array"}},"required":["default","hostId","hosts","name","spaceIds"],"requiredInputs":["hosts"],"stateInputs":{"description":"Input properties used for looking up and filtering FleetServerHost resources.\n","properties":{"default":{"description":"Set as default.\n","type":"boolean"},"hostId":{"description":"Unique identifier of the Fleet server host.\n","type":"string"},"hosts":{"description":"A list of hosts.\n","items":{"type":"string"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetServerHostKibanaConnection:FleetServerHostKibanaConnection"},"type":"array"},"name":{"description":"The name of the Fleet server host.\n","type":"string"},"spaceIds":{"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","items":{"type":"string"},"type":"array"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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: \"<your-pagerduty-routing-key>\",\n    }),\n});\nconst slack_connector = new elasticstack.KibanaActionConnector(\"slack-connector\", {\n    name: \"slack\",\n    connectorTypeId: \".slack\",\n    secrets: JSON.stringify({\n        webhookUrl: \"<your-webhookUrl>\",\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: \"<your-token>\",\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: \"<your-aws-access-key>\",\n        secret: \"<your-aws-secret-key>\",\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: \"<your-openai-api-key>\",\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: \"<your-azure-api-key>\",\n    }),\n});\nconst webhook = new elasticstack.KibanaActionConnector(\"webhook\", {\n    name: \"webhook\",\n    connectorTypeId: \".webhook\",\n    config: JSON.stringify({\n        url: \"<your-webhookUrl>\",\n        authType: \"webhook-authentication-basic\",\n        hasAuth: true,\n        method: \"post\",\n    }),\n    secrets: JSON.stringify({\n        user: \"<your-user>\",\n        password: \"<your-password>\",\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\": \"<your-pagerduty-routing-key>\",\n    }))\nslack_connector = elasticstack.KibanaActionConnector(\"slack-connector\",\n    name=\"slack\",\n    connector_type_id=\".slack\",\n    secrets=json.dumps({\n        \"webhookUrl\": \"<your-webhookUrl>\",\n    }))\nslack_api_connector = elasticstack.KibanaActionConnector(\"slack-api-connector\",\n    name=\"slack\",\n    connector_type_id=\".slack_api\",\n    secrets=json.dumps({\n        \"token\": \"<your-token>\",\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\": \"<your-aws-access-key>\",\n        \"secret\": \"<your-aws-secret-key>\",\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\": \"<your-openai-api-key>\",\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\": \"<your-azure-api-key>\",\n    }))\nwebhook = elasticstack.KibanaActionConnector(\"webhook\",\n    name=\"webhook\",\n    connector_type_id=\".webhook\",\n    config=json.dumps({\n        \"url\": \"<your-webhookUrl>\",\n        \"authType\": \"webhook-authentication-basic\",\n        \"hasAuth\": True,\n        \"method\": \"post\",\n    }),\n    secrets=json.dumps({\n        \"user\": \"<your-user>\",\n        \"password\": \"<your-password>\",\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(() => \n{\n    var example = new Elasticstack.KibanaActionConnector(\"example\", new()\n    {\n        Name = \"%s\",\n        Config = JsonSerializer.Serialize(new Dictionary<string, object?>\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<string, object?>\n        {\n            [\"apiUrl\"] = \"https://events.pagerduty.com/v2/enqueue\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"routingKey\"] = \"<your-pagerduty-routing-key>\",\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<string, object?>\n        {\n            [\"webhookUrl\"] = \"<your-webhookUrl>\",\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<string, object?>\n        {\n            [\"token\"] = \"<your-token>\",\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<string, object?>\n        {\n            [\"apiUrl\"] = \"https://bedrock-runtime.us-east-1.amazonaws.com\",\n            [\"defaultModel\"] = \"anthropic.claude-v2\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"accessKey\"] = \"<your-aws-access-key>\",\n            [\"secret\"] = \"<your-aws-secret-key>\",\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<string, object?>\n        {\n            [\"apiProvider\"] = \"OpenAI\",\n            [\"apiUrl\"] = \"https://api.openai.com/v1\",\n            [\"defaultModel\"] = \"gpt-4\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"apiKey\"] = \"<your-openai-api-key>\",\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<string, object?>\n        {\n            [\"apiProvider\"] = \"Azure OpenAI\",\n            [\"apiUrl\"] = \"https://my-resource.openai.azure.com/openai/deployments/my-deployment\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"apiKey\"] = \"<your-azure-api-key>\",\n        }),\n    });\n\n    var webhook = new Elasticstack.KibanaActionConnector(\"webhook\", new()\n    {\n        Name = \"webhook\",\n        ConnectorTypeId = \".webhook\",\n        Config = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"url\"] = \"<your-webhookUrl>\",\n            [\"authType\"] = \"webhook-authentication-basic\",\n            [\"hasAuth\"] = true,\n            [\"method\"] = \"post\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"user\"] = \"<your-user>\",\n            [\"password\"] = \"<your-password>\",\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\", &elasticstack.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\": \"<your-pagerduty-routing-key>\",\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\", &elasticstack.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\": \"<your-webhookUrl>\",\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\", &elasticstack.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\": \"<your-token>\",\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\", &elasticstack.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\": \"<your-aws-access-key>\",\n\t\t\t\"secret\":    \"<your-aws-secret-key>\",\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\", &elasticstack.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\": \"<your-openai-api-key>\",\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\", &elasticstack.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\": \"<your-azure-api-key>\",\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\", &elasticstack.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\":      \"<your-webhookUrl>\",\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\":     \"<your-user>\",\n\t\t\t\"password\": \"<your-password>\",\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\", &elasticstack.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\", \"<your-pagerduty-routing-key>\")\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\", \"<your-webhookUrl>\")\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\", \"<your-token>\")\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\", \"<your-aws-access-key>\"),\n                    jsonProperty(\"secret\", \"<your-aws-secret-key>\")\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\", \"<your-openai-api-key>\")\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\", \"<your-azure-api-key>\")\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\", \"<your-webhookUrl>\"),\n                    jsonProperty(\"authType\", \"webhook-authentication-basic\"),\n                    jsonProperty(\"hasAuth\", true),\n                    jsonProperty(\"method\", \"post\")\n                )))\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"user\", \"<your-user>\"),\n                    jsonProperty(\"password\", \"<your-password>\")\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: <your-pagerduty-routing-key>\n  slack-connector:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: slack\n      connectorTypeId: .slack\n      secrets:\n        fn::toJSON:\n          webhookUrl: <your-webhookUrl>\n  slack-api-connector:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: slack\n      connectorTypeId: .slack_api\n      secrets:\n        fn::toJSON:\n          token: <your-token>\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: <your-aws-access-key>\n          secret: <your-aws-secret-key>\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: <your-openai-api-key>\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: <your-azure-api-key>\n  webhook:\n    type: elasticstack:KibanaActionConnector\n    properties:\n      name: webhook\n      connectorTypeId: .webhook\n      config:\n        fn::toJSON:\n          url: <your-webhookUrl>\n          authType: webhook-authentication-basic\n          hasAuth: true\n          method: post\n      secrets:\n        fn::toJSON:\n          user: <your-user>\n          password: <your-password>\n```\n<!--End PulumiCodeChooser -->\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 <space id>/<connector id>\n```\n\n","inputProperties":{"config":{"type":"string"},"connectorId":{"description":"A UUID v1 or v4 to use instead of a randomly generated ID.","type":"string"},"connectorTypeId":{"description":"The ID of the connector type, e.g. `.index`.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FKibanaActionConnectorKibanaConnection:KibanaActionConnectorKibanaConnection"},"type":"array"},"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"},"secrets":{"description":"The secrets configuration for the connector. Secrets configuration properties vary depending on the connector type. Consider using <span pulumi-lang-nodejs=\"`secretsWo`\" pulumi-lang-dotnet=\"`SecretsWo`\" pulumi-lang-go=\"`secretsWo`\" pulumi-lang-python=\"`secrets_wo`\" pulumi-lang-yaml=\"`secretsWo`\" pulumi-lang-java=\"`secretsWo`\">`secrets_wo`</span> when sourcing secrets from ephemeral providers so values are not persisted to state.","secret":true,"type":"string"},"secretsWo":{"description":"Write-only secrets configuration for the connector. Accepts the same JSON content as <span pulumi-lang-nodejs=\"`secrets`\" pulumi-lang-dotnet=\"`Secrets`\" pulumi-lang-go=\"`secrets`\" pulumi-lang-python=\"`secrets`\" pulumi-lang-yaml=\"`secrets`\" pulumi-lang-java=\"`secrets`\">`secrets`</span> but is never persisted to state; use with ephemeral secret sources (for example Vault).","secret":true,"type":"string"},"secretsWoVersion":{"description":"Optional version string for <span pulumi-lang-nodejs=\"`secretsWo`\" pulumi-lang-dotnet=\"`SecretsWo`\" pulumi-lang-go=\"`secretsWo`\" pulumi-lang-python=\"`secrets_wo`\" pulumi-lang-yaml=\"`secretsWo`\" pulumi-lang-java=\"`secretsWo`\">`secrets_wo`</span>. Bump this value when the secret rotates to trigger a re-send on the next apply.","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.","type":"string"}},"properties":{"config":{"type":"string"},"connectorId":{"description":"A UUID v1 or v4 to use instead of a randomly generated ID.","type":"string"},"connectorTypeId":{"description":"The ID of the connector type, e.g. `.index`.\n","type":"string"},"isDeprecated":{"description":"Indicates whether the connector type is deprecated.","type":"boolean"},"isMissingSecrets":{"description":"Indicates whether secrets are missing for the connector.","type":"boolean"},"isPreconfigured":{"description":"Indicates whether it is a preconfigured connector.","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FKibanaActionConnectorKibanaConnection:KibanaActionConnectorKibanaConnection"},"type":"array"},"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"},"secrets":{"description":"The secrets configuration for the connector. Secrets configuration properties vary depending on the connector type. Consider using <span pulumi-lang-nodejs=\"`secretsWo`\" pulumi-lang-dotnet=\"`SecretsWo`\" pulumi-lang-go=\"`secretsWo`\" pulumi-lang-python=\"`secrets_wo`\" pulumi-lang-yaml=\"`secretsWo`\" pulumi-lang-java=\"`secretsWo`\">`secrets_wo`</span> when sourcing secrets from ephemeral providers so values are not persisted to state.","secret":true,"type":"string"},"secretsWo":{"description":"Write-only secrets configuration for the connector. Accepts the same JSON content as <span pulumi-lang-nodejs=\"`secrets`\" pulumi-lang-dotnet=\"`Secrets`\" pulumi-lang-go=\"`secrets`\" pulumi-lang-python=\"`secrets`\" pulumi-lang-yaml=\"`secrets`\" pulumi-lang-java=\"`secrets`\">`secrets`</span> but is never persisted to state; use with ephemeral secret sources (for example Vault).","secret":true,"type":"string"},"secretsWoVersion":{"description":"Optional version string for <span pulumi-lang-nodejs=\"`secretsWo`\" pulumi-lang-dotnet=\"`SecretsWo`\" pulumi-lang-go=\"`secretsWo`\" pulumi-lang-python=\"`secrets_wo`\" pulumi-lang-yaml=\"`secretsWo`\" pulumi-lang-java=\"`secretsWo`\">`secrets_wo`</span>. Bump this value when the secret rotates to trigger a re-send on the next apply.","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.","type":"string"}},"required":["config","connectorId","connectorTypeId","isDeprecated","isMissingSecrets","isPreconfigured","name","spaceId"],"requiredInputs":["connectorTypeId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaActionConnector resources.\n","properties":{"config":{"type":"string"},"connectorId":{"description":"A UUID v1 or v4 to use instead of a randomly generated ID.","type":"string"},"connectorTypeId":{"description":"The ID of the connector type, e.g. `.index`.\n","type":"string"},"isDeprecated":{"description":"Indicates whether the connector type is deprecated.","type":"boolean"},"isMissingSecrets":{"description":"Indicates whether secrets are missing for the connector.","type":"boolean"},"isPreconfigured":{"description":"Indicates whether it is a preconfigured connector.","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.","items":{"$ref":"#/types/elasticstack:index%2FKibanaActionConnectorKibanaConnection:KibanaActionConnectorKibanaConnection"},"type":"array"},"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"},"secrets":{"description":"The secrets configuration for the connector. Secrets configuration properties vary depending on the connector type. Consider using <span pulumi-lang-nodejs=\"`secretsWo`\" pulumi-lang-dotnet=\"`SecretsWo`\" pulumi-lang-go=\"`secretsWo`\" pulumi-lang-python=\"`secrets_wo`\" pulumi-lang-yaml=\"`secretsWo`\" pulumi-lang-java=\"`secretsWo`\">`secrets_wo`</span> when sourcing secrets from ephemeral providers so values are not persisted to state.","secret":true,"type":"string"},"secretsWo":{"description":"Write-only secrets configuration for the connector. Accepts the same JSON content as <span pulumi-lang-nodejs=\"`secrets`\" pulumi-lang-dotnet=\"`Secrets`\" pulumi-lang-go=\"`secrets`\" pulumi-lang-python=\"`secrets`\" pulumi-lang-yaml=\"`secrets`\" pulumi-lang-java=\"`secrets`\">`secrets`</span> but is never persisted to state; use with ephemeral secret sources (for example Vault).","secret":true,"type":"string"},"secretsWoVersion":{"description":"Optional version string for <span pulumi-lang-nodejs=\"`secretsWo`\" pulumi-lang-dotnet=\"`SecretsWo`\" pulumi-lang-go=\"`secretsWo`\" pulumi-lang-python=\"`secrets_wo`\" pulumi-lang-yaml=\"`secretsWo`\" pulumi-lang-java=\"`secretsWo`\">`secrets_wo`</span>. Bump this value when the secret rotates to trigger a re-send on the next apply.","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/kibanaAgentbuilderAgent:KibanaAgentbuilderAgent":{"description":"Manages Kibana Agent Builder agents. See the [Agent Builder API documentation](https://www.elastic.co/docs/api/doc/kibana/group/endpoint-agent-builder) for more information.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Tool referenced by the agent (minimal ES|QL example)\nconst myTool = new elasticstack.KibanaAgentbuilderTool(\"my_tool\", {\n    toolId: \"example-doc-tool\",\n    type: \"esql\",\n    description: \"Read-only tool for the agent example\",\n    configuration: JSON.stringify({\n        query: \"FROM logs-* | LIMIT 10\",\n    }),\n});\n// Basic agent with tools\nconst myAgent = new elasticstack.KibanaAgentbuilderAgent(\"my_agent\", {\n    agentId: \"my-agent\",\n    name: \"My Agent\",\n    description: \"An example agent built with Agent Builder.\",\n    avatarColor: \"#BFDBFF\",\n    avatarSymbol: \"MA\",\n    labels: [\n        \"example\",\n        \"demo\",\n    ],\n    instructions: \"You are a helpful assistant.\",\n    tools: [myTool.toolId],\n});\n// Agent in a non-default space\nconst mySpace = new elasticstack.KibanaSpace(\"my_space\", {\n    spaceId: \"my-space\",\n    name: \"My Space\",\n});\nconst spaceAgent = new elasticstack.KibanaAgentbuilderAgent(\"space_agent\", {\n    agentId: \"space-agent\",\n    spaceId: mySpace.spaceId,\n    name: \"Space-Scoped Agent\",\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# Tool referenced by the agent (minimal ES|QL example)\nmy_tool = elasticstack.KibanaAgentbuilderTool(\"my_tool\",\n    tool_id=\"example-doc-tool\",\n    type=\"esql\",\n    description=\"Read-only tool for the agent example\",\n    configuration=json.dumps({\n        \"query\": \"FROM logs-* | LIMIT 10\",\n    }))\n# Basic agent with tools\nmy_agent = elasticstack.KibanaAgentbuilderAgent(\"my_agent\",\n    agent_id=\"my-agent\",\n    name=\"My Agent\",\n    description=\"An example agent built with Agent Builder.\",\n    avatar_color=\"#BFDBFF\",\n    avatar_symbol=\"MA\",\n    labels=[\n        \"example\",\n        \"demo\",\n    ],\n    instructions=\"You are a helpful assistant.\",\n    tools=[my_tool.tool_id])\n# Agent in a non-default space\nmy_space = elasticstack.KibanaSpace(\"my_space\",\n    space_id=\"my-space\",\n    name=\"My Space\")\nspace_agent = elasticstack.KibanaAgentbuilderAgent(\"space_agent\",\n    agent_id=\"space-agent\",\n    space_id=my_space.space_id,\n    name=\"Space-Scoped Agent\")\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(() => \n{\n    // Tool referenced by the agent (minimal ES|QL example)\n    var myTool = new Elasticstack.KibanaAgentbuilderTool(\"my_tool\", new()\n    {\n        ToolId = \"example-doc-tool\",\n        Type = \"esql\",\n        Description = \"Read-only tool for the agent example\",\n        Configuration = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"query\"] = \"FROM logs-* | LIMIT 10\",\n        }),\n    });\n\n    // Basic agent with tools\n    var myAgent = new Elasticstack.KibanaAgentbuilderAgent(\"my_agent\", new()\n    {\n        AgentId = \"my-agent\",\n        Name = \"My Agent\",\n        Description = \"An example agent built with Agent Builder.\",\n        AvatarColor = \"#BFDBFF\",\n        AvatarSymbol = \"MA\",\n        Labels = new[]\n        {\n            \"example\",\n            \"demo\",\n        },\n        Instructions = \"You are a helpful assistant.\",\n        Tools = new[]\n        {\n            myTool.ToolId,\n        },\n    });\n\n    // Agent in a non-default space\n    var mySpace = new Elasticstack.KibanaSpace(\"my_space\", new()\n    {\n        SpaceId = \"my-space\",\n        Name = \"My Space\",\n    });\n\n    var spaceAgent = new Elasticstack.KibanaAgentbuilderAgent(\"space_agent\", new()\n    {\n        AgentId = \"space-agent\",\n        SpaceId = mySpace.SpaceId,\n        Name = \"Space-Scoped Agent\",\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\"query\": \"FROM logs-* | LIMIT 10\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t// Tool referenced by the agent (minimal ES|QL example)\n\t\tmyTool, err := elasticstack.NewKibanaAgentbuilderTool(ctx, \"my_tool\", &elasticstack.KibanaAgentbuilderToolArgs{\n\t\t\tToolId:        pulumi.String(\"example-doc-tool\"),\n\t\t\tType:          pulumi.String(\"esql\"),\n\t\t\tDescription:   pulumi.String(\"Read-only tool for the agent example\"),\n\t\t\tConfiguration: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Basic agent with tools\n\t\t_, err = elasticstack.NewKibanaAgentbuilderAgent(ctx, \"my_agent\", &elasticstack.KibanaAgentbuilderAgentArgs{\n\t\t\tAgentId:      pulumi.String(\"my-agent\"),\n\t\t\tName:         pulumi.String(\"My Agent\"),\n\t\t\tDescription:  pulumi.String(\"An example agent built with Agent Builder.\"),\n\t\t\tAvatarColor:  pulumi.String(\"#BFDBFF\"),\n\t\t\tAvatarSymbol: pulumi.String(\"MA\"),\n\t\t\tLabels: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\tpulumi.String(\"demo\"),\n\t\t\t},\n\t\t\tInstructions: pulumi.String(\"You are a helpful assistant.\"),\n\t\t\tTools: pulumi.StringArray{\n\t\t\t\tmyTool.ToolId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Agent in a non-default space\n\t\tmySpace, err := elasticstack.NewKibanaSpace(ctx, \"my_space\", &elasticstack.KibanaSpaceArgs{\n\t\t\tSpaceId: pulumi.String(\"my-space\"),\n\t\t\tName:    pulumi.String(\"My Space\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewKibanaAgentbuilderAgent(ctx, \"space_agent\", &elasticstack.KibanaAgentbuilderAgentArgs{\n\t\t\tAgentId: pulumi.String(\"space-agent\"),\n\t\t\tSpaceId: mySpace.SpaceId,\n\t\t\tName:    pulumi.String(\"Space-Scoped Agent\"),\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.KibanaAgentbuilderTool;\nimport com.pulumi.elasticstack.KibanaAgentbuilderToolArgs;\nimport com.pulumi.elasticstack.KibanaAgentbuilderAgent;\nimport com.pulumi.elasticstack.KibanaAgentbuilderAgentArgs;\nimport com.pulumi.elasticstack.KibanaSpace;\nimport com.pulumi.elasticstack.KibanaSpaceArgs;\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        // Tool referenced by the agent (minimal ES|QL example)\n        var myTool = new KibanaAgentbuilderTool(\"myTool\", KibanaAgentbuilderToolArgs.builder()\n            .toolId(\"example-doc-tool\")\n            .type(\"esql\")\n            .description(\"Read-only tool for the agent example\")\n            .configuration(serializeJson(\n                jsonObject(\n                    jsonProperty(\"query\", \"FROM logs-* | LIMIT 10\")\n                )))\n            .build());\n\n        // Basic agent with tools\n        var myAgent = new KibanaAgentbuilderAgent(\"myAgent\", KibanaAgentbuilderAgentArgs.builder()\n            .agentId(\"my-agent\")\n            .name(\"My Agent\")\n            .description(\"An example agent built with Agent Builder.\")\n            .avatarColor(\"#BFDBFF\")\n            .avatarSymbol(\"MA\")\n            .labels(            \n                \"example\",\n                \"demo\")\n            .instructions(\"You are a helpful assistant.\")\n            .tools(myTool.toolId())\n            .build());\n\n        // Agent in a non-default space\n        var mySpace = new KibanaSpace(\"mySpace\", KibanaSpaceArgs.builder()\n            .spaceId(\"my-space\")\n            .name(\"My Space\")\n            .build());\n\n        var spaceAgent = new KibanaAgentbuilderAgent(\"spaceAgent\", KibanaAgentbuilderAgentArgs.builder()\n            .agentId(\"space-agent\")\n            .spaceId(mySpace.spaceId())\n            .name(\"Space-Scoped Agent\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Tool referenced by the agent (minimal ES|QL example)\n  myTool:\n    type: elasticstack:KibanaAgentbuilderTool\n    name: my_tool\n    properties:\n      toolId: example-doc-tool\n      type: esql\n      description: Read-only tool for the agent example\n      configuration:\n        fn::toJSON:\n          query: FROM logs-* | LIMIT 10\n  # Basic agent with tools\n  myAgent:\n    type: elasticstack:KibanaAgentbuilderAgent\n    name: my_agent\n    properties:\n      agentId: my-agent\n      name: My Agent\n      description: An example agent built with Agent Builder.\n      avatarColor: '#BFDBFF'\n      avatarSymbol: MA\n      labels:\n        - example\n        - demo\n      instructions: You are a helpful assistant.\n      tools:\n        - ${myTool.toolId}\n  # Agent in a non-default space\n  mySpace:\n    type: elasticstack:KibanaSpace\n    name: my_space\n    properties:\n      spaceId: my-space\n      name: My Space\n  spaceAgent:\n    type: elasticstack:KibanaAgentbuilderAgent\n    name: space_agent\n    properties:\n      agentId: space-agent\n      spaceId: ${mySpace.spaceId}\n      name: Space-Scoped Agent\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nImport is supported using the agent ID:\n\n```sh\n$ pulumi import elasticstack:index/kibanaAgentbuilderAgent:KibanaAgentbuilderAgent my_agent <agent-id>\n```\n\n","inputProperties":{"agentId":{"description":"The agent ID.\n","type":"string"},"avatarColor":{"description":"Hex color code for the agent avatar (e.g., `#BFDBFF`).\n","type":"string"},"avatarSymbol":{"description":"Symbol or initials for the agent avatar (e.g., `SI`).\n","type":"string"},"description":{"description":"The agent description.\n","type":"string"},"instructions":{"description":"Optional system instructions that define the agent behavior.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderAgentKibanaConnection:KibanaAgentbuilderAgentKibanaConnection"},"type":"array"},"labels":{"description":"Set of labels for the agent.\n","items":{"type":"string"},"type":"array"},"name":{"description":"The agent name.\n","type":"string"},"skillIds":{"description":"Set of skill IDs to assign to the agent. Requires Elastic Stack 9.4.0 or later.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If not provided, the default space is used.\n","type":"string"},"tools":{"description":"Set of tool IDs that the agent can use.\n","items":{"type":"string"},"type":"array"}},"properties":{"agentId":{"description":"The agent ID.\n","type":"string"},"avatarColor":{"description":"Hex color code for the agent avatar (e.g., `#BFDBFF`).\n","type":"string"},"avatarSymbol":{"description":"Symbol or initials for the agent avatar (e.g., `SI`).\n","type":"string"},"description":{"description":"The agent description.\n","type":"string"},"instructions":{"description":"Optional system instructions that define the agent behavior.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderAgentKibanaConnection:KibanaAgentbuilderAgentKibanaConnection"},"type":"array"},"labels":{"description":"Set of labels for the agent.\n","items":{"type":"string"},"type":"array"},"name":{"description":"The agent name.\n","type":"string"},"skillIds":{"description":"Set of skill IDs to assign to the agent. Requires Elastic Stack 9.4.0 or later.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If not provided, the default space is used.\n","type":"string"},"tools":{"description":"Set of tool IDs that the agent can use.\n","items":{"type":"string"},"type":"array"}},"required":["agentId","avatarColor","avatarSymbol","name","spaceId"],"requiredInputs":["agentId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaAgentbuilderAgent resources.\n","properties":{"agentId":{"description":"The agent ID.\n","type":"string"},"avatarColor":{"description":"Hex color code for the agent avatar (e.g., `#BFDBFF`).\n","type":"string"},"avatarSymbol":{"description":"Symbol or initials for the agent avatar (e.g., `SI`).\n","type":"string"},"description":{"description":"The agent description.\n","type":"string"},"instructions":{"description":"Optional system instructions that define the agent behavior.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderAgentKibanaConnection:KibanaAgentbuilderAgentKibanaConnection"},"type":"array"},"labels":{"description":"Set of labels for the agent.\n","items":{"type":"string"},"type":"array"},"name":{"description":"The agent name.\n","type":"string"},"skillIds":{"description":"Set of skill IDs to assign to the agent. Requires Elastic Stack 9.4.0 or later.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If not provided, the default space is used.\n","type":"string"},"tools":{"description":"Set of tool IDs that the agent can use.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"type":"object"},"elasticstack:index/kibanaAgentbuilderSkill:KibanaAgentbuilderSkill":{"description":"Manages Kibana Agent Builder skills. Skills are reusable markdown instructions that agents can reference. See the [Agent Builder Skills API documentation](https://www.elastic.co/docs/api/doc/kibana/operation/operation-post-agent-builder-skills) for more information.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Minimal skill: just instructions content.\nconst summarizeIncident = new elasticstack.KibanaAgentbuilderSkill(\"summarize_incident\", {\n    skillId: \"summarize-incident\",\n    name: \"Summarize incident\",\n    description: \"Summarize an incident from the available signals.\",\n    content: `When asked to summarize an incident:\n\n1. Gather the most relevant alerts and logs.\n2. Identify the affected services and time window.\n3. Produce a concise, factual summary.\n`,\n});\n// Skill that references existing tools and includes ordered referenced content.\nconst incidentPlaybook = new elasticstack.KibanaAgentbuilderSkill(\"incident_playbook\", {\n    skillId: \"incident-playbook\",\n    name: \"Incident playbook\",\n    description: \"Run our standard incident response playbook.\",\n    content: `Follow the standard incident response playbook step by step.\nRefer to the runbook in referenced content for the exact sequence.\n`,\n    toolIds: [\"platform.core.index_explorer\"],\n    referencedContents: [\n        {\n            name: \"Runbook\",\n            relativePath: \"./runbooks/standard.md\",\n            content: `## Standard runbook\n\n1. Acknowledge alert.\n2. Page on-call.\n3. Open incident channel.`,\n        },\n        {\n            name: \"Glossary\",\n            relativePath: \"./reference/glossary.md\",\n            content: `## Glossary\n\nSLO: service-level objective.\nSLA: service-level agreement.`,\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Minimal skill: just instructions content.\nsummarize_incident = elasticstack.KibanaAgentbuilderSkill(\"summarize_incident\",\n    skill_id=\"summarize-incident\",\n    name=\"Summarize incident\",\n    description=\"Summarize an incident from the available signals.\",\n    content=\"\"\"When asked to summarize an incident:\n\n1. Gather the most relevant alerts and logs.\n2. Identify the affected services and time window.\n3. Produce a concise, factual summary.\n\"\"\")\n# Skill that references existing tools and includes ordered referenced content.\nincident_playbook = elasticstack.KibanaAgentbuilderSkill(\"incident_playbook\",\n    skill_id=\"incident-playbook\",\n    name=\"Incident playbook\",\n    description=\"Run our standard incident response playbook.\",\n    content=\"\"\"Follow the standard incident response playbook step by step.\nRefer to the runbook in referenced content for the exact sequence.\n\"\"\",\n    tool_ids=[\"platform.core.index_explorer\"],\n    referenced_contents=[\n        {\n            \"name\": \"Runbook\",\n            \"relative_path\": \"./runbooks/standard.md\",\n            \"content\": \"\"\"## Standard runbook\n\n1. Acknowledge alert.\n2. Page on-call.\n3. Open incident channel.\"\"\",\n        },\n        {\n            \"name\": \"Glossary\",\n            \"relative_path\": \"./reference/glossary.md\",\n            \"content\": \"\"\"## Glossary\n\nSLO: service-level objective.\nSLA: service-level agreement.\"\"\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    // Minimal skill: just instructions content.\n    var summarizeIncident = new Elasticstack.KibanaAgentbuilderSkill(\"summarize_incident\", new()\n    {\n        SkillId = \"summarize-incident\",\n        Name = \"Summarize incident\",\n        Description = \"Summarize an incident from the available signals.\",\n        Content = @\"When asked to summarize an incident:\n\n1. Gather the most relevant alerts and logs.\n2. Identify the affected services and time window.\n3. Produce a concise, factual summary.\n\",\n    });\n\n    // Skill that references existing tools and includes ordered referenced content.\n    var incidentPlaybook = new Elasticstack.KibanaAgentbuilderSkill(\"incident_playbook\", new()\n    {\n        SkillId = \"incident-playbook\",\n        Name = \"Incident playbook\",\n        Description = \"Run our standard incident response playbook.\",\n        Content = @\"Follow the standard incident response playbook step by step.\nRefer to the runbook in referenced content for the exact sequence.\n\",\n        ToolIds = new[]\n        {\n            \"platform.core.index_explorer\",\n        },\n        ReferencedContents = new[]\n        {\n            new Elasticstack.Inputs.KibanaAgentbuilderSkillReferencedContentArgs\n            {\n                Name = \"Runbook\",\n                RelativePath = \"./runbooks/standard.md\",\n                Content = @\"## Standard runbook\n\n1. Acknowledge alert.\n2. Page on-call.\n3. Open incident channel.\",\n            },\n            new Elasticstack.Inputs.KibanaAgentbuilderSkillReferencedContentArgs\n            {\n                Name = \"Glossary\",\n                RelativePath = \"./reference/glossary.md\",\n                Content = @\"## Glossary\n\nSLO: service-level objective.\nSLA: service-level agreement.\",\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// Minimal skill: just instructions content.\n\t\t_, err := elasticstack.NewKibanaAgentbuilderSkill(ctx, \"summarize_incident\", &elasticstack.KibanaAgentbuilderSkillArgs{\n\t\t\tSkillId:     pulumi.String(\"summarize-incident\"),\n\t\t\tName:        pulumi.String(\"Summarize incident\"),\n\t\t\tDescription: pulumi.String(\"Summarize an incident from the available signals.\"),\n\t\t\tContent: pulumi.String(`When asked to summarize an incident:\n\n1. Gather the most relevant alerts and logs.\n2. Identify the affected services and time window.\n3. Produce a concise, factual summary.\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Skill that references existing tools and includes ordered referenced content.\n\t\t_, err = elasticstack.NewKibanaAgentbuilderSkill(ctx, \"incident_playbook\", &elasticstack.KibanaAgentbuilderSkillArgs{\n\t\t\tSkillId:     pulumi.String(\"incident-playbook\"),\n\t\t\tName:        pulumi.String(\"Incident playbook\"),\n\t\t\tDescription: pulumi.String(\"Run our standard incident response playbook.\"),\n\t\t\tContent:     pulumi.String(\"Follow the standard incident response playbook step by step.\\nRefer to the runbook in referenced content for the exact sequence.\\n\"),\n\t\t\tToolIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"platform.core.index_explorer\"),\n\t\t\t},\n\t\t\tReferencedContents: elasticstack.KibanaAgentbuilderSkillReferencedContentArray{\n\t\t\t\t&elasticstack.KibanaAgentbuilderSkillReferencedContentArgs{\n\t\t\t\t\tName:         pulumi.String(\"Runbook\"),\n\t\t\t\t\tRelativePath: pulumi.String(\"./runbooks/standard.md\"),\n\t\t\t\t\tContent:      pulumi.String(\"## Standard runbook\\n\\n1. Acknowledge alert.\\n2. Page on-call.\\n3. Open incident channel.\"),\n\t\t\t\t},\n\t\t\t\t&elasticstack.KibanaAgentbuilderSkillReferencedContentArgs{\n\t\t\t\t\tName:         pulumi.String(\"Glossary\"),\n\t\t\t\t\tRelativePath: pulumi.String(\"./reference/glossary.md\"),\n\t\t\t\t\tContent:      pulumi.String(\"## Glossary\\n\\nSLO: service-level objective.\\nSLA: service-level agreement.\"),\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.KibanaAgentbuilderSkill;\nimport com.pulumi.elasticstack.KibanaAgentbuilderSkillArgs;\nimport com.pulumi.elasticstack.inputs.KibanaAgentbuilderSkillReferencedContentArgs;\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        // Minimal skill: just instructions content.\n        var summarizeIncident = new KibanaAgentbuilderSkill(\"summarizeIncident\", KibanaAgentbuilderSkillArgs.builder()\n            .skillId(\"summarize-incident\")\n            .name(\"Summarize incident\")\n            .description(\"Summarize an incident from the available signals.\")\n            .content(\"\"\"\nWhen asked to summarize an incident:\n\n1. Gather the most relevant alerts and logs.\n2. Identify the affected services and time window.\n3. Produce a concise, factual summary.\n            \"\"\")\n            .build());\n\n        // Skill that references existing tools and includes ordered referenced content.\n        var incidentPlaybook = new KibanaAgentbuilderSkill(\"incidentPlaybook\", KibanaAgentbuilderSkillArgs.builder()\n            .skillId(\"incident-playbook\")\n            .name(\"Incident playbook\")\n            .description(\"Run our standard incident response playbook.\")\n            .content(\"\"\"\nFollow the standard incident response playbook step by step.\nRefer to the runbook in referenced content for the exact sequence.\n            \"\"\")\n            .toolIds(\"platform.core.index_explorer\")\n            .referencedContents(            \n                KibanaAgentbuilderSkillReferencedContentArgs.builder()\n                    .name(\"Runbook\")\n                    .relativePath(\"./runbooks/standard.md\")\n                    .content(\"\"\"\n## Standard runbook\n\n1. Acknowledge alert.\n2. Page on-call.\n3. Open incident channel.                    \"\"\")\n                    .build(),\n                KibanaAgentbuilderSkillReferencedContentArgs.builder()\n                    .name(\"Glossary\")\n                    .relativePath(\"./reference/glossary.md\")\n                    .content(\"\"\"\n## Glossary\n\nSLO: service-level objective.\nSLA: service-level agreement.                    \"\"\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Minimal skill: just instructions content.\n  summarizeIncident:\n    type: elasticstack:KibanaAgentbuilderSkill\n    name: summarize_incident\n    properties:\n      skillId: summarize-incident\n      name: Summarize incident\n      description: Summarize an incident from the available signals.\n      content: |\n        When asked to summarize an incident:\n\n        1. Gather the most relevant alerts and logs.\n        2. Identify the affected services and time window.\n        3. Produce a concise, factual summary.\n  # Skill that references existing tools and includes ordered referenced content.\n  incidentPlaybook:\n    type: elasticstack:KibanaAgentbuilderSkill\n    name: incident_playbook\n    properties:\n      skillId: incident-playbook\n      name: Incident playbook\n      description: Run our standard incident response playbook.\n      content: |\n        Follow the standard incident response playbook step by step.\n        Refer to the runbook in referenced content for the exact sequence.\n      toolIds:\n        - platform.core.index_explorer\n      referencedContents:\n        - name: Runbook\n          relativePath: ./runbooks/standard.md\n          content: |-\n            ## Standard runbook\n\n            1. Acknowledge alert.\n            2. Page on-call.\n            3. Open incident channel.\n        - name: Glossary\n          relativePath: ./reference/glossary.md\n          content: |-\n            ## Glossary\n\n            SLO: service-level objective.\n            SLA: service-level agreement.\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"content":{"description":"Skill instructions content as markdown.\n","type":"string"},"description":{"description":"Description of what the skill does.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderSkillKibanaConnection:KibanaAgentbuilderSkillKibanaConnection"},"type":"array"},"name":{"description":"Human-readable name for the skill.\n","type":"string"},"referencedContents":{"description":"Ordered list of referenced-content entries. Up to 100 entries; order is preserved.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderSkillReferencedContent:KibanaAgentbuilderSkillReferencedContent"},"type":"array"},"skillId":{"description":"The skill ID. Required; the API does not auto-generate skill IDs.\n","type":"string"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"toolIds":{"description":"Set of tool IDs from the tool registry that this skill references.\n","items":{"type":"string"},"type":"array"}},"properties":{"content":{"description":"Skill instructions content as markdown.\n","type":"string"},"description":{"description":"Description of what the skill does.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderSkillKibanaConnection:KibanaAgentbuilderSkillKibanaConnection"},"type":"array"},"name":{"description":"Human-readable name for the skill.\n","type":"string"},"referencedContents":{"description":"Ordered list of referenced-content entries. Up to 100 entries; order is preserved.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderSkillReferencedContent:KibanaAgentbuilderSkillReferencedContent"},"type":"array"},"skillId":{"description":"The skill ID. Required; the API does not auto-generate skill IDs.\n","type":"string"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"toolIds":{"description":"Set of tool IDs from the tool registry that this skill references.\n","items":{"type":"string"},"type":"array"}},"required":["content","description","name","skillId","spaceId"],"requiredInputs":["content","description","skillId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaAgentbuilderSkill resources.\n","properties":{"content":{"description":"Skill instructions content as markdown.\n","type":"string"},"description":{"description":"Description of what the skill does.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderSkillKibanaConnection:KibanaAgentbuilderSkillKibanaConnection"},"type":"array"},"name":{"description":"Human-readable name for the skill.\n","type":"string"},"referencedContents":{"description":"Ordered list of referenced-content entries. Up to 100 entries; order is preserved.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderSkillReferencedContent:KibanaAgentbuilderSkillReferencedContent"},"type":"array"},"skillId":{"description":"The skill ID. Required; the API does not auto-generate skill IDs.\n","type":"string"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"toolIds":{"description":"Set of tool IDs from the tool registry that this skill references.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"type":"object"},"elasticstack:index/kibanaAgentbuilderTool:KibanaAgentbuilderTool":{"description":"Manages Kibana Agent Builder tools. Tools can be of type <span pulumi-lang-nodejs=\"`esql`\" pulumi-lang-dotnet=\"`Esql`\" pulumi-lang-go=\"`esql`\" pulumi-lang-python=\"`esql`\" pulumi-lang-yaml=\"`esql`\" pulumi-lang-java=\"`esql`\">`esql`</span>, <span pulumi-lang-nodejs=\"`indexSearch`\" pulumi-lang-dotnet=\"`IndexSearch`\" pulumi-lang-go=\"`indexSearch`\" pulumi-lang-python=\"`index_search`\" pulumi-lang-yaml=\"`indexSearch`\" pulumi-lang-java=\"`indexSearch`\">`index_search`</span>, or <span pulumi-lang-nodejs=\"`workflow`\" pulumi-lang-dotnet=\"`Workflow`\" pulumi-lang-go=\"`workflow`\" pulumi-lang-python=\"`workflow`\" pulumi-lang-yaml=\"`workflow`\" pulumi-lang-java=\"`workflow`\">`workflow`</span>. See the [Agent Builder API documentation](https://www.elastic.co/guide/en/kibana/current/agent-builder-api.html).\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// ES|QL tool\nconst esqlTool = new elasticstack.KibanaAgentbuilderTool(\"esql_tool\", {\n    toolId: \"my-esql-tool\",\n    type: \"esql\",\n    description: \"Analyzes trade data with time filtering\",\n    tags: [\n        \"analytics\",\n        \"finance\",\n    ],\n    configuration: JSON.stringify({\n        query: \"FROM financial_trades | WHERE execution_timestamp >= ?startTime | STATS trade_count=COUNT(*), avg_price=AVG(execution_price) BY symbol | SORT trade_count DESC | LIMIT ?limit\",\n        params: {\n            limit: {\n                type: \"integer\",\n                description: \"Maximum number of results to return\",\n            },\n            startTime: {\n                type: \"date\",\n                description: \"Start time for the analysis in ISO format\",\n            },\n        },\n    }),\n});\n// Workflow tool — references an agent builder workflow\nconst myWorkflow = new elasticstack.KibanaAgentbuilderWorkflow(\"my_workflow\", {configurationYaml: `name: My Workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\\\"hello world\\\\\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\\\"{{ inputs.message }}\\\\\"\n`});\nconst workflowTool = new elasticstack.KibanaAgentbuilderTool(\"workflow_tool\", {\n    toolId: \"my-workflow-tool\",\n    type: \"workflow\",\n    description: \"Exposes a workflow as an agent tool\",\n    configuration: pulumi.jsonStringify({\n        workflow_id: myWorkflow.workflowId,\n    }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\n# ES|QL tool\nesql_tool = elasticstack.KibanaAgentbuilderTool(\"esql_tool\",\n    tool_id=\"my-esql-tool\",\n    type=\"esql\",\n    description=\"Analyzes trade data with time filtering\",\n    tags=[\n        \"analytics\",\n        \"finance\",\n    ],\n    configuration=json.dumps({\n        \"query\": \"FROM financial_trades | WHERE execution_timestamp >= ?startTime | STATS trade_count=COUNT(*), avg_price=AVG(execution_price) BY symbol | SORT trade_count DESC | LIMIT ?limit\",\n        \"params\": {\n            \"limit\": {\n                \"type\": \"integer\",\n                \"description\": \"Maximum number of results to return\",\n            },\n            \"startTime\": {\n                \"type\": \"date\",\n                \"description\": \"Start time for the analysis in ISO format\",\n            },\n        },\n    }))\n# Workflow tool — references an agent builder workflow\nmy_workflow = elasticstack.KibanaAgentbuilderWorkflow(\"my_workflow\", configuration_yaml=\"\"\"name: My Workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\"hello world\\\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\"{{ inputs.message }}\\\"\n\"\"\")\nworkflow_tool = elasticstack.KibanaAgentbuilderTool(\"workflow_tool\",\n    tool_id=\"my-workflow-tool\",\n    type=\"workflow\",\n    description=\"Exposes a workflow as an agent tool\",\n    configuration=pulumi.Output.json_dumps({\n        \"workflow_id\": my_workflow.workflow_id,\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(() => \n{\n    // ES|QL tool\n    var esqlTool = new Elasticstack.KibanaAgentbuilderTool(\"esql_tool\", new()\n    {\n        ToolId = \"my-esql-tool\",\n        Type = \"esql\",\n        Description = \"Analyzes trade data with time filtering\",\n        Tags = new[]\n        {\n            \"analytics\",\n            \"finance\",\n        },\n        Configuration = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"query\"] = \"FROM financial_trades | WHERE execution_timestamp >= ?startTime | STATS trade_count=COUNT(*), avg_price=AVG(execution_price) BY symbol | SORT trade_count DESC | LIMIT ?limit\",\n            [\"params\"] = new Dictionary<string, object?>\n            {\n                [\"limit\"] = new Dictionary<string, object?>\n                {\n                    [\"type\"] = \"integer\",\n                    [\"description\"] = \"Maximum number of results to return\",\n                },\n                [\"startTime\"] = new Dictionary<string, object?>\n                {\n                    [\"type\"] = \"date\",\n                    [\"description\"] = \"Start time for the analysis in ISO format\",\n                },\n            },\n        }),\n    });\n\n    // Workflow tool — references an agent builder workflow\n    var myWorkflow = new Elasticstack.KibanaAgentbuilderWorkflow(\"my_workflow\", new()\n    {\n        ConfigurationYaml = @\"name: My Workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\"\"hello world\\\"\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\"\"{{ inputs.message }}\\\"\"\n\",\n    });\n\n    var workflowTool = new Elasticstack.KibanaAgentbuilderTool(\"workflow_tool\", new()\n    {\n        ToolId = \"my-workflow-tool\",\n        Type = \"workflow\",\n        Description = \"Exposes a workflow as an agent tool\",\n        Configuration = Output.JsonSerialize(Output.Create(new Dictionary<string, object?>\n        {\n            [\"workflow_id\"] = myWorkflow.WorkflowId,\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\"query\": \"FROM financial_trades | WHERE execution_timestamp >= ?startTime | STATS trade_count=COUNT(*), avg_price=AVG(execution_price) BY symbol | SORT trade_count DESC | LIMIT ?limit\",\n\t\t\t\"params\": map[string]interface{}{\n\t\t\t\t\"limit\": map[string]interface{}{\n\t\t\t\t\t\"type\":        \"integer\",\n\t\t\t\t\t\"description\": \"Maximum number of results to return\",\n\t\t\t\t},\n\t\t\t\t\"startTime\": map[string]interface{}{\n\t\t\t\t\t\"type\":        \"date\",\n\t\t\t\t\t\"description\": \"Start time for the analysis in ISO format\",\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// ES|QL tool\n\t\t_, err = elasticstack.NewKibanaAgentbuilderTool(ctx, \"esql_tool\", &elasticstack.KibanaAgentbuilderToolArgs{\n\t\t\tToolId:      pulumi.String(\"my-esql-tool\"),\n\t\t\tType:        pulumi.String(\"esql\"),\n\t\t\tDescription: pulumi.String(\"Analyzes trade data with time filtering\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"analytics\"),\n\t\t\t\tpulumi.String(\"finance\"),\n\t\t\t},\n\t\t\tConfiguration: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Workflow tool — references an agent builder workflow\n\t\tmyWorkflow, err := elasticstack.NewKibanaAgentbuilderWorkflow(ctx, \"my_workflow\", &elasticstack.KibanaAgentbuilderWorkflowArgs{\n\t\t\tConfigurationYaml: pulumi.String(`name: My Workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\"hello world\\\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\"{{ inputs.message }}\\\"\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = elasticstack.NewKibanaAgentbuilderTool(ctx, \"workflow_tool\", &elasticstack.KibanaAgentbuilderToolArgs{\n\t\t\tToolId:      pulumi.String(\"my-workflow-tool\"),\n\t\t\tType:        pulumi.String(\"workflow\"),\n\t\t\tDescription: pulumi.String(\"Exposes a workflow as an agent tool\"),\n\t\t\tConfiguration: myWorkflow.WorkflowId.ApplyT(func(workflowId string) (pulumi.String, error) {\n\t\t\t\tvar _zero pulumi.String\n\t\t\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\t\t\"workflow_id\": workflowId,\n\t\t\t\t})\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn _zero, err\n\t\t\t\t}\n\t\t\t\tjson1 := string(tmpJSON1)\n\t\t\t\treturn pulumi.String(json1), nil\n\t\t\t}).(pulumi.StringOutput),\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.KibanaAgentbuilderTool;\nimport com.pulumi.elasticstack.KibanaAgentbuilderToolArgs;\nimport com.pulumi.elasticstack.KibanaAgentbuilderWorkflow;\nimport com.pulumi.elasticstack.KibanaAgentbuilderWorkflowArgs;\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        // ES|QL tool\n        var esqlTool = new KibanaAgentbuilderTool(\"esqlTool\", KibanaAgentbuilderToolArgs.builder()\n            .toolId(\"my-esql-tool\")\n            .type(\"esql\")\n            .description(\"Analyzes trade data with time filtering\")\n            .tags(            \n                \"analytics\",\n                \"finance\")\n            .configuration(serializeJson(\n                jsonObject(\n                    jsonProperty(\"query\", \"FROM financial_trades | WHERE execution_timestamp >= ?startTime | STATS trade_count=COUNT(*), avg_price=AVG(execution_price) BY symbol | SORT trade_count DESC | LIMIT ?limit\"),\n                    jsonProperty(\"params\", jsonObject(\n                        jsonProperty(\"limit\", jsonObject(\n                            jsonProperty(\"type\", \"integer\"),\n                            jsonProperty(\"description\", \"Maximum number of results to return\")\n                        )),\n                        jsonProperty(\"startTime\", jsonObject(\n                            jsonProperty(\"type\", \"date\"),\n                            jsonProperty(\"description\", \"Start time for the analysis in ISO format\")\n                        ))\n                    ))\n                )))\n            .build());\n\n        // Workflow tool — references an agent builder workflow\n        var myWorkflow = new KibanaAgentbuilderWorkflow(\"myWorkflow\", KibanaAgentbuilderWorkflowArgs.builder()\n            .configurationYaml(\"\"\"\nname: My Workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\"hello world\\\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\"{{ inputs.message }}\\\"\n            \"\"\")\n            .build());\n\n        var workflowTool = new KibanaAgentbuilderTool(\"workflowTool\", KibanaAgentbuilderToolArgs.builder()\n            .toolId(\"my-workflow-tool\")\n            .type(\"workflow\")\n            .description(\"Exposes a workflow as an agent tool\")\n            .configuration(myWorkflow.workflowId().applyValue(_workflowId -> serializeJson(\n                jsonObject(\n                    jsonProperty(\"workflow_id\", _workflowId)\n                ))))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # ES|QL tool\n  esqlTool:\n    type: elasticstack:KibanaAgentbuilderTool\n    name: esql_tool\n    properties:\n      toolId: my-esql-tool\n      type: esql\n      description: Analyzes trade data with time filtering\n      tags:\n        - analytics\n        - finance\n      configuration:\n        fn::toJSON:\n          query: FROM financial_trades | WHERE execution_timestamp >= ?startTime | STATS trade_count=COUNT(*), avg_price=AVG(execution_price) BY symbol | SORT trade_count DESC | LIMIT ?limit\n          params:\n            limit:\n              type: integer\n              description: Maximum number of results to return\n            startTime:\n              type: date\n              description: Start time for the analysis in ISO format\n  # Workflow tool — references an agent builder workflow\n  myWorkflow:\n    type: elasticstack:KibanaAgentbuilderWorkflow\n    name: my_workflow\n    properties:\n      configurationYaml: |\n        name: My Workflow\n        enabled: true\n        triggers:\n          - type: manual\n        inputs:\n          - name: message\n            type: string\n            default: \\\"hello world\\\"\n        steps:\n          - name: hello_world_step\n            type: console\n            with:\n              message: \\\"{{ inputs.message }}\\\"\n  workflowTool:\n    type: elasticstack:KibanaAgentbuilderTool\n    name: workflow_tool\n    properties:\n      toolId: my-workflow-tool\n      type: workflow\n      description: Exposes a workflow as an agent tool\n      configuration:\n        fn::toJSON:\n          workflow_id: ${myWorkflow.workflowId}\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"configuration":{"description":"The tool configuration as a JSON-encoded string. Use `jsonencode()` to pass a configuration object.\n","type":"string"},"description":{"description":"The tool description.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderToolKibanaConnection:KibanaAgentbuilderToolKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"tags":{"description":"List of tags for the tool.\n","items":{"type":"string"},"type":"array"},"toolId":{"description":"The tool ID.\n","type":"string"},"type":{"description":"The tool type. Must be one of: [esql<span pulumi-lang-nodejs=\" indexSearch \" pulumi-lang-dotnet=\" IndexSearch \" pulumi-lang-go=\" indexSearch \" pulumi-lang-python=\" index_search \" pulumi-lang-yaml=\" indexSearch \" pulumi-lang-java=\" indexSearch \"> index_search </span>workflow mcp].\n","type":"string"}},"properties":{"configuration":{"description":"The tool configuration as a JSON-encoded string. Use `jsonencode()` to pass a configuration object.\n","type":"string"},"description":{"description":"The tool description.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderToolKibanaConnection:KibanaAgentbuilderToolKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"tags":{"description":"List of tags for the tool.\n","items":{"type":"string"},"type":"array"},"toolId":{"description":"The tool ID.\n","type":"string"},"type":{"description":"The tool type. Must be one of: [esql<span pulumi-lang-nodejs=\" indexSearch \" pulumi-lang-dotnet=\" IndexSearch \" pulumi-lang-go=\" indexSearch \" pulumi-lang-python=\" index_search \" pulumi-lang-yaml=\" indexSearch \" pulumi-lang-java=\" indexSearch \"> index_search </span>workflow mcp].\n","type":"string"}},"required":["configuration","spaceId","toolId","type"],"requiredInputs":["configuration","toolId","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaAgentbuilderTool resources.\n","properties":{"configuration":{"description":"The tool configuration as a JSON-encoded string. Use `jsonencode()` to pass a configuration object.\n","type":"string"},"description":{"description":"The tool description.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderToolKibanaConnection:KibanaAgentbuilderToolKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"tags":{"description":"List of tags for the tool.\n","items":{"type":"string"},"type":"array"},"toolId":{"description":"The tool ID.\n","type":"string"},"type":{"description":"The tool type. Must be one of: [esql<span pulumi-lang-nodejs=\" indexSearch \" pulumi-lang-dotnet=\" IndexSearch \" pulumi-lang-go=\" indexSearch \" pulumi-lang-python=\" index_search \" pulumi-lang-yaml=\" indexSearch \" pulumi-lang-java=\" indexSearch \"> index_search </span>workflow mcp].\n","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/kibanaAgentbuilderWorkflow:KibanaAgentbuilderWorkflow":{"description":"Manages Kibana Agent Builder workflows. See the [Workflows documentation](https://www.elastic.co/docs/explore-analyze/workflows) for more information.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myWorkflow = new elasticstack.KibanaAgentbuilderWorkflow(\"my_workflow\", {configurationYaml: `name: My Workflow\ndescription: An example workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\\\"hello world\\\\\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\\\"{{ inputs.message }}\\\\\"\n`});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmy_workflow = elasticstack.KibanaAgentbuilderWorkflow(\"my_workflow\", configuration_yaml=\"\"\"name: My Workflow\ndescription: An example workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\"hello world\\\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\"{{ inputs.message }}\\\"\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myWorkflow = new Elasticstack.KibanaAgentbuilderWorkflow(\"my_workflow\", new()\n    {\n        ConfigurationYaml = @\"name: My Workflow\ndescription: An example workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\"\"hello world\\\"\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\"\"{{ inputs.message }}\\\"\"\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.NewKibanaAgentbuilderWorkflow(ctx, \"my_workflow\", &elasticstack.KibanaAgentbuilderWorkflowArgs{\n\t\t\tConfigurationYaml: pulumi.String(`name: My Workflow\ndescription: An example workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\"hello world\\\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\"{{ inputs.message }}\\\"\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.KibanaAgentbuilderWorkflow;\nimport com.pulumi.elasticstack.KibanaAgentbuilderWorkflowArgs;\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 myWorkflow = new KibanaAgentbuilderWorkflow(\"myWorkflow\", KibanaAgentbuilderWorkflowArgs.builder()\n            .configurationYaml(\"\"\"\nname: My Workflow\ndescription: An example workflow\nenabled: true\ntriggers:\n  - type: manual\ninputs:\n  - name: message\n    type: string\n    default: \\\"hello world\\\"\nsteps:\n  - name: hello_world_step\n    type: console\n    with:\n      message: \\\"{{ inputs.message }}\\\"\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myWorkflow:\n    type: elasticstack:KibanaAgentbuilderWorkflow\n    name: my_workflow\n    properties:\n      configurationYaml: |\n        name: My Workflow\n        description: An example workflow\n        enabled: true\n        triggers:\n          - type: manual\n        inputs:\n          - name: message\n            type: string\n            default: \\\"hello world\\\"\n        steps:\n          - name: hello_world_step\n            type: console\n            with:\n              message: \\\"{{ inputs.message }}\\\"\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"configurationYaml":{"description":"The YAML configuration for the workflow.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderWorkflowKibanaConnection:KibanaAgentbuilderWorkflowKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"workflowId":{"description":"The workflow ID. If not provided, it will be auto-generated. IDs are `workflow-<UUIDv4>`.\n","type":"string"}},"properties":{"configurationYaml":{"description":"The YAML configuration for the workflow.\n","type":"string"},"description":{"description":"The workflow description (extracted from YAML configuration).\n","type":"string"},"enabled":{"description":"Whether the workflow is enabled (extracted from YAML configuration).\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderWorkflowKibanaConnection:KibanaAgentbuilderWorkflowKibanaConnection"},"type":"array"},"name":{"description":"The workflow name (extracted from YAML configuration).\n","type":"string"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"valid":{"description":"Whether the workflow configuration is valid.\n","type":"boolean"},"workflowId":{"description":"The workflow ID. If not provided, it will be auto-generated. IDs are `workflow-<UUIDv4>`.\n","type":"string"}},"required":["configurationYaml","description","enabled","name","spaceId","valid","workflowId"],"requiredInputs":["configurationYaml"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaAgentbuilderWorkflow resources.\n","properties":{"configurationYaml":{"description":"The YAML configuration for the workflow.\n","type":"string"},"description":{"description":"The workflow description (extracted from YAML configuration).\n","type":"string"},"enabled":{"description":"Whether the workflow is enabled (extracted from YAML configuration).\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAgentbuilderWorkflowKibanaConnection:KibanaAgentbuilderWorkflowKibanaConnection"},"type":"array"},"name":{"description":"The workflow name (extracted from YAML configuration).\n","type":"string"},"spaceId":{"description":"An identifier for the Kibana space. If not provided, the default space is used.\n","type":"string"},"valid":{"description":"Whether the workflow configuration is valid.\n","type":"boolean"},"workflowId":{"description":"The workflow ID. If not provided, it will be auto-generated. IDs are `workflow-<UUIDv4>`.\n","type":"string"}},"type":"object"},"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:** <span 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`\">`api_key`</span> authentication is only supported for alerting rule resources from version 8.8.0 of the Elastic stack. Using an <span 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`\">`api_key`</span> will result in an error message like:\n\n```\nCould not create API key - Unsupported scheme \"ApiKey\" for granting API Key\n```\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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: \">\",\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\": \">\",\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(() => \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<string, object?>\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\"] = \">\",\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\": \">\",\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\", &elasticstack.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\", \">\"),\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: '>'\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<!--End PulumiCodeChooser -->\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 <space id>/<rule id>\n```\n\n","inputProperties":{"actions":{"description":"An action that runs under defined conditions.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleAction:KibanaAlertingRuleAction"},"type":"array"},"alertDelay":{"description":"A number that indicates how many consecutive runs need to meet the rule conditions for an alert to occur.\n","type":"number"},"consumer":{"description":"The name of the application or feature that owns the rule.\n","type":"string"},"enabled":{"description":"Indicates if you want to run the rule on an interval basis.\n","type":"boolean"},"flapping":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleFlapping:KibanaAlertingRuleFlapping"},"interval":{"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","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleKibanaConnection:KibanaAlertingRuleKibanaConnection"},"type":"array"},"name":{"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","type":"string"},"notifyWhen":{"description":"Required until v8.6.0. Deprecated in v8.13.0. Use the <span 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`\">`notify_when`</span> property in the action <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> 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 <span 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`\">`notify_when`</span> values.\n","type":"string"},"params":{"description":"The rule parameters, which differ for each rule type.\n","type":"string"},"ruleId":{"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","type":"string"},"ruleTypeId":{"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","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"A list of tag names that are applied to the rule.\n","items":{"type":"string"},"type":"array"},"throttle":{"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 <span 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`\">`notify_when`</span> is `onThrottleInterval`. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific <span pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\">`throttle`</span> values.\n","type":"string"}},"properties":{"actions":{"description":"An action that runs under defined conditions.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleAction:KibanaAlertingRuleAction"},"type":"array"},"alertDelay":{"description":"A number that indicates how many consecutive runs need to meet the rule conditions for an alert to occur.\n","type":"number"},"consumer":{"description":"The name of the application or feature that owns the rule.\n","type":"string"},"enabled":{"description":"Indicates if you want to run the rule on an interval basis.\n","type":"boolean"},"flapping":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleFlapping:KibanaAlertingRuleFlapping"},"interval":{"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","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleKibanaConnection:KibanaAlertingRuleKibanaConnection"},"type":"array"},"lastExecutionDate":{"description":"Date of the last execution of this rule.","type":"string"},"lastExecutionStatus":{"description":"Status of the last execution of this rule.","type":"string"},"name":{"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","type":"string"},"notifyWhen":{"description":"Required until v8.6.0. Deprecated in v8.13.0. Use the <span 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`\">`notify_when`</span> property in the action <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> 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 <span 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`\">`notify_when`</span> values.\n","type":"string"},"params":{"description":"The rule parameters, which differ for each rule type.\n","type":"string"},"ruleId":{"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","type":"string"},"ruleTypeId":{"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","type":"string"},"scheduledTaskId":{"description":"ID of the scheduled task that will execute the alert.","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"A list of tag names that are applied to the rule.\n","items":{"type":"string"},"type":"array"},"throttle":{"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 <span 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`\">`notify_when`</span> is `onThrottleInterval`. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific <span pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\">`throttle`</span> values.\n","type":"string"}},"required":["alertDelay","consumer","enabled","flapping","interval","lastExecutionDate","lastExecutionStatus","name","notifyWhen","params","ruleId","ruleTypeId","scheduledTaskId","spaceId","throttle"],"requiredInputs":["consumer","interval","params","ruleTypeId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaAlertingRule resources.\n","properties":{"actions":{"description":"An action that runs under defined conditions.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleAction:KibanaAlertingRuleAction"},"type":"array"},"alertDelay":{"description":"A number that indicates how many consecutive runs need to meet the rule conditions for an alert to occur.\n","type":"number"},"consumer":{"description":"The name of the application or feature that owns the rule.\n","type":"string"},"enabled":{"description":"Indicates if you want to run the rule on an interval basis.\n","type":"boolean"},"flapping":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleFlapping:KibanaAlertingRuleFlapping"},"interval":{"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","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaAlertingRuleKibanaConnection:KibanaAlertingRuleKibanaConnection"},"type":"array"},"lastExecutionDate":{"description":"Date of the last execution of this rule.","type":"string"},"lastExecutionStatus":{"description":"Status of the last execution of this rule.","type":"string"},"name":{"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","type":"string"},"notifyWhen":{"description":"Required until v8.6.0. Deprecated in v8.13.0. Use the <span 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`\">`notify_when`</span> property in the action <span pulumi-lang-nodejs=\"`frequency`\" pulumi-lang-dotnet=\"`Frequency`\" pulumi-lang-go=\"`frequency`\" pulumi-lang-python=\"`frequency`\" pulumi-lang-yaml=\"`frequency`\" pulumi-lang-java=\"`frequency`\">`frequency`</span> 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 <span 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`\">`notify_when`</span> values.\n","type":"string"},"params":{"description":"The rule parameters, which differ for each rule type.\n","type":"string"},"ruleId":{"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","type":"string"},"ruleTypeId":{"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","type":"string"},"scheduledTaskId":{"description":"ID of the scheduled task that will execute the alert.","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"A list of tag names that are applied to the rule.\n","items":{"type":"string"},"type":"array"},"throttle":{"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 <span 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`\">`notify_when`</span> is `onThrottleInterval`. NOTE: This is a rule level property; if you update the rule in Kibana, it is automatically changed to use action-specific <span pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\">`throttle`</span> values.\n","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/kibanaDashboard:KibanaDashboard":{"description":"Manages Kibana [dashboards](https://www.elastic.co/docs/api/doc/kibana). This functionality is in technical preview and may be changed or removed in a future release.\n\n## See also\n\n- [Getting started with Kibana dashboards](https://www.terraform.io/docs/guides/kibana-dashboard-getting-started) — build your first dashboard step by step\n- [Kibana dashboard operations guide](https://www.terraform.io/docs/guides/kibana-dashboard-operations) — pinned controls, KPIs, and Discover sessions\n- [Advanced Kibana dashboard patterns](https://www.terraform.io/docs/guides/kibana-dashboard-advanced) — sections, ES|QL controls, and access control\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst myDashboard = new elasticstack.KibanaDashboard(\"my_dashboard\", {\n    title: \"My Dashboard\",\n    description: \"A dashboard showing key metrics\",\n    timeRange: {\n        from: \"now-15m\",\n        to: \"now\",\n    },\n    refreshInterval: {\n        pause: false,\n        value: 60000,\n    },\n    query: {\n        language: \"kql\",\n        text: \"status:success\",\n    },\n    tags: [\n        \"production\",\n        \"monitoring\",\n    ],\n});\n// Example with JSON query (mutually exclusive with query.text)\nconst myDashboardJson = new elasticstack.KibanaDashboard(\"my_dashboard_json\", {\n    title: \"My Dashboard with JSON Query\",\n    description: \"A dashboard with a structured query\",\n    timeRange: {\n        from: \"now-15m\",\n        to: \"now\",\n    },\n    refreshInterval: {\n        pause: false,\n        value: 60000,\n    },\n    query: {\n        language: \"kql\",\n        json: JSON.stringify({\n            bool: {\n                must: [{\n                    match: {\n                        status: \"success\",\n                    },\n                }],\n            },\n        }),\n    },\n    tags: [\n        \"production\",\n        \"monitoring\",\n    ],\n});\n// Classic Lens (`vis`) panel: typed by-value metric chart under `vis_config.by_value`.\nconst visTypedByValue = new elasticstack.KibanaDashboard(\"vis_typed_by_value\", {\n    title: \"Dashboard with vis (typed by-value)\",\n    description: \"Example: metric via vis_config.by_value.metric_chart_config\",\n    timeRange: {\n        from: \"now-15m\",\n        to: \"now\",\n    },\n    refreshInterval: {\n        pause: true,\n        value: 0,\n    },\n    query: {\n        language: \"kql\",\n        text: \"\",\n    },\n    panels: [{\n        type: \"vis\",\n        grid: {\n            x: 0,\n            y: 0,\n            w: 24,\n            h: 15,\n        },\n        visConfig: {\n            byValue: {\n                metricChartConfig: {\n                    dataSourceJson: JSON.stringify({\n                        type: \"data_view_spec\",\n                        index_pattern: \"metrics-*\",\n                        time_field: \"@timestamp\",\n                    }),\n                    query: {\n                        expression: \"\",\n                    },\n                    metrics: [{\n                        configJson: JSON.stringify({\n                            type: \"primary\",\n                            operation: \"count\",\n                            format: {\n                                type: \"number\",\n                            },\n                        }),\n                    }],\n                },\n            },\n        },\n    }],\n});\n// Markdown panel: `markdown_config` is a union — use `by_value` (inline content) or `by_reference`\n// (a library item via `ref_id`), not both. By-value panels require a `settings` object per the\n// Kibana API (link behavior via `open_links_in_new_tab`).\nconst markdownByValue = new elasticstack.KibanaDashboard(\"markdown_by_value\", {\n    title: \"Dashboard with markdown (by-value)\",\n    description: \"Example: markdown_config.by_value with settings\",\n    timeRange: {\n        from: \"now-15m\",\n        to: \"now\",\n    },\n    refreshInterval: {\n        pause: true,\n        value: 0,\n    },\n    query: {\n        language: \"kql\",\n        text: \"\",\n    },\n    panels: [{\n        type: \"markdown\",\n        grid: {\n            x: 0,\n            y: 0,\n            w: 24,\n            h: 10,\n        },\n        markdownConfig: {\n            byValue: {\n                content: `# Runbook\n\nLinks respect **open_links_in_new_tab**.`,\n                title: \"On-call notes\",\n                settings: {\n                    openLinksInNewTab: true,\n                },\n            },\n        },\n    }],\n});\n// By-reference links a markdown *library* item. Create that saved object out-of-band (Kibana UI\n// or API) and substitute a real id for `ref_id` — there is no dedicated Terraform resource for\n// markdown library items today.\nconst markdownByReference = new elasticstack.KibanaDashboard(\"markdown_by_reference\", {\n    title: \"Dashboard with markdown (by-reference)\",\n    description: \"Example: markdown_config.by_reference with a placeholder ref_id\",\n    timeRange: {\n        from: \"now-15m\",\n        to: \"now\",\n    },\n    refreshInterval: {\n        pause: true,\n        value: 0,\n    },\n    query: {\n        language: \"kql\",\n        text: \"\",\n    },\n    panels: [{\n        type: \"markdown\",\n        grid: {\n            x: 0,\n            y: 0,\n            w: 24,\n            h: 10,\n        },\n        markdownConfig: {\n            byReference: {\n                refId: \"REPLACE_WITH_MARKDOWN_LIBRARY_ITEM_ID\",\n                title: \"Title overlay for library markdown\",\n            },\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_elasticstack as elasticstack\n\nmy_dashboard = elasticstack.KibanaDashboard(\"my_dashboard\",\n    title=\"My Dashboard\",\n    description=\"A dashboard showing key metrics\",\n    time_range={\n        \"from_\": \"now-15m\",\n        \"to\": \"now\",\n    },\n    refresh_interval={\n        \"pause\": False,\n        \"value\": 60000,\n    },\n    query={\n        \"language\": \"kql\",\n        \"text\": \"status:success\",\n    },\n    tags=[\n        \"production\",\n        \"monitoring\",\n    ])\n# Example with JSON query (mutually exclusive with query.text)\nmy_dashboard_json = elasticstack.KibanaDashboard(\"my_dashboard_json\",\n    title=\"My Dashboard with JSON Query\",\n    description=\"A dashboard with a structured query\",\n    time_range={\n        \"from_\": \"now-15m\",\n        \"to\": \"now\",\n    },\n    refresh_interval={\n        \"pause\": False,\n        \"value\": 60000,\n    },\n    query={\n        \"language\": \"kql\",\n        \"json\": json.dumps({\n            \"bool\": {\n                \"must\": [{\n                    \"match\": {\n                        \"status\": \"success\",\n                    },\n                }],\n            },\n        }),\n    },\n    tags=[\n        \"production\",\n        \"monitoring\",\n    ])\n# Classic Lens (`vis`) panel: typed by-value metric chart under `vis_config.by_value`.\nvis_typed_by_value = elasticstack.KibanaDashboard(\"vis_typed_by_value\",\n    title=\"Dashboard with vis (typed by-value)\",\n    description=\"Example: metric via vis_config.by_value.metric_chart_config\",\n    time_range={\n        \"from_\": \"now-15m\",\n        \"to\": \"now\",\n    },\n    refresh_interval={\n        \"pause\": True,\n        \"value\": 0,\n    },\n    query={\n        \"language\": \"kql\",\n        \"text\": \"\",\n    },\n    panels=[{\n        \"type\": \"vis\",\n        \"grid\": {\n            \"x\": 0,\n            \"y\": 0,\n            \"w\": 24,\n            \"h\": 15,\n        },\n        \"vis_config\": {\n            \"by_value\": {\n                \"metric_chart_config\": {\n                    \"data_source_json\": json.dumps({\n                        \"type\": \"data_view_spec\",\n                        \"index_pattern\": \"metrics-*\",\n                        \"time_field\": \"@timestamp\",\n                    }),\n                    \"query\": {\n                        \"expression\": \"\",\n                    },\n                    \"metrics\": [{\n                        \"config_json\": json.dumps({\n                            \"type\": \"primary\",\n                            \"operation\": \"count\",\n                            \"format\": {\n                                \"type\": \"number\",\n                            },\n                        }),\n                    }],\n                },\n            },\n        },\n    }])\n# Markdown panel: `markdown_config` is a union — use `by_value` (inline content) or `by_reference`\n# (a library item via `ref_id`), not both. By-value panels require a `settings` object per the\n# Kibana API (link behavior via `open_links_in_new_tab`).\nmarkdown_by_value = elasticstack.KibanaDashboard(\"markdown_by_value\",\n    title=\"Dashboard with markdown (by-value)\",\n    description=\"Example: markdown_config.by_value with settings\",\n    time_range={\n        \"from_\": \"now-15m\",\n        \"to\": \"now\",\n    },\n    refresh_interval={\n        \"pause\": True,\n        \"value\": 0,\n    },\n    query={\n        \"language\": \"kql\",\n        \"text\": \"\",\n    },\n    panels=[{\n        \"type\": \"markdown\",\n        \"grid\": {\n            \"x\": 0,\n            \"y\": 0,\n            \"w\": 24,\n            \"h\": 10,\n        },\n        \"markdown_config\": {\n            \"by_value\": {\n                \"content\": \"\"\"# Runbook\n\nLinks respect **open_links_in_new_tab**.\"\"\",\n                \"title\": \"On-call notes\",\n                \"settings\": {\n                    \"open_links_in_new_tab\": True,\n                },\n            },\n        },\n    }])\n# By-reference links a markdown *library* item. Create that saved object out-of-band (Kibana UI\n# or API) and substitute a real id for `ref_id` — there is no dedicated Terraform resource for\n# markdown library items today.\nmarkdown_by_reference = elasticstack.KibanaDashboard(\"markdown_by_reference\",\n    title=\"Dashboard with markdown (by-reference)\",\n    description=\"Example: markdown_config.by_reference with a placeholder ref_id\",\n    time_range={\n        \"from_\": \"now-15m\",\n        \"to\": \"now\",\n    },\n    refresh_interval={\n        \"pause\": True,\n        \"value\": 0,\n    },\n    query={\n        \"language\": \"kql\",\n        \"text\": \"\",\n    },\n    panels=[{\n        \"type\": \"markdown\",\n        \"grid\": {\n            \"x\": 0,\n            \"y\": 0,\n            \"w\": 24,\n            \"h\": 10,\n        },\n        \"markdown_config\": {\n            \"by_reference\": {\n                \"ref_id\": \"REPLACE_WITH_MARKDOWN_LIBRARY_ITEM_ID\",\n                \"title\": \"Title overlay for library markdown\",\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(() => \n{\n    var myDashboard = new Elasticstack.KibanaDashboard(\"my_dashboard\", new()\n    {\n        Title = \"My Dashboard\",\n        Description = \"A dashboard showing key metrics\",\n        TimeRange = new Elasticstack.Inputs.KibanaDashboardTimeRangeArgs\n        {\n            From = \"now-15m\",\n            To = \"now\",\n        },\n        RefreshInterval = new Elasticstack.Inputs.KibanaDashboardRefreshIntervalArgs\n        {\n            Pause = false,\n            Value = 60000,\n        },\n        Query = new Elasticstack.Inputs.KibanaDashboardQueryArgs\n        {\n            Language = \"kql\",\n            Text = \"status:success\",\n        },\n        Tags = new[]\n        {\n            \"production\",\n            \"monitoring\",\n        },\n    });\n\n    // Example with JSON query (mutually exclusive with query.text)\n    var myDashboardJson = new Elasticstack.KibanaDashboard(\"my_dashboard_json\", new()\n    {\n        Title = \"My Dashboard with JSON Query\",\n        Description = \"A dashboard with a structured query\",\n        TimeRange = new Elasticstack.Inputs.KibanaDashboardTimeRangeArgs\n        {\n            From = \"now-15m\",\n            To = \"now\",\n        },\n        RefreshInterval = new Elasticstack.Inputs.KibanaDashboardRefreshIntervalArgs\n        {\n            Pause = false,\n            Value = 60000,\n        },\n        Query = new Elasticstack.Inputs.KibanaDashboardQueryArgs\n        {\n            Language = \"kql\",\n            Json = JsonSerializer.Serialize(new Dictionary<string, object?>\n            {\n                [\"bool\"] = new Dictionary<string, object?>\n                {\n                    [\"must\"] = new[]\n                    {\n                        new Dictionary<string, object?>\n                        {\n                            [\"match\"] = new Dictionary<string, object?>\n                            {\n                                [\"status\"] = \"success\",\n                            },\n                        },\n                    },\n                },\n            }),\n        },\n        Tags = new[]\n        {\n            \"production\",\n            \"monitoring\",\n        },\n    });\n\n    // Classic Lens (`vis`) panel: typed by-value metric chart under `vis_config.by_value`.\n    var visTypedByValue = new Elasticstack.KibanaDashboard(\"vis_typed_by_value\", new()\n    {\n        Title = \"Dashboard with vis (typed by-value)\",\n        Description = \"Example: metric via vis_config.by_value.metric_chart_config\",\n        TimeRange = new Elasticstack.Inputs.KibanaDashboardTimeRangeArgs\n        {\n            From = \"now-15m\",\n            To = \"now\",\n        },\n        RefreshInterval = new Elasticstack.Inputs.KibanaDashboardRefreshIntervalArgs\n        {\n            Pause = true,\n            Value = 0,\n        },\n        Query = new Elasticstack.Inputs.KibanaDashboardQueryArgs\n        {\n            Language = \"kql\",\n            Text = \"\",\n        },\n        Panels = new[]\n        {\n            new Elasticstack.Inputs.KibanaDashboardPanelArgs\n            {\n                Type = \"vis\",\n                Grid = new Elasticstack.Inputs.KibanaDashboardPanelGridArgs\n                {\n                    X = 0,\n                    Y = 0,\n                    W = 24,\n                    H = 15,\n                },\n                VisConfig = new Elasticstack.Inputs.KibanaDashboardPanelVisConfigArgs\n                {\n                    ByValue = new Elasticstack.Inputs.KibanaDashboardPanelVisConfigByValueArgs\n                    {\n                        MetricChartConfig = new Elasticstack.Inputs.KibanaDashboardPanelVisConfigByValueMetricChartConfigArgs\n                        {\n                            DataSourceJson = JsonSerializer.Serialize(new Dictionary<string, object?>\n                            {\n                                [\"type\"] = \"data_view_spec\",\n                                [\"index_pattern\"] = \"metrics-*\",\n                                [\"time_field\"] = \"@timestamp\",\n                            }),\n                            Query = new Elasticstack.Inputs.KibanaDashboardPanelVisConfigByValueMetricChartConfigQueryArgs\n                            {\n                                Expression = \"\",\n                            },\n                            Metrics = new[]\n                            {\n                                new Elasticstack.Inputs.KibanaDashboardPanelVisConfigByValueMetricChartConfigMetricArgs\n                                {\n                                    ConfigJson = JsonSerializer.Serialize(new Dictionary<string, object?>\n                                    {\n                                        [\"type\"] = \"primary\",\n                                        [\"operation\"] = \"count\",\n                                        [\"format\"] = new Dictionary<string, object?>\n                                        {\n                                            [\"type\"] = \"number\",\n                                        },\n                                    }),\n                                },\n                            },\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n    // Markdown panel: `markdown_config` is a union — use `by_value` (inline content) or `by_reference`\n    // (a library item via `ref_id`), not both. By-value panels require a `settings` object per the\n    // Kibana API (link behavior via `open_links_in_new_tab`).\n    var markdownByValue = new Elasticstack.KibanaDashboard(\"markdown_by_value\", new()\n    {\n        Title = \"Dashboard with markdown (by-value)\",\n        Description = \"Example: markdown_config.by_value with settings\",\n        TimeRange = new Elasticstack.Inputs.KibanaDashboardTimeRangeArgs\n        {\n            From = \"now-15m\",\n            To = \"now\",\n        },\n        RefreshInterval = new Elasticstack.Inputs.KibanaDashboardRefreshIntervalArgs\n        {\n            Pause = true,\n            Value = 0,\n        },\n        Query = new Elasticstack.Inputs.KibanaDashboardQueryArgs\n        {\n            Language = \"kql\",\n            Text = \"\",\n        },\n        Panels = new[]\n        {\n            new Elasticstack.Inputs.KibanaDashboardPanelArgs\n            {\n                Type = \"markdown\",\n                Grid = new Elasticstack.Inputs.KibanaDashboardPanelGridArgs\n                {\n                    X = 0,\n                    Y = 0,\n                    W = 24,\n                    H = 10,\n                },\n                MarkdownConfig = new Elasticstack.Inputs.KibanaDashboardPanelMarkdownConfigArgs\n                {\n                    ByValue = new Elasticstack.Inputs.KibanaDashboardPanelMarkdownConfigByValueArgs\n                    {\n                        Content = @\"# Runbook\n\nLinks respect **open_links_in_new_tab**.\",\n                        Title = \"On-call notes\",\n                        Settings = new Elasticstack.Inputs.KibanaDashboardPanelMarkdownConfigByValueSettingsArgs\n                        {\n                            OpenLinksInNewTab = true,\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n    // By-reference links a markdown *library* item. Create that saved object out-of-band (Kibana UI\n    // or API) and substitute a real id for `ref_id` — there is no dedicated Terraform resource for\n    // markdown library items today.\n    var markdownByReference = new Elasticstack.KibanaDashboard(\"markdown_by_reference\", new()\n    {\n        Title = \"Dashboard with markdown (by-reference)\",\n        Description = \"Example: markdown_config.by_reference with a placeholder ref_id\",\n        TimeRange = new Elasticstack.Inputs.KibanaDashboardTimeRangeArgs\n        {\n            From = \"now-15m\",\n            To = \"now\",\n        },\n        RefreshInterval = new Elasticstack.Inputs.KibanaDashboardRefreshIntervalArgs\n        {\n            Pause = true,\n            Value = 0,\n        },\n        Query = new Elasticstack.Inputs.KibanaDashboardQueryArgs\n        {\n            Language = \"kql\",\n            Text = \"\",\n        },\n        Panels = new[]\n        {\n            new Elasticstack.Inputs.KibanaDashboardPanelArgs\n            {\n                Type = \"markdown\",\n                Grid = new Elasticstack.Inputs.KibanaDashboardPanelGridArgs\n                {\n                    X = 0,\n                    Y = 0,\n                    W = 24,\n                    H = 10,\n                },\n                MarkdownConfig = new Elasticstack.Inputs.KibanaDashboardPanelMarkdownConfigArgs\n                {\n                    ByReference = new Elasticstack.Inputs.KibanaDashboardPanelMarkdownConfigByReferenceArgs\n                    {\n                        RefId = \"REPLACE_WITH_MARKDOWN_LIBRARY_ITEM_ID\",\n                        Title = \"Title overlay for library markdown\",\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_, err := elasticstack.NewKibanaDashboard(ctx, \"my_dashboard\", &elasticstack.KibanaDashboardArgs{\n\t\t\tTitle:       pulumi.String(\"My Dashboard\"),\n\t\t\tDescription: pulumi.String(\"A dashboard showing key metrics\"),\n\t\t\tTimeRange: &elasticstack.KibanaDashboardTimeRangeArgs{\n\t\t\t\tFrom: pulumi.String(\"now-15m\"),\n\t\t\t\tTo:   pulumi.String(\"now\"),\n\t\t\t},\n\t\t\tRefreshInterval: &elasticstack.KibanaDashboardRefreshIntervalArgs{\n\t\t\t\tPause: pulumi.Bool(false),\n\t\t\t\tValue: pulumi.Float64(60000),\n\t\t\t},\n\t\t\tQuery: &elasticstack.KibanaDashboardQueryArgs{\n\t\t\t\tLanguage: pulumi.String(\"kql\"),\n\t\t\t\tText:     pulumi.String(\"status:success\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t\tpulumi.String(\"monitoring\"),\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\"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\"match\": map[string]interface{}{\n\t\t\t\t\t\t\t\"status\": \"success\",\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\t// Example with JSON query (mutually exclusive with query.text)\n\t\t_, err = elasticstack.NewKibanaDashboard(ctx, \"my_dashboard_json\", &elasticstack.KibanaDashboardArgs{\n\t\t\tTitle:       pulumi.String(\"My Dashboard with JSON Query\"),\n\t\t\tDescription: pulumi.String(\"A dashboard with a structured query\"),\n\t\t\tTimeRange: &elasticstack.KibanaDashboardTimeRangeArgs{\n\t\t\t\tFrom: pulumi.String(\"now-15m\"),\n\t\t\t\tTo:   pulumi.String(\"now\"),\n\t\t\t},\n\t\t\tRefreshInterval: &elasticstack.KibanaDashboardRefreshIntervalArgs{\n\t\t\t\tPause: pulumi.Bool(false),\n\t\t\t\tValue: pulumi.Float64(60000),\n\t\t\t},\n\t\t\tQuery: &elasticstack.KibanaDashboardQueryArgs{\n\t\t\t\tLanguage: pulumi.String(\"kql\"),\n\t\t\t\tJson:     pulumi.String(json0),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"production\"),\n\t\t\t\tpulumi.String(\"monitoring\"),\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\"type\":          \"data_view_spec\",\n\t\t\t\"index_pattern\": \"metrics-*\",\n\t\t\t\"time_field\":    \"@timestamp\",\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\"type\":      \"primary\",\n\t\t\t\"operation\": \"count\",\n\t\t\t\"format\": map[string]interface{}{\n\t\t\t\t\"type\": \"number\",\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\t// Classic Lens (`vis`) panel: typed by-value metric chart under `vis_config.by_value`.\n\t\t_, err = elasticstack.NewKibanaDashboard(ctx, \"vis_typed_by_value\", &elasticstack.KibanaDashboardArgs{\n\t\t\tTitle:       pulumi.String(\"Dashboard with vis (typed by-value)\"),\n\t\t\tDescription: pulumi.String(\"Example: metric via vis_config.by_value.metric_chart_config\"),\n\t\t\tTimeRange: &elasticstack.KibanaDashboardTimeRangeArgs{\n\t\t\t\tFrom: pulumi.String(\"now-15m\"),\n\t\t\t\tTo:   pulumi.String(\"now\"),\n\t\t\t},\n\t\t\tRefreshInterval: &elasticstack.KibanaDashboardRefreshIntervalArgs{\n\t\t\t\tPause: pulumi.Bool(true),\n\t\t\t\tValue: pulumi.Float64(0),\n\t\t\t},\n\t\t\tQuery: &elasticstack.KibanaDashboardQueryArgs{\n\t\t\t\tLanguage: pulumi.String(\"kql\"),\n\t\t\t\tText:     pulumi.String(\"\"),\n\t\t\t},\n\t\t\tPanels: elasticstack.KibanaDashboardPanelArray{\n\t\t\t\t&elasticstack.KibanaDashboardPanelArgs{\n\t\t\t\t\tType: pulumi.String(\"vis\"),\n\t\t\t\t\tGrid: &elasticstack.KibanaDashboardPanelGridArgs{\n\t\t\t\t\t\tX: pulumi.Float64(0),\n\t\t\t\t\t\tY: pulumi.Float64(0),\n\t\t\t\t\t\tW: pulumi.Float64(24),\n\t\t\t\t\t\tH: pulumi.Float64(15),\n\t\t\t\t\t},\n\t\t\t\t\tVisConfig: &elasticstack.KibanaDashboardPanelVisConfigArgs{\n\t\t\t\t\t\tByValue: &elasticstack.KibanaDashboardPanelVisConfigByValueArgs{\n\t\t\t\t\t\t\tMetricChartConfig: &elasticstack.KibanaDashboardPanelVisConfigByValueMetricChartConfigArgs{\n\t\t\t\t\t\t\t\tDataSourceJson: pulumi.String(json1),\n\t\t\t\t\t\t\t\tQuery: &elasticstack.KibanaDashboardPanelVisConfigByValueMetricChartConfigQueryArgs{\n\t\t\t\t\t\t\t\t\tExpression: pulumi.String(\"\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMetrics: elasticstack.KibanaDashboardPanelVisConfigByValueMetricChartConfigMetricArray{\n\t\t\t\t\t\t\t\t\t&elasticstack.KibanaDashboardPanelVisConfigByValueMetricChartConfigMetricArgs{\n\t\t\t\t\t\t\t\t\t\tConfigJson: pulumi.String(json2),\n\t\t\t\t\t\t\t\t\t},\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},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Markdown panel: `markdown_config` is a union — use `by_value` (inline content) or `by_reference`\n\t\t// (a library item via `ref_id`), not both. By-value panels require a `settings` object per the\n\t\t// Kibana API (link behavior via `open_links_in_new_tab`).\n\t\t_, err = elasticstack.NewKibanaDashboard(ctx, \"markdown_by_value\", &elasticstack.KibanaDashboardArgs{\n\t\t\tTitle:       pulumi.String(\"Dashboard with markdown (by-value)\"),\n\t\t\tDescription: pulumi.String(\"Example: markdown_config.by_value with settings\"),\n\t\t\tTimeRange: &elasticstack.KibanaDashboardTimeRangeArgs{\n\t\t\t\tFrom: pulumi.String(\"now-15m\"),\n\t\t\t\tTo:   pulumi.String(\"now\"),\n\t\t\t},\n\t\t\tRefreshInterval: &elasticstack.KibanaDashboardRefreshIntervalArgs{\n\t\t\t\tPause: pulumi.Bool(true),\n\t\t\t\tValue: pulumi.Float64(0),\n\t\t\t},\n\t\t\tQuery: &elasticstack.KibanaDashboardQueryArgs{\n\t\t\t\tLanguage: pulumi.String(\"kql\"),\n\t\t\t\tText:     pulumi.String(\"\"),\n\t\t\t},\n\t\t\tPanels: elasticstack.KibanaDashboardPanelArray{\n\t\t\t\t&elasticstack.KibanaDashboardPanelArgs{\n\t\t\t\t\tType: pulumi.String(\"markdown\"),\n\t\t\t\t\tGrid: &elasticstack.KibanaDashboardPanelGridArgs{\n\t\t\t\t\t\tX: pulumi.Float64(0),\n\t\t\t\t\t\tY: pulumi.Float64(0),\n\t\t\t\t\t\tW: pulumi.Float64(24),\n\t\t\t\t\t\tH: pulumi.Float64(10),\n\t\t\t\t\t},\n\t\t\t\t\tMarkdownConfig: &elasticstack.KibanaDashboardPanelMarkdownConfigArgs{\n\t\t\t\t\t\tByValue: &elasticstack.KibanaDashboardPanelMarkdownConfigByValueArgs{\n\t\t\t\t\t\t\tContent: pulumi.String(\"# Runbook\\n\\nLinks respect **open_links_in_new_tab**.\"),\n\t\t\t\t\t\t\tTitle:   pulumi.String(\"On-call notes\"),\n\t\t\t\t\t\t\tSettings: &elasticstack.KibanaDashboardPanelMarkdownConfigByValueSettingsArgs{\n\t\t\t\t\t\t\t\tOpenLinksInNewTab: pulumi.Bool(true),\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\t// By-reference links a markdown *library* item. Create that saved object out-of-band (Kibana UI\n\t\t// or API) and substitute a real id for `ref_id` — there is no dedicated Terraform resource for\n\t\t// markdown library items today.\n\t\t_, err = elasticstack.NewKibanaDashboard(ctx, \"markdown_by_reference\", &elasticstack.KibanaDashboardArgs{\n\t\t\tTitle:       pulumi.String(\"Dashboard with markdown (by-reference)\"),\n\t\t\tDescription: pulumi.String(\"Example: markdown_config.by_reference with a placeholder ref_id\"),\n\t\t\tTimeRange: &elasticstack.KibanaDashboardTimeRangeArgs{\n\t\t\t\tFrom: pulumi.String(\"now-15m\"),\n\t\t\t\tTo:   pulumi.String(\"now\"),\n\t\t\t},\n\t\t\tRefreshInterval: &elasticstack.KibanaDashboardRefreshIntervalArgs{\n\t\t\t\tPause: pulumi.Bool(true),\n\t\t\t\tValue: pulumi.Float64(0),\n\t\t\t},\n\t\t\tQuery: &elasticstack.KibanaDashboardQueryArgs{\n\t\t\t\tLanguage: pulumi.String(\"kql\"),\n\t\t\t\tText:     pulumi.String(\"\"),\n\t\t\t},\n\t\t\tPanels: elasticstack.KibanaDashboardPanelArray{\n\t\t\t\t&elasticstack.KibanaDashboardPanelArgs{\n\t\t\t\t\tType: pulumi.String(\"markdown\"),\n\t\t\t\t\tGrid: &elasticstack.KibanaDashboardPanelGridArgs{\n\t\t\t\t\t\tX: pulumi.Float64(0),\n\t\t\t\t\t\tY: pulumi.Float64(0),\n\t\t\t\t\t\tW: pulumi.Float64(24),\n\t\t\t\t\t\tH: pulumi.Float64(10),\n\t\t\t\t\t},\n\t\t\t\t\tMarkdownConfig: &elasticstack.KibanaDashboardPanelMarkdownConfigArgs{\n\t\t\t\t\t\tByReference: &elasticstack.KibanaDashboardPanelMarkdownConfigByReferenceArgs{\n\t\t\t\t\t\t\tRefId: pulumi.String(\"REPLACE_WITH_MARKDOWN_LIBRARY_ITEM_ID\"),\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Title overlay for library markdown\"),\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.KibanaDashboard;\nimport com.pulumi.elasticstack.KibanaDashboardArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardTimeRangeArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardRefreshIntervalArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardQueryArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelGridArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelVisConfigArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelVisConfigByValueArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelVisConfigByValueMetricChartConfigArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelVisConfigByValueMetricChartConfigQueryArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelMarkdownConfigArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelMarkdownConfigByValueArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelMarkdownConfigByValueSettingsArgs;\nimport com.pulumi.elasticstack.inputs.KibanaDashboardPanelMarkdownConfigByReferenceArgs;\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 myDashboard = new KibanaDashboard(\"myDashboard\", KibanaDashboardArgs.builder()\n            .title(\"My Dashboard\")\n            .description(\"A dashboard showing key metrics\")\n            .timeRange(KibanaDashboardTimeRangeArgs.builder()\n                .from(\"now-15m\")\n                .to(\"now\")\n                .build())\n            .refreshInterval(KibanaDashboardRefreshIntervalArgs.builder()\n                .pause(false)\n                .value(60000.0)\n                .build())\n            .query(KibanaDashboardQueryArgs.builder()\n                .language(\"kql\")\n                .text(\"status:success\")\n                .build())\n            .tags(            \n                \"production\",\n                \"monitoring\")\n            .build());\n\n        // Example with JSON query (mutually exclusive with query.text)\n        var myDashboardJson = new KibanaDashboard(\"myDashboardJson\", KibanaDashboardArgs.builder()\n            .title(\"My Dashboard with JSON Query\")\n            .description(\"A dashboard with a structured query\")\n            .timeRange(KibanaDashboardTimeRangeArgs.builder()\n                .from(\"now-15m\")\n                .to(\"now\")\n                .build())\n            .refreshInterval(KibanaDashboardRefreshIntervalArgs.builder()\n                .pause(false)\n                .value(60000.0)\n                .build())\n            .query(KibanaDashboardQueryArgs.builder()\n                .language(\"kql\")\n                .json(serializeJson(\n                    jsonObject(\n                        jsonProperty(\"bool\", jsonObject(\n                            jsonProperty(\"must\", jsonArray(jsonObject(\n                                jsonProperty(\"match\", jsonObject(\n                                    jsonProperty(\"status\", \"success\")\n                                ))\n                            )))\n                        ))\n                    )))\n                .build())\n            .tags(            \n                \"production\",\n                \"monitoring\")\n            .build());\n\n        // Classic Lens (`vis`) panel: typed by-value metric chart under `vis_config.by_value`.\n        var visTypedByValue = new KibanaDashboard(\"visTypedByValue\", KibanaDashboardArgs.builder()\n            .title(\"Dashboard with vis (typed by-value)\")\n            .description(\"Example: metric via vis_config.by_value.metric_chart_config\")\n            .timeRange(KibanaDashboardTimeRangeArgs.builder()\n                .from(\"now-15m\")\n                .to(\"now\")\n                .build())\n            .refreshInterval(KibanaDashboardRefreshIntervalArgs.builder()\n                .pause(true)\n                .value(0.0)\n                .build())\n            .query(KibanaDashboardQueryArgs.builder()\n                .language(\"kql\")\n                .text(\"\")\n                .build())\n            .panels(KibanaDashboardPanelArgs.builder()\n                .type(\"vis\")\n                .grid(KibanaDashboardPanelGridArgs.builder()\n                    .x(0.0)\n                    .y(0.0)\n                    .w(24.0)\n                    .h(15.0)\n                    .build())\n                .visConfig(KibanaDashboardPanelVisConfigArgs.builder()\n                    .byValue(KibanaDashboardPanelVisConfigByValueArgs.builder()\n                        .metricChartConfig(KibanaDashboardPanelVisConfigByValueMetricChartConfigArgs.builder()\n                            .dataSourceJson(serializeJson(\n                                jsonObject(\n                                    jsonProperty(\"type\", \"data_view_spec\"),\n                                    jsonProperty(\"index_pattern\", \"metrics-*\"),\n                                    jsonProperty(\"time_field\", \"@timestamp\")\n                                )))\n                            .query(KibanaDashboardPanelVisConfigByValueMetricChartConfigQueryArgs.builder()\n                                .expression(\"\")\n                                .build())\n                            .metrics(KibanaDashboardPanelVisConfigByValueMetricChartConfigMetricArgs.builder()\n                                .configJson(serializeJson(\n                                    jsonObject(\n                                        jsonProperty(\"type\", \"primary\"),\n                                        jsonProperty(\"operation\", \"count\"),\n                                        jsonProperty(\"format\", jsonObject(\n                                            jsonProperty(\"type\", \"number\")\n                                        ))\n                                    )))\n                                .build())\n                            .build())\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n        // Markdown panel: `markdown_config` is a union — use `by_value` (inline content) or `by_reference`\n        // (a library item via `ref_id`), not both. By-value panels require a `settings` object per the\n        // Kibana API (link behavior via `open_links_in_new_tab`).\n        var markdownByValue = new KibanaDashboard(\"markdownByValue\", KibanaDashboardArgs.builder()\n            .title(\"Dashboard with markdown (by-value)\")\n            .description(\"Example: markdown_config.by_value with settings\")\n            .timeRange(KibanaDashboardTimeRangeArgs.builder()\n                .from(\"now-15m\")\n                .to(\"now\")\n                .build())\n            .refreshInterval(KibanaDashboardRefreshIntervalArgs.builder()\n                .pause(true)\n                .value(0.0)\n                .build())\n            .query(KibanaDashboardQueryArgs.builder()\n                .language(\"kql\")\n                .text(\"\")\n                .build())\n            .panels(KibanaDashboardPanelArgs.builder()\n                .type(\"markdown\")\n                .grid(KibanaDashboardPanelGridArgs.builder()\n                    .x(0.0)\n                    .y(0.0)\n                    .w(24.0)\n                    .h(10.0)\n                    .build())\n                .markdownConfig(KibanaDashboardPanelMarkdownConfigArgs.builder()\n                    .byValue(KibanaDashboardPanelMarkdownConfigByValueArgs.builder()\n                        .content(\"\"\"\n# Runbook\n\nLinks respect **open_links_in_new_tab**.                        \"\"\")\n                        .title(\"On-call notes\")\n                        .settings(KibanaDashboardPanelMarkdownConfigByValueSettingsArgs.builder()\n                            .openLinksInNewTab(true)\n                            .build())\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n        // By-reference links a markdown *library* item. Create that saved object out-of-band (Kibana UI\n        // or API) and substitute a real id for `ref_id` — there is no dedicated Terraform resource for\n        // markdown library items today.\n        var markdownByReference = new KibanaDashboard(\"markdownByReference\", KibanaDashboardArgs.builder()\n            .title(\"Dashboard with markdown (by-reference)\")\n            .description(\"Example: markdown_config.by_reference with a placeholder ref_id\")\n            .timeRange(KibanaDashboardTimeRangeArgs.builder()\n                .from(\"now-15m\")\n                .to(\"now\")\n                .build())\n            .refreshInterval(KibanaDashboardRefreshIntervalArgs.builder()\n                .pause(true)\n                .value(0.0)\n                .build())\n            .query(KibanaDashboardQueryArgs.builder()\n                .language(\"kql\")\n                .text(\"\")\n                .build())\n            .panels(KibanaDashboardPanelArgs.builder()\n                .type(\"markdown\")\n                .grid(KibanaDashboardPanelGridArgs.builder()\n                    .x(0.0)\n                    .y(0.0)\n                    .w(24.0)\n                    .h(10.0)\n                    .build())\n                .markdownConfig(KibanaDashboardPanelMarkdownConfigArgs.builder()\n                    .byReference(KibanaDashboardPanelMarkdownConfigByReferenceArgs.builder()\n                        .refId(\"REPLACE_WITH_MARKDOWN_LIBRARY_ITEM_ID\")\n                        .title(\"Title overlay for library markdown\")\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myDashboard:\n    type: elasticstack:KibanaDashboard\n    name: my_dashboard\n    properties:\n      title: My Dashboard\n      description: A dashboard showing key metrics\n      timeRange:\n        from: now-15m\n        to: now\n      refreshInterval:\n        pause: false\n        value: 60000\n      query:\n        language: kql\n        text: status:success\n      tags:\n        - production\n        - monitoring\n  # Example with JSON query (mutually exclusive with query.text)\n  myDashboardJson:\n    type: elasticstack:KibanaDashboard\n    name: my_dashboard_json\n    properties:\n      title: My Dashboard with JSON Query\n      description: A dashboard with a structured query\n      timeRange:\n        from: now-15m\n        to: now\n      refreshInterval:\n        pause: false\n        value: 60000\n      query:\n        language: kql\n        json:\n          fn::toJSON:\n            bool:\n              must:\n                - match:\n                    status: success\n      tags:\n        - production\n        - monitoring\n  # Classic Lens (`vis`) panel: typed by-value metric chart under `vis_config.by_value`.\n  visTypedByValue:\n    type: elasticstack:KibanaDashboard\n    name: vis_typed_by_value\n    properties:\n      title: Dashboard with vis (typed by-value)\n      description: 'Example: metric via vis_config.by_value.metric_chart_config'\n      timeRange:\n        from: now-15m\n        to: now\n      refreshInterval:\n        pause: true\n        value: 0\n      query:\n        language: kql\n        text: \"\"\n      panels:\n        - type: vis\n          grid:\n            x: 0\n            y: 0\n            w: 24\n            h: 15\n          visConfig:\n            byValue:\n              metricChartConfig:\n                dataSourceJson:\n                  fn::toJSON:\n                    type: data_view_spec\n                    index_pattern: metrics-*\n                    time_field: '@timestamp'\n                query:\n                  expression: \"\"\n                metrics:\n                  - configJson:\n                      fn::toJSON:\n                        type: primary\n                        operation: count\n                        format:\n                          type: number\n  # Markdown panel: `markdown_config` is a union — use `by_value` (inline content) or `by_reference`\n  # (a library item via `ref_id`), not both. By-value panels require a `settings` object per the\n  # Kibana API (link behavior via `open_links_in_new_tab`).\n  markdownByValue:\n    type: elasticstack:KibanaDashboard\n    name: markdown_by_value\n    properties:\n      title: Dashboard with markdown (by-value)\n      description: 'Example: markdown_config.by_value with settings'\n      timeRange:\n        from: now-15m\n        to: now\n      refreshInterval:\n        pause: true\n        value: 0\n      query:\n        language: kql\n        text: \"\"\n      panels:\n        - type: markdown\n          grid:\n            x: 0\n            y: 0\n            w: 24\n            h: 10\n          markdownConfig:\n            byValue:\n              content: |-\n                # Runbook\n\n                Links respect **open_links_in_new_tab**.\n              title: On-call notes\n              settings:\n                openLinksInNewTab: true\n  # By-reference links a markdown *library* item. Create that saved object out-of-band (Kibana UI\n  # or API) and substitute a real id for `ref_id` — there is no dedicated Terraform resource for\n  # markdown library items today.\n  markdownByReference:\n    type: elasticstack:KibanaDashboard\n    name: markdown_by_reference\n    properties:\n      title: Dashboard with markdown (by-reference)\n      description: 'Example: markdown_config.by_reference with a placeholder ref_id'\n      timeRange:\n        from: now-15m\n        to: now\n      refreshInterval:\n        pause: true\n        value: 0\n      query:\n        language: kql\n        text: \"\"\n      panels:\n        - type: markdown\n          grid:\n            x: 0\n            y: 0\n            w: 24\n            h: 10\n          markdownConfig:\n            byReference:\n              refId: REPLACE_WITH_MARKDOWN_LIBRARY_ITEM_ID\n              title: Title overlay for library markdown\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nThe `pulumi import` command can be used, for example:\n\nDashboard can be imported using the composite ID format: <space_id>/<dashboard_id>\n\nFor example, to import a dashboard with ID \"my-dashboard-id\" from the default space:\n\n```sh\n$ pulumi import elasticstack:index/kibanaDashboard:KibanaDashboard my_dashboard default/my-dashboard-id\n```\n\n","inputProperties":{"accessControl":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardAccessControl:KibanaDashboardAccessControl","description":"Access control parameters for the dashboard.\n"},"description":{"description":"A short description of the dashboard.\n","type":"string"},"filters":{"description":"Dashboard-level saved filter pills (`kbn-dashboard-data.filters` in the Kibana Dashboard API). Each element is one filter in display order. The JSON shape for each <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> matches the dashboard filters discriminated union (including DSL and spatial variants), consistent with per-panel <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> on Lens chart blocks.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardFilter:KibanaDashboardFilter"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardKibanaConnection:KibanaDashboardKibanaConnection"},"type":"array"},"options":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardOptions:KibanaDashboardOptions","description":"Display options for the dashboard.\n"},"panels":{"description":"The panels to display in the dashboard.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanel:KibanaDashboardPanel"},"type":"array"},"pinnedPanels":{"description":"Ordered dashboard-level pinned controls (Kibana’s control bar above the grid). Each element uses the same typed `*_control_config` shapes as `panels[]` for these control kinds, without a <span pulumi-lang-nodejs=\"`grid`\" pulumi-lang-dotnet=\"`Grid`\" pulumi-lang-go=\"`grid`\" pulumi-lang-python=\"`grid`\" pulumi-lang-yaml=\"`grid`\" pulumi-lang-java=\"`grid`\">`grid`</span> block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanel:KibanaDashboardPinnedPanel"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardQuery:KibanaDashboardQuery","description":"Dashboard-level query. Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\">`query`</span> object: <span pulumi-lang-nodejs=\"`language`\" pulumi-lang-dotnet=\"`Language`\" pulumi-lang-go=\"`language`\" pulumi-lang-python=\"`language`\" pulumi-lang-yaml=\"`language`\" pulumi-lang-java=\"`language`\">`language`</span> plus exactly one of <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span> (string branch) or <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span> (object branch).\n"},"refreshInterval":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardRefreshInterval:KibanaDashboardRefreshInterval","description":"Auto-refresh settings for the dashboard. Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`refreshInterval`\" pulumi-lang-dotnet=\"`RefreshInterval`\" pulumi-lang-go=\"`refreshInterval`\" pulumi-lang-python=\"`refresh_interval`\" pulumi-lang-yaml=\"`refreshInterval`\" pulumi-lang-java=\"`refreshInterval`\">`refresh_interval`</span> object.\n"},"sections":{"description":"Sections organize panels into collapsible groups. This is a technical preview feature.","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSection:KibanaDashboardSection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.","type":"string"},"tags":{"description":"An array of tag IDs applied to this dashboard.","items":{"type":"string"},"type":"array"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardTimeRange:KibanaDashboardTimeRange","description":"Dashboard time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>). Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> object.\n"},"title":{"description":"A human-readable title for the dashboard.\n","type":"string"}},"properties":{"accessControl":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardAccessControl:KibanaDashboardAccessControl","description":"Access control parameters for the dashboard.\n"},"dashboardId":{"description":"The Kibana-assigned identifier for the dashboard.","type":"string"},"description":{"description":"A short description of the dashboard.\n","type":"string"},"filters":{"description":"Dashboard-level saved filter pills (`kbn-dashboard-data.filters` in the Kibana Dashboard API). Each element is one filter in display order. The JSON shape for each <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> matches the dashboard filters discriminated union (including DSL and spatial variants), consistent with per-panel <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> on Lens chart blocks.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardFilter:KibanaDashboardFilter"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardKibanaConnection:KibanaDashboardKibanaConnection"},"type":"array"},"options":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardOptions:KibanaDashboardOptions","description":"Display options for the dashboard.\n"},"panels":{"description":"The panels to display in the dashboard.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanel:KibanaDashboardPanel"},"type":"array"},"pinnedPanels":{"description":"Ordered dashboard-level pinned controls (Kibana’s control bar above the grid). Each element uses the same typed `*_control_config` shapes as `panels[]` for these control kinds, without a <span pulumi-lang-nodejs=\"`grid`\" pulumi-lang-dotnet=\"`Grid`\" pulumi-lang-go=\"`grid`\" pulumi-lang-python=\"`grid`\" pulumi-lang-yaml=\"`grid`\" pulumi-lang-java=\"`grid`\">`grid`</span> block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanel:KibanaDashboardPinnedPanel"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardQuery:KibanaDashboardQuery","description":"Dashboard-level query. Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\">`query`</span> object: <span pulumi-lang-nodejs=\"`language`\" pulumi-lang-dotnet=\"`Language`\" pulumi-lang-go=\"`language`\" pulumi-lang-python=\"`language`\" pulumi-lang-yaml=\"`language`\" pulumi-lang-java=\"`language`\">`language`</span> plus exactly one of <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span> (string branch) or <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span> (object branch).\n"},"refreshInterval":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardRefreshInterval:KibanaDashboardRefreshInterval","description":"Auto-refresh settings for the dashboard. Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`refreshInterval`\" pulumi-lang-dotnet=\"`RefreshInterval`\" pulumi-lang-go=\"`refreshInterval`\" pulumi-lang-python=\"`refresh_interval`\" pulumi-lang-yaml=\"`refreshInterval`\" pulumi-lang-java=\"`refreshInterval`\">`refresh_interval`</span> object.\n"},"sections":{"description":"Sections organize panels into collapsible groups. This is a technical preview feature.","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSection:KibanaDashboardSection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.","type":"string"},"tags":{"description":"An array of tag IDs applied to this dashboard.","items":{"type":"string"},"type":"array"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardTimeRange:KibanaDashboardTimeRange","description":"Dashboard time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>). Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> object.\n"},"title":{"description":"A human-readable title for the dashboard.\n","type":"string"}},"required":["dashboardId","query","refreshInterval","spaceId","timeRange","title"],"requiredInputs":["query","refreshInterval","timeRange","title"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaDashboard resources.\n","properties":{"accessControl":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardAccessControl:KibanaDashboardAccessControl","description":"Access control parameters for the dashboard.\n"},"dashboardId":{"description":"The Kibana-assigned identifier for the dashboard.","type":"string"},"description":{"description":"A short description of the dashboard.\n","type":"string"},"filters":{"description":"Dashboard-level saved filter pills (`kbn-dashboard-data.filters` in the Kibana Dashboard API). Each element is one filter in display order. The JSON shape for each <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> matches the dashboard filters discriminated union (including DSL and spatial variants), consistent with per-panel <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> on Lens chart blocks.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardFilter:KibanaDashboardFilter"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardKibanaConnection:KibanaDashboardKibanaConnection"},"type":"array"},"options":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardOptions:KibanaDashboardOptions","description":"Display options for the dashboard.\n"},"panels":{"description":"The panels to display in the dashboard.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanel:KibanaDashboardPanel"},"type":"array"},"pinnedPanels":{"description":"Ordered dashboard-level pinned controls (Kibana’s control bar above the grid). Each element uses the same typed `*_control_config` shapes as `panels[]` for these control kinds, without a <span pulumi-lang-nodejs=\"`grid`\" pulumi-lang-dotnet=\"`Grid`\" pulumi-lang-go=\"`grid`\" pulumi-lang-python=\"`grid`\" pulumi-lang-yaml=\"`grid`\" pulumi-lang-java=\"`grid`\">`grid`</span> block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanel:KibanaDashboardPinnedPanel"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardQuery:KibanaDashboardQuery","description":"Dashboard-level query. Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\">`query`</span> object: <span pulumi-lang-nodejs=\"`language`\" pulumi-lang-dotnet=\"`Language`\" pulumi-lang-go=\"`language`\" pulumi-lang-python=\"`language`\" pulumi-lang-yaml=\"`language`\" pulumi-lang-java=\"`language`\">`language`</span> plus exactly one of <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span> (string branch) or <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span> (object branch).\n"},"refreshInterval":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardRefreshInterval:KibanaDashboardRefreshInterval","description":"Auto-refresh settings for the dashboard. Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`refreshInterval`\" pulumi-lang-dotnet=\"`RefreshInterval`\" pulumi-lang-go=\"`refreshInterval`\" pulumi-lang-python=\"`refresh_interval`\" pulumi-lang-yaml=\"`refreshInterval`\" pulumi-lang-java=\"`refreshInterval`\">`refresh_interval`</span> object.\n"},"sections":{"description":"Sections organize panels into collapsible groups. This is a technical preview feature.","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSection:KibanaDashboardSection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.","type":"string"},"tags":{"description":"An array of tag IDs applied to this dashboard.","items":{"type":"string"},"type":"array"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardTimeRange:KibanaDashboardTimeRange","description":"Dashboard time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>). Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> object.\n"},"title":{"description":"A human-readable title for the dashboard.\n","type":"string"}},"type":"object"},"type":"object"},"elasticstack:index/kibanaDataView:KibanaDataView":{"description":"Manages Kibana [data views](https://www.elastic.co/guide/en/kibana/current/data-views-api.html)\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.KibanaDataViewArgs{\n\t\t\tDataView: &elasticstack.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\", &elasticstack.KibanaDataViewArgs{\n\t\t\tDataView: &elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"duration\"),\n\t\t\t\t\t\tParams: &elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId:     pulumi.String(\"relative_date\"),\n\t\t\t\t\t\tParams: &elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.last_login\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"date\"),\n\t\t\t\t\t\tParams: &elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId:     pulumi.String(\"boolean\"),\n\t\t\t\t\t\tParams: &elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{},\n\t\t\t\t\t},\n\t\t\t\t\t\"user.status\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"color\"),\n\t\t\t\t\t\tParams: &elasticstack.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&elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"truncate\"),\n\t\t\t\t\t\tParams: &elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"string\"),\n\t\t\t\t\t\tParams: &elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"static_lookup\"),\n\t\t\t\t\t\tParams: &elasticstack.KibanaDataViewDataViewFieldFormatsParamsArgs{\n\t\t\t\t\t\t\tLookupEntries: elasticstack.KibanaDataViewDataViewFieldFormatsParamsLookupEntryArray{\n\t\t\t\t\t\t\t\t&elasticstack.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&elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"url\"),\n\t\t\t\t\t\tParams: &elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"url\"),\n\t\t\t\t\t\tParams: &elasticstack.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\": &elasticstack.KibanaDataViewDataViewFieldFormatsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"url\"),\n\t\t\t\t\t\tParams: &elasticstack.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\": &elasticstack.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<!--End PulumiCodeChooser -->\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 <space id>/<data view id>\n```\n\n","inputProperties":{"dataView":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataView:KibanaDataViewDataView"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewKibanaConnection:KibanaDataViewKibanaConnection"},"type":"array"},"override":{"description":"Overrides an existing data view if a data view with the provided title already exists.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"properties":{"dataView":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataView:KibanaDataViewDataView"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewKibanaConnection:KibanaDataViewKibanaConnection"},"type":"array"},"override":{"description":"Overrides an existing data view if a data view with the provided title already exists.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"required":["dataView","override","spaceId"],"requiredInputs":["dataView"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaDataView resources.\n","properties":{"dataView":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataView:KibanaDataViewDataView"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewKibanaConnection:KibanaDataViewKibanaConnection"},"type":"array"},"override":{"description":"Overrides an existing data view if a data view with the provided title already exists.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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 => 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(() => \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 => 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\", &elasticstack.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\", &elasticstack.KibanaDataViewArgs{\n\t\t\tDataView: &elasticstack.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\", &elasticstack.KibanaDefaultDataViewArgs{\n\t\t\tDataViewId: pulumi.String(myDataView.DataView.ApplyT(func(dataView elasticstack.KibanaDataViewDataView) (*string, error) {\n\t\t\t\treturn &dataView.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 -> _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<!--End PulumiCodeChooser -->\n","inputProperties":{"dataViewId":{"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 <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>) to unset the default data view.\n","type":"string"},"force":{"description":"Update an existing default data view identifier. If set to false and a default data view already exists, the operation will fail.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDefaultDataViewKibanaConnection:KibanaDefaultDataViewKibanaConnection"},"type":"array"},"skipDelete":{"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","type":"boolean"},"spaceId":{"description":"The Kibana space ID to set the default data view in. Defaults to <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>.\n","type":"string"}},"properties":{"dataViewId":{"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 <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>) to unset the default data view.\n","type":"string"},"force":{"description":"Update an existing default data view identifier. If set to false and a default data view already exists, the operation will fail.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDefaultDataViewKibanaConnection:KibanaDefaultDataViewKibanaConnection"},"type":"array"},"skipDelete":{"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","type":"boolean"},"spaceId":{"description":"The Kibana space ID to set the default data view in. Defaults to <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>.\n","type":"string"}},"required":["skipDelete","spaceId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaDefaultDataView resources.\n","properties":{"dataViewId":{"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 <span pulumi-lang-nodejs=\"`null`\" pulumi-lang-dotnet=\"`Null`\" pulumi-lang-go=\"`null`\" pulumi-lang-python=\"`null`\" pulumi-lang-yaml=\"`null`\" pulumi-lang-java=\"`null`\">`null`</span>) to unset the default data view.\n","type":"string"},"force":{"description":"Update an existing default data view identifier. If set to false and a default data view already exists, the operation will fail.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDefaultDataViewKibanaConnection:KibanaDefaultDataViewKibanaConnection"},"type":"array"},"skipDelete":{"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","type":"boolean"},"spaceId":{"description":"The Kibana space ID to set the default data view in. Defaults to <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"compatibilityMode":{"description":"Applies various adjustments to the saved objects that are being imported to maintain compatibility between different Kibana versions. Use this option only if you encounter issues with imported saved objects. Cannot be used with create*new*copies.\n","type":"boolean"},"createNewCopies":{"description":"Creates copies of saved objects, regenerates each object ID, and resets the origin. When used, potential conflict errors are avoided. Cannot be used with overwrite or compatibility_mode.\n","type":"boolean"},"fileContents":{"description":"The contents of the exported saved objects file.\n","type":"string"},"ignoreImportErrors":{"description":"If set to true, errors during the import process will not fail the configuration application\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsKibanaConnection:KibanaImportSavedObjectsKibanaConnection"},"type":"array"},"overwrite":{"description":"Overwrites saved objects when they already exist. When used, potential conflict errors are automatically resolved by overwriting the destination object.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"properties":{"compatibilityMode":{"description":"Applies various adjustments to the saved objects that are being imported to maintain compatibility between different Kibana versions. Use this option only if you encounter issues with imported saved objects. Cannot be used with create*new*copies.\n","type":"boolean"},"createNewCopies":{"description":"Creates copies of saved objects, regenerates each object ID, and resets the origin. When used, potential conflict errors are avoided. Cannot be used with overwrite or compatibility_mode.\n","type":"boolean"},"errors":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsError:KibanaImportSavedObjectsError"},"type":"array"},"fileContents":{"description":"The contents of the exported saved objects file.\n","type":"string"},"ignoreImportErrors":{"description":"If set to true, errors during the import process will not fail the configuration application\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsKibanaConnection:KibanaImportSavedObjectsKibanaConnection"},"type":"array"},"overwrite":{"description":"Overwrites saved objects when they already exist. When used, potential conflict errors are automatically resolved by overwriting the destination object.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"success":{"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<span 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 \"> success_results </span>properties.\n","type":"boolean"},"successCount":{"description":"Indicates the number of successfully imported records.\n","type":"number"},"successResults":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsSuccessResult:KibanaImportSavedObjectsSuccessResult"},"type":"array"}},"required":["errors","fileContents","success","successCount","successResults"],"requiredInputs":["fileContents"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaImportSavedObjects resources.\n","properties":{"compatibilityMode":{"description":"Applies various adjustments to the saved objects that are being imported to maintain compatibility between different Kibana versions. Use this option only if you encounter issues with imported saved objects. Cannot be used with create*new*copies.\n","type":"boolean"},"createNewCopies":{"description":"Creates copies of saved objects, regenerates each object ID, and resets the origin. When used, potential conflict errors are avoided. Cannot be used with overwrite or compatibility_mode.\n","type":"boolean"},"errors":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsError:KibanaImportSavedObjectsError"},"type":"array"},"fileContents":{"description":"The contents of the exported saved objects file.\n","type":"string"},"ignoreImportErrors":{"description":"If set to true, errors during the import process will not fail the configuration application\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsKibanaConnection:KibanaImportSavedObjectsKibanaConnection"},"type":"array"},"overwrite":{"description":"Overwrites saved objects when they already exist. When used, potential conflict errors are automatically resolved by overwriting the destination object.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"success":{"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<span 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 \"> success_results </span>properties.\n","type":"boolean"},"successCount":{"description":"Indicates the number of successfully imported records.\n","type":"number"},"successResults":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsSuccessResult:KibanaImportSavedObjectsSuccessResult"},"type":"array"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaInstallPrebuiltRulesKibanaConnection:KibanaInstallPrebuiltRulesKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaInstallPrebuiltRulesKibanaConnection:KibanaInstallPrebuiltRulesKibanaConnection"},"type":"array"},"rulesInstalled":{"description":"Number of prebuilt rules that are installed.\n","type":"number"},"rulesNotInstalled":{"description":"Number of prebuilt rules that are not installed.\n","type":"number"},"rulesNotUpdated":{"description":"Number of prebuilt rules that have updates available.\n","type":"number"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"timelinesInstalled":{"description":"Number of prebuilt timelines that are installed.\n","type":"number"},"timelinesNotInstalled":{"description":"Number of prebuilt timelines that are not installed.\n","type":"number"},"timelinesNotUpdated":{"description":"Number of prebuilt timelines that have updates available.\n","type":"number"}},"required":["rulesInstalled","rulesNotInstalled","rulesNotUpdated","spaceId","timelinesInstalled","timelinesNotInstalled","timelinesNotUpdated"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaInstallPrebuiltRules resources.\n","properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaInstallPrebuiltRulesKibanaConnection:KibanaInstallPrebuiltRulesKibanaConnection"},"type":"array"},"rulesInstalled":{"description":"Number of prebuilt rules that are installed.\n","type":"number"},"rulesNotInstalled":{"description":"Number of prebuilt rules that are not installed.\n","type":"number"},"rulesNotUpdated":{"description":"Number of prebuilt rules that have updates available.\n","type":"number"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"timelinesInstalled":{"description":"Number of prebuilt timelines that are installed.\n","type":"number"},"timelinesNotInstalled":{"description":"Number of prebuilt timelines that are not installed.\n","type":"number"},"timelinesNotUpdated":{"description":"Number of prebuilt timelines that have updates available.\n","type":"number"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.KibanaMaintenanceWindowArgs{\n\t\t\tTitle:   pulumi.String(\"UPDATE TEST\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tCustomSchedule: &elasticstack.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: &elasticstack.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: &elasticstack.KibanaMaintenanceWindowScopeArgs{\n\t\t\t\tAlerting: &elasticstack.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<!--End PulumiCodeChooser -->\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 <space id>/<maintenance window id>\n```\n\n","inputProperties":{"customSchedule":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowCustomSchedule:KibanaMaintenanceWindowCustomSchedule","description":"A set schedule over which the maintenance window applies.\n"},"enabled":{"description":"Whether the current maintenance window is enabled.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowKibanaConnection:KibanaMaintenanceWindowKibanaConnection"},"type":"array"},"scope":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowScope:KibanaMaintenanceWindowScope","description":"An object that narrows the scope of what is affected by this maintenance window.\n"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"title":{"description":"The name of the maintenance window.\n","type":"string"}},"properties":{"customSchedule":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowCustomSchedule:KibanaMaintenanceWindowCustomSchedule","description":"A set schedule over which the maintenance window applies.\n"},"enabled":{"description":"Whether the current maintenance window is enabled.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowKibanaConnection:KibanaMaintenanceWindowKibanaConnection"},"type":"array"},"scope":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowScope:KibanaMaintenanceWindowScope","description":"An object that narrows the scope of what is affected by this maintenance window.\n"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"title":{"description":"The name of the maintenance window.\n","type":"string"}},"required":["customSchedule","enabled","spaceId","title"],"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":{"description":"Whether the current maintenance window is enabled.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowKibanaConnection:KibanaMaintenanceWindowKibanaConnection"},"type":"array"},"scope":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowScope:KibanaMaintenanceWindowScope","description":"An object that narrows the scope of what is affected by this maintenance window.\n"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"title":{"description":"The name of the maintenance window.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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    indices: [\"logs-*\"],\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// Security detection rule with a connector action (Cases webhook).\n// The params attribute is a JSON-encoded object — use jsonencode() to set it.\nconst caseWebhook = new elasticstack.KibanaActionConnector(\"case_webhook\", {\n    name: \"doc-example-cases-webhook\",\n    connectorTypeId: \".cases-webhook\",\n    config: JSON.stringify({\n        createIncidentJson: \"{}\",\n        createIncidentResponseKey: \"key\",\n        createIncidentUrl: \"https://www.elastic.co/\",\n        getIncidentResponseExternalTitleKey: \"title\",\n        getIncidentUrl: \"https://www.elastic.co/\",\n        updateIncidentJson: \"{}\",\n        updateIncidentUrl: \"https://www.elastic.co/\",\n        viewIncidentUrl: \"https://www.elastic.co/\",\n        createIncidentMethod: \"post\",\n    }),\n    secrets: JSON.stringify({\n        user: \"user1\",\n        password: \"password1\",\n    }),\n});\nconst withConnectorAction = new elasticstack.KibanaSecurityDetectionRule(\"with_connector_action\", {\n    name: \"Threat Detection with Notification Action\",\n    type: \"query\",\n    query: \"event.category:malware\",\n    language: \"kuery\",\n    enabled: true,\n    description: \"Detects malware events and opens a Cases incident\",\n    severity: \"high\",\n    riskScore: 80,\n    from: \"now-6m\",\n    to: \"now\",\n    interval: \"5m\",\n    indices: [\"logs-*\"],\n    actions: [{\n        actionTypeId: \".cases-webhook\",\n        id: caseWebhook.connectorId,\n        group: \"default\",\n        params: JSON.stringify({\n            message: \"Alert: {{rule.name}}\",\n        }),\n        frequency: {\n            notifyWhen: \"onActiveAlert\",\n            summary: false,\n            throttle: \"no_actions\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport json\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    indices=[\"logs-*\"],\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# Security detection rule with a connector action (Cases webhook).\n# The params attribute is a JSON-encoded object — use jsonencode() to set it.\ncase_webhook = elasticstack.KibanaActionConnector(\"case_webhook\",\n    name=\"doc-example-cases-webhook\",\n    connector_type_id=\".cases-webhook\",\n    config=json.dumps({\n        \"createIncidentJson\": \"{}\",\n        \"createIncidentResponseKey\": \"key\",\n        \"createIncidentUrl\": \"https://www.elastic.co/\",\n        \"getIncidentResponseExternalTitleKey\": \"title\",\n        \"getIncidentUrl\": \"https://www.elastic.co/\",\n        \"updateIncidentJson\": \"{}\",\n        \"updateIncidentUrl\": \"https://www.elastic.co/\",\n        \"viewIncidentUrl\": \"https://www.elastic.co/\",\n        \"createIncidentMethod\": \"post\",\n    }),\n    secrets=json.dumps({\n        \"user\": \"user1\",\n        \"password\": \"password1\",\n    }))\nwith_connector_action = elasticstack.KibanaSecurityDetectionRule(\"with_connector_action\",\n    name=\"Threat Detection with Notification Action\",\n    type=\"query\",\n    query=\"event.category:malware\",\n    language=\"kuery\",\n    enabled=True,\n    description=\"Detects malware events and opens a Cases incident\",\n    severity=\"high\",\n    risk_score=80,\n    from_=\"now-6m\",\n    to=\"now\",\n    interval=\"5m\",\n    indices=[\"logs-*\"],\n    actions=[{\n        \"action_type_id\": \".cases-webhook\",\n        \"id\": case_webhook.connector_id,\n        \"group\": \"default\",\n        \"params\": json.dumps({\n            \"message\": \"Alert: {{rule.name}}\",\n        }),\n        \"frequency\": {\n            \"notify_when\": \"onActiveAlert\",\n            \"summary\": False,\n            \"throttle\": \"no_actions\",\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(() => \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        Indices = new[]\n        {\n            \"logs-*\",\n        },\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    // Security detection rule with a connector action (Cases webhook).\n    // The params attribute is a JSON-encoded object — use jsonencode() to set it.\n    var caseWebhook = new Elasticstack.KibanaActionConnector(\"case_webhook\", new()\n    {\n        Name = \"doc-example-cases-webhook\",\n        ConnectorTypeId = \".cases-webhook\",\n        Config = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"createIncidentJson\"] = \"{}\",\n            [\"createIncidentResponseKey\"] = \"key\",\n            [\"createIncidentUrl\"] = \"https://www.elastic.co/\",\n            [\"getIncidentResponseExternalTitleKey\"] = \"title\",\n            [\"getIncidentUrl\"] = \"https://www.elastic.co/\",\n            [\"updateIncidentJson\"] = \"{}\",\n            [\"updateIncidentUrl\"] = \"https://www.elastic.co/\",\n            [\"viewIncidentUrl\"] = \"https://www.elastic.co/\",\n            [\"createIncidentMethod\"] = \"post\",\n        }),\n        Secrets = JsonSerializer.Serialize(new Dictionary<string, object?>\n        {\n            [\"user\"] = \"user1\",\n            [\"password\"] = \"password1\",\n        }),\n    });\n\n    var withConnectorAction = new Elasticstack.KibanaSecurityDetectionRule(\"with_connector_action\", new()\n    {\n        Name = \"Threat Detection with Notification Action\",\n        Type = \"query\",\n        Query = \"event.category:malware\",\n        Language = \"kuery\",\n        Enabled = true,\n        Description = \"Detects malware events and opens a Cases incident\",\n        Severity = \"high\",\n        RiskScore = 80,\n        From = \"now-6m\",\n        To = \"now\",\n        Interval = \"5m\",\n        Indices = new[]\n        {\n            \"logs-*\",\n        },\n        Actions = new[]\n        {\n            new Elasticstack.Inputs.KibanaSecurityDetectionRuleActionArgs\n            {\n                ActionTypeId = \".cases-webhook\",\n                Id = caseWebhook.ConnectorId,\n                Group = \"default\",\n                Params = JsonSerializer.Serialize(new Dictionary<string, object?>\n                {\n                    [\"message\"] = \"Alert: {{rule.name}}\",\n                }),\n                Frequency = new Elasticstack.Inputs.KibanaSecurityDetectionRuleActionFrequencyArgs\n                {\n                    NotifyWhen = \"onActiveAlert\",\n                    Summary = false,\n                    Throttle = \"no_actions\",\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// Basic security detection rule\n\t\t_, err := elasticstack.NewKibanaSecurityDetectionRule(ctx, \"example\", &elasticstack.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\tIndices: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"logs-*\"),\n\t\t\t},\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\", &elasticstack.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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"createIncidentJson\":                  \"{}\",\n\t\t\t\"createIncidentResponseKey\":           \"key\",\n\t\t\t\"createIncidentUrl\":                   \"https://www.elastic.co/\",\n\t\t\t\"getIncidentResponseExternalTitleKey\": \"title\",\n\t\t\t\"getIncidentUrl\":                      \"https://www.elastic.co/\",\n\t\t\t\"updateIncidentJson\":                  \"{}\",\n\t\t\t\"updateIncidentUrl\":                   \"https://www.elastic.co/\",\n\t\t\t\"viewIncidentUrl\":                     \"https://www.elastic.co/\",\n\t\t\t\"createIncidentMethod\":                \"post\",\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\"user\":     \"user1\",\n\t\t\t\"password\": \"password1\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t// Security detection rule with a connector action (Cases webhook).\n\t\t// The params attribute is a JSON-encoded object — use jsonencode() to set it.\n\t\tcaseWebhook, err := elasticstack.NewKibanaActionConnector(ctx, \"case_webhook\", &elasticstack.KibanaActionConnectorArgs{\n\t\t\tName:            pulumi.String(\"doc-example-cases-webhook\"),\n\t\t\tConnectorTypeId: pulumi.String(\".cases-webhook\"),\n\t\t\tConfig:          pulumi.String(json0),\n\t\t\tSecrets:         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\"message\": \"Alert: {{rule.name}}\",\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.NewKibanaSecurityDetectionRule(ctx, \"with_connector_action\", &elasticstack.KibanaSecurityDetectionRuleArgs{\n\t\t\tName:        pulumi.String(\"Threat Detection with Notification Action\"),\n\t\t\tType:        pulumi.String(\"query\"),\n\t\t\tQuery:       pulumi.String(\"event.category:malware\"),\n\t\t\tLanguage:    pulumi.String(\"kuery\"),\n\t\t\tEnabled:     pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"Detects malware events and opens a Cases incident\"),\n\t\t\tSeverity:    pulumi.String(\"high\"),\n\t\t\tRiskScore:   pulumi.Float64(80),\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\tIndices: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"logs-*\"),\n\t\t\t},\n\t\t\tActions: elasticstack.KibanaSecurityDetectionRuleActionArray{\n\t\t\t\t&elasticstack.KibanaSecurityDetectionRuleActionArgs{\n\t\t\t\t\tActionTypeId: pulumi.String(\".cases-webhook\"),\n\t\t\t\t\tId:           caseWebhook.ConnectorId,\n\t\t\t\t\tGroup:        pulumi.String(\"default\"),\n\t\t\t\t\tParams:       pulumi.String(json2),\n\t\t\t\t\tFrequency: &elasticstack.KibanaSecurityDetectionRuleActionFrequencyArgs{\n\t\t\t\t\t\tNotifyWhen: pulumi.String(\"onActiveAlert\"),\n\t\t\t\t\t\tSummary:    pulumi.Bool(false),\n\t\t\t\t\t\tThrottle:   pulumi.String(\"no_actions\"),\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.KibanaSecurityDetectionRule;\nimport com.pulumi.elasticstack.KibanaSecurityDetectionRuleArgs;\nimport com.pulumi.elasticstack.KibanaActionConnector;\nimport com.pulumi.elasticstack.KibanaActionConnectorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSecurityDetectionRuleActionArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSecurityDetectionRuleActionFrequencyArgs;\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        // 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            .indices(\"logs-*\")\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        // Security detection rule with a connector action (Cases webhook).\n        // The params attribute is a JSON-encoded object — use jsonencode() to set it.\n        var caseWebhook = new KibanaActionConnector(\"caseWebhook\", KibanaActionConnectorArgs.builder()\n            .name(\"doc-example-cases-webhook\")\n            .connectorTypeId(\".cases-webhook\")\n            .config(serializeJson(\n                jsonObject(\n                    jsonProperty(\"createIncidentJson\", \"{}\"),\n                    jsonProperty(\"createIncidentResponseKey\", \"key\"),\n                    jsonProperty(\"createIncidentUrl\", \"https://www.elastic.co/\"),\n                    jsonProperty(\"getIncidentResponseExternalTitleKey\", \"title\"),\n                    jsonProperty(\"getIncidentUrl\", \"https://www.elastic.co/\"),\n                    jsonProperty(\"updateIncidentJson\", \"{}\"),\n                    jsonProperty(\"updateIncidentUrl\", \"https://www.elastic.co/\"),\n                    jsonProperty(\"viewIncidentUrl\", \"https://www.elastic.co/\"),\n                    jsonProperty(\"createIncidentMethod\", \"post\")\n                )))\n            .secrets(serializeJson(\n                jsonObject(\n                    jsonProperty(\"user\", \"user1\"),\n                    jsonProperty(\"password\", \"password1\")\n                )))\n            .build());\n\n        var withConnectorAction = new KibanaSecurityDetectionRule(\"withConnectorAction\", KibanaSecurityDetectionRuleArgs.builder()\n            .name(\"Threat Detection with Notification Action\")\n            .type(\"query\")\n            .query(\"event.category:malware\")\n            .language(\"kuery\")\n            .enabled(true)\n            .description(\"Detects malware events and opens a Cases incident\")\n            .severity(\"high\")\n            .riskScore(80.0)\n            .from(\"now-6m\")\n            .to(\"now\")\n            .interval(\"5m\")\n            .indices(\"logs-*\")\n            .actions(KibanaSecurityDetectionRuleActionArgs.builder()\n                .actionTypeId(\".cases-webhook\")\n                .id(caseWebhook.connectorId())\n                .group(\"default\")\n                .params(serializeJson(\n                    jsonObject(\n                        jsonProperty(\"message\", \"Alert: {{rule.name}}\")\n                    )))\n                .frequency(KibanaSecurityDetectionRuleActionFrequencyArgs.builder()\n                    .notifyWhen(\"onActiveAlert\")\n                    .summary(false)\n                    .throttle(\"no_actions\")\n                    .build())\n                .build())\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      indices:\n        - logs-*\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  # Security detection rule with a connector action (Cases webhook).\n  # The params attribute is a JSON-encoded object — use jsonencode() to set it.\n  caseWebhook:\n    type: elasticstack:KibanaActionConnector\n    name: case_webhook\n    properties:\n      name: doc-example-cases-webhook\n      connectorTypeId: .cases-webhook\n      config:\n        fn::toJSON:\n          createIncidentJson: '{}'\n          createIncidentResponseKey: key\n          createIncidentUrl: https://www.elastic.co/\n          getIncidentResponseExternalTitleKey: title\n          getIncidentUrl: https://www.elastic.co/\n          updateIncidentJson: '{}'\n          updateIncidentUrl: https://www.elastic.co/\n          viewIncidentUrl: https://www.elastic.co/\n          createIncidentMethod: post\n      secrets:\n        fn::toJSON:\n          user: user1\n          password: password1\n  withConnectorAction:\n    type: elasticstack:KibanaSecurityDetectionRule\n    name: with_connector_action\n    properties:\n      name: Threat Detection with Notification Action\n      type: query\n      query: event.category:malware\n      language: kuery\n      enabled: true\n      description: Detects malware events and opens a Cases incident\n      severity: high\n      riskScore: 80\n      from: now-6m\n      to: now\n      interval: 5m\n      indices:\n        - logs-*\n      actions:\n        - actionTypeId: .cases-webhook\n          id: ${caseWebhook.connectorId}\n          group: default\n          params:\n            fn::toJSON:\n              message: 'Alert: {{rule.name}}'\n          frequency:\n            notifyWhen: onActiveAlert\n            summary: false\n            throttle: no_actions\n```\n<!--End PulumiCodeChooser -->\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","inputProperties":{"actions":{"description":"Array of automated actions taken when alerts are generated by the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAction:KibanaSecurityDetectionRuleAction"},"type":"array"},"alertSuppression":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAlertSuppression:KibanaSecurityDetectionRuleAlertSuppression","description":"Defines alert suppression configuration to reduce duplicate alerts.\n"},"anomalyThreshold":{"description":"Anomaly score threshold above which the rule creates an alert. Valid values are from 0 to 100. Required for<span 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 \"> machine_learning </span>rules.\n","type":"number"},"authors":{"description":"The rule's author.\n","items":{"type":"string"},"type":"array"},"buildingBlockType":{"description":"Determines if the rule acts as a building block. If set, value must be <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>. Building-block alerts are not displayed in the UI by default and are used as a foundation for other rules.\n","type":"string"},"concurrentSearches":{"description":"Number of concurrent searches for threat intelligence. Optional for<span 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 \"> threat_match </span>rules.\n","type":"number"},"dataViewId":{"description":"Data view ID for the rule. Not supported for esql and<span 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 \"> machine_learning </span>rule types.\n","type":"string"},"description":{"description":"The rule's description.\n","type":"string"},"enabled":{"description":"Determines whether the rule is enabled.\n","type":"boolean"},"exceptionsLists":{"description":"Array of exception containers to prevent the rule from generating alerts.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleExceptionsList:KibanaSecurityDetectionRuleExceptionsList"},"type":"array"},"falsePositives":{"description":"String array used to describe common reasons why the rule may issue false-positive alerts.\n","items":{"type":"string"},"type":"array"},"filters":{"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","type":"string"},"from":{"description":"Time from which data is analyzed each time the rule runs, using a date math range.\n","type":"string"},"historyWindowStart":{"description":"Start date to use when checking if a term has been seen before. Supports relative dates like 'now-30d'. Required for<span 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 \"> new_terms </span>rules.\n","type":"string"},"indices":{"description":"Indices on which the rule functions.\n","items":{"type":"string"},"type":"array"},"interval":{"description":"Frequency of rule execution, using a date math range.\n","type":"string"},"investigationFields":{"description":"Array of field names to include in alert investigation. Available for all rule types.\n","items":{"type":"string"},"type":"array"},"itemsPerSearch":{"description":"Number of items to search for in each concurrent search. Optional for<span 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 \"> threat_match </span>rules.\n","type":"number"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleKibanaConnection:KibanaSecurityDetectionRuleKibanaConnection"},"type":"array"},"language":{"description":"The query language (KQL or Lucene).\n","type":"string"},"license":{"description":"The rule's license.\n","type":"string"},"machineLearningJobIds":{"description":"Machine learning job ID(s) the rule monitors for anomaly scores. Required for<span 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 \"> machine_learning </span>rules.\n","items":{"type":"string"},"type":"array"},"maxSignals":{"description":"Maximum number of alerts the rule can create during a single run.\n","type":"number"},"name":{"description":"A human-readable name for the rule.\n","type":"string"},"namespace":{"description":"Alerts index namespace. Available for all rule types.\n","type":"string"},"newTermsFields":{"description":"Field names containing the new terms. Required for<span 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 \"> new_terms </span>rules.\n","items":{"type":"string"},"type":"array"},"note":{"description":"Notes to help investigate alerts produced by the rule.\n","type":"string"},"query":{"description":"The query language definition.\n","type":"string"},"references":{"description":"String array containing references and URLs to sources of additional information.\n","items":{"type":"string"},"type":"array"},"relatedIntegrations":{"description":"Array of related integrations that provide additional context for the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRelatedIntegration:KibanaSecurityDetectionRuleRelatedIntegration"},"type":"array"},"requiredFields":{"description":"Array of Elasticsearch fields and types that must be present in source indices for the rule to function properly.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRequiredField:KibanaSecurityDetectionRuleRequiredField"},"type":"array"},"responseActions":{"description":"Array of response actions to take when alerts are generated by the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseAction:KibanaSecurityDetectionRuleResponseAction"},"type":"array"},"riskScore":{"description":"A numerical representation of the alert's severity from 0 to 100.\n","type":"number"},"riskScoreMappings":{"description":"Array of risk score mappings to override the default risk score based on source event field values.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRiskScoreMapping:KibanaSecurityDetectionRuleRiskScoreMapping"},"type":"array"},"ruleId":{"description":"A stable unique identifier for the rule object. If omitted, a UUID is generated.\n","type":"string"},"ruleNameOverride":{"description":"Override the rule name in Kibana. Available for all rule types.\n","type":"string"},"savedId":{"description":"Identifier of the saved query used for the rule. Required for<span 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 \"> saved_query </span>rules.\n","type":"string"},"setup":{"description":"Setup guide with instructions on rule prerequisites.\n","type":"string"},"severity":{"description":"Severity level of alerts produced by the rule.\n","type":"string"},"severityMappings":{"description":"Array of severity mappings to override the default severity based on source event field values.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleSeverityMapping:KibanaSecurityDetectionRuleSeverityMapping"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize, filter, and search rules.\n","items":{"type":"string"},"type":"array"},"threatFilters":{"description":"Additional filters for threat intelligence data. Optional for<span 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 \"> threat_match </span>rules.\n","items":{"type":"string"},"type":"array"},"threatIndicatorPath":{"description":"Path to the threat indicator in the indicator documents. Optional for<span 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 \"> threat_match </span>rules.\n","type":"string"},"threatIndices":{"description":"Array of index patterns for the threat intelligence indices. Required for<span 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 \"> threat_match </span>rules.\n","items":{"type":"string"},"type":"array"},"threatMappings":{"description":"Array of threat mappings that specify how to match events with threat intelligence. Required for threat*match rules.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatMapping:KibanaSecurityDetectionRuleThreatMapping"},"type":"array"},"threatQuery":{"description":"Query used to filter threat intelligence data. Optional for<span 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 \"> threat_match </span>rules.\n","type":"string"},"threats":{"description":"MITRE ATT&CK framework threat information.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreat:KibanaSecurityDetectionRuleThreat"},"type":"array"},"threshold":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreshold:KibanaSecurityDetectionRuleThreshold","description":"Threshold settings for the rule. Required for threshold rules.\n"},"tiebreakerField":{"description":"Sets the tiebreaker field. Required for EQL rules when event.dataset is not provided.\n","type":"string"},"timelineId":{"description":"Timeline template ID for the rule.\n","type":"string"},"timelineTitle":{"description":"Timeline template title for the rule.\n","type":"string"},"timestampOverride":{"description":"Field name to use for timestamp override. Available for all rule types.\n","type":"string"},"timestampOverrideFallbackDisabled":{"description":"Disables timestamp override fallback. Available for all rule types.\n","type":"boolean"},"to":{"description":"Time to which data is analyzed each time the rule runs, using a date math range.\n","type":"string"},"type":{"description":"Rule type. Supported types: query, eql, esql, machine*learning, new*terms, saved*query, threat*match, threshold.\n","type":"string"},"version":{"description":"The rule's version number.\n","type":"number"}},"properties":{"actions":{"description":"Array of automated actions taken when alerts are generated by the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAction:KibanaSecurityDetectionRuleAction"},"type":"array"},"alertSuppression":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAlertSuppression:KibanaSecurityDetectionRuleAlertSuppression","description":"Defines alert suppression configuration to reduce duplicate alerts.\n"},"anomalyThreshold":{"description":"Anomaly score threshold above which the rule creates an alert. Valid values are from 0 to 100. Required for<span 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 \"> machine_learning </span>rules.\n","type":"number"},"authors":{"description":"The rule's author.\n","items":{"type":"string"},"type":"array"},"buildingBlockType":{"description":"Determines if the rule acts as a building block. If set, value must be <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>. Building-block alerts are not displayed in the UI by default and are used as a foundation for other rules.\n","type":"string"},"concurrentSearches":{"description":"Number of concurrent searches for threat intelligence. Optional for<span 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 \"> threat_match </span>rules.\n","type":"number"},"createdAt":{"description":"The time the rule was created.\n","type":"string"},"createdBy":{"description":"The user who created the rule.\n","type":"string"},"dataViewId":{"description":"Data view ID for the rule. Not supported for esql and<span 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 \"> machine_learning </span>rule types.\n","type":"string"},"description":{"description":"The rule's description.\n","type":"string"},"enabled":{"description":"Determines whether the rule is enabled.\n","type":"boolean"},"exceptionsLists":{"description":"Array of exception containers to prevent the rule from generating alerts.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleExceptionsList:KibanaSecurityDetectionRuleExceptionsList"},"type":"array"},"falsePositives":{"description":"String array used to describe common reasons why the rule may issue false-positive alerts.\n","items":{"type":"string"},"type":"array"},"filters":{"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","type":"string"},"from":{"description":"Time from which data is analyzed each time the rule runs, using a date math range.\n","type":"string"},"historyWindowStart":{"description":"Start date to use when checking if a term has been seen before. Supports relative dates like 'now-30d'. Required for<span 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 \"> new_terms </span>rules.\n","type":"string"},"indices":{"description":"Indices on which the rule functions.\n","items":{"type":"string"},"type":"array"},"interval":{"description":"Frequency of rule execution, using a date math range.\n","type":"string"},"investigationFields":{"description":"Array of field names to include in alert investigation. Available for all rule types.\n","items":{"type":"string"},"type":"array"},"itemsPerSearch":{"description":"Number of items to search for in each concurrent search. Optional for<span 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 \"> threat_match </span>rules.\n","type":"number"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleKibanaConnection:KibanaSecurityDetectionRuleKibanaConnection"},"type":"array"},"language":{"description":"The query language (KQL or Lucene).\n","type":"string"},"license":{"description":"The rule's license.\n","type":"string"},"machineLearningJobIds":{"description":"Machine learning job ID(s) the rule monitors for anomaly scores. Required for<span 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 \"> machine_learning </span>rules.\n","items":{"type":"string"},"type":"array"},"maxSignals":{"description":"Maximum number of alerts the rule can create during a single run.\n","type":"number"},"name":{"description":"A human-readable name for the rule.\n","type":"string"},"namespace":{"description":"Alerts index namespace. Available for all rule types.\n","type":"string"},"newTermsFields":{"description":"Field names containing the new terms. Required for<span 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 \"> new_terms </span>rules.\n","items":{"type":"string"},"type":"array"},"note":{"description":"Notes to help investigate alerts produced by the rule.\n","type":"string"},"query":{"description":"The query language definition.\n","type":"string"},"references":{"description":"String array containing references and URLs to sources of additional information.\n","items":{"type":"string"},"type":"array"},"relatedIntegrations":{"description":"Array of related integrations that provide additional context for the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRelatedIntegration:KibanaSecurityDetectionRuleRelatedIntegration"},"type":"array"},"requiredFields":{"description":"Array of Elasticsearch fields and types that must be present in source indices for the rule to function properly.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRequiredField:KibanaSecurityDetectionRuleRequiredField"},"type":"array"},"responseActions":{"description":"Array of response actions to take when alerts are generated by the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseAction:KibanaSecurityDetectionRuleResponseAction"},"type":"array"},"revision":{"description":"The rule's revision number.\n","type":"number"},"riskScore":{"description":"A numerical representation of the alert's severity from 0 to 100.\n","type":"number"},"riskScoreMappings":{"description":"Array of risk score mappings to override the default risk score based on source event field values.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRiskScoreMapping:KibanaSecurityDetectionRuleRiskScoreMapping"},"type":"array"},"ruleId":{"description":"A stable unique identifier for the rule object. If omitted, a UUID is generated.\n","type":"string"},"ruleNameOverride":{"description":"Override the rule name in Kibana. Available for all rule types.\n","type":"string"},"savedId":{"description":"Identifier of the saved query used for the rule. Required for<span 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 \"> saved_query </span>rules.\n","type":"string"},"setup":{"description":"Setup guide with instructions on rule prerequisites.\n","type":"string"},"severity":{"description":"Severity level of alerts produced by the rule.\n","type":"string"},"severityMappings":{"description":"Array of severity mappings to override the default severity based on source event field values.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleSeverityMapping:KibanaSecurityDetectionRuleSeverityMapping"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize, filter, and search rules.\n","items":{"type":"string"},"type":"array"},"threatFilters":{"description":"Additional filters for threat intelligence data. Optional for<span 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 \"> threat_match </span>rules.\n","items":{"type":"string"},"type":"array"},"threatIndicatorPath":{"description":"Path to the threat indicator in the indicator documents. Optional for<span 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 \"> threat_match </span>rules.\n","type":"string"},"threatIndices":{"description":"Array of index patterns for the threat intelligence indices. Required for<span 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 \"> threat_match </span>rules.\n","items":{"type":"string"},"type":"array"},"threatMappings":{"description":"Array of threat mappings that specify how to match events with threat intelligence. Required for threat*match rules.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatMapping:KibanaSecurityDetectionRuleThreatMapping"},"type":"array"},"threatQuery":{"description":"Query used to filter threat intelligence data. Optional for<span 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 \"> threat_match </span>rules.\n","type":"string"},"threats":{"description":"MITRE ATT&CK framework threat information.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreat:KibanaSecurityDetectionRuleThreat"},"type":"array"},"threshold":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreshold:KibanaSecurityDetectionRuleThreshold","description":"Threshold settings for the rule. Required for threshold rules.\n"},"tiebreakerField":{"description":"Sets the tiebreaker field. Required for EQL rules when event.dataset is not provided.\n","type":"string"},"timelineId":{"description":"Timeline template ID for the rule.\n","type":"string"},"timelineTitle":{"description":"Timeline template title for the rule.\n","type":"string"},"timestampOverride":{"description":"Field name to use for timestamp override. Available for all rule types.\n","type":"string"},"timestampOverrideFallbackDisabled":{"description":"Disables timestamp override fallback. Available for all rule types.\n","type":"boolean"},"to":{"description":"Time to which data is analyzed each time the rule runs, using a date math range.\n","type":"string"},"type":{"description":"Rule type. Supported types: query, eql, esql, machine*learning, new*terms, saved*query, threat*match, threshold.\n","type":"string"},"updatedAt":{"description":"The time the rule was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the rule.\n","type":"string"},"version":{"description":"The rule's version number.\n","type":"number"}},"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"],"requiredInputs":["description","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityDetectionRule resources.\n","properties":{"actions":{"description":"Array of automated actions taken when alerts are generated by the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAction:KibanaSecurityDetectionRuleAction"},"type":"array"},"alertSuppression":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleAlertSuppression:KibanaSecurityDetectionRuleAlertSuppression","description":"Defines alert suppression configuration to reduce duplicate alerts.\n"},"anomalyThreshold":{"description":"Anomaly score threshold above which the rule creates an alert. Valid values are from 0 to 100. Required for<span 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 \"> machine_learning </span>rules.\n","type":"number"},"authors":{"description":"The rule's author.\n","items":{"type":"string"},"type":"array"},"buildingBlockType":{"description":"Determines if the rule acts as a building block. If set, value must be <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>. Building-block alerts are not displayed in the UI by default and are used as a foundation for other rules.\n","type":"string"},"concurrentSearches":{"description":"Number of concurrent searches for threat intelligence. Optional for<span 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 \"> threat_match </span>rules.\n","type":"number"},"createdAt":{"description":"The time the rule was created.\n","type":"string"},"createdBy":{"description":"The user who created the rule.\n","type":"string"},"dataViewId":{"description":"Data view ID for the rule. Not supported for esql and<span 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 \"> machine_learning </span>rule types.\n","type":"string"},"description":{"description":"The rule's description.\n","type":"string"},"enabled":{"description":"Determines whether the rule is enabled.\n","type":"boolean"},"exceptionsLists":{"description":"Array of exception containers to prevent the rule from generating alerts.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleExceptionsList:KibanaSecurityDetectionRuleExceptionsList"},"type":"array"},"falsePositives":{"description":"String array used to describe common reasons why the rule may issue false-positive alerts.\n","items":{"type":"string"},"type":"array"},"filters":{"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","type":"string"},"from":{"description":"Time from which data is analyzed each time the rule runs, using a date math range.\n","type":"string"},"historyWindowStart":{"description":"Start date to use when checking if a term has been seen before. Supports relative dates like 'now-30d'. Required for<span 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 \"> new_terms </span>rules.\n","type":"string"},"indices":{"description":"Indices on which the rule functions.\n","items":{"type":"string"},"type":"array"},"interval":{"description":"Frequency of rule execution, using a date math range.\n","type":"string"},"investigationFields":{"description":"Array of field names to include in alert investigation. Available for all rule types.\n","items":{"type":"string"},"type":"array"},"itemsPerSearch":{"description":"Number of items to search for in each concurrent search. Optional for<span 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 \"> threat_match </span>rules.\n","type":"number"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleKibanaConnection:KibanaSecurityDetectionRuleKibanaConnection"},"type":"array"},"language":{"description":"The query language (KQL or Lucene).\n","type":"string"},"license":{"description":"The rule's license.\n","type":"string"},"machineLearningJobIds":{"description":"Machine learning job ID(s) the rule monitors for anomaly scores. Required for<span 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 \"> machine_learning </span>rules.\n","items":{"type":"string"},"type":"array"},"maxSignals":{"description":"Maximum number of alerts the rule can create during a single run.\n","type":"number"},"name":{"description":"A human-readable name for the rule.\n","type":"string"},"namespace":{"description":"Alerts index namespace. Available for all rule types.\n","type":"string"},"newTermsFields":{"description":"Field names containing the new terms. Required for<span 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 \"> new_terms </span>rules.\n","items":{"type":"string"},"type":"array"},"note":{"description":"Notes to help investigate alerts produced by the rule.\n","type":"string"},"query":{"description":"The query language definition.\n","type":"string"},"references":{"description":"String array containing references and URLs to sources of additional information.\n","items":{"type":"string"},"type":"array"},"relatedIntegrations":{"description":"Array of related integrations that provide additional context for the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRelatedIntegration:KibanaSecurityDetectionRuleRelatedIntegration"},"type":"array"},"requiredFields":{"description":"Array of Elasticsearch fields and types that must be present in source indices for the rule to function properly.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRequiredField:KibanaSecurityDetectionRuleRequiredField"},"type":"array"},"responseActions":{"description":"Array of response actions to take when alerts are generated by the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseAction:KibanaSecurityDetectionRuleResponseAction"},"type":"array"},"revision":{"description":"The rule's revision number.\n","type":"number"},"riskScore":{"description":"A numerical representation of the alert's severity from 0 to 100.\n","type":"number"},"riskScoreMappings":{"description":"Array of risk score mappings to override the default risk score based on source event field values.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleRiskScoreMapping:KibanaSecurityDetectionRuleRiskScoreMapping"},"type":"array"},"ruleId":{"description":"A stable unique identifier for the rule object. If omitted, a UUID is generated.\n","type":"string"},"ruleNameOverride":{"description":"Override the rule name in Kibana. Available for all rule types.\n","type":"string"},"savedId":{"description":"Identifier of the saved query used for the rule. Required for<span 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 \"> saved_query </span>rules.\n","type":"string"},"setup":{"description":"Setup guide with instructions on rule prerequisites.\n","type":"string"},"severity":{"description":"Severity level of alerts produced by the rule.\n","type":"string"},"severityMappings":{"description":"Array of severity mappings to override the default severity based on source event field values.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleSeverityMapping:KibanaSecurityDetectionRuleSeverityMapping"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize, filter, and search rules.\n","items":{"type":"string"},"type":"array"},"threatFilters":{"description":"Additional filters for threat intelligence data. Optional for<span 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 \"> threat_match </span>rules.\n","items":{"type":"string"},"type":"array"},"threatIndicatorPath":{"description":"Path to the threat indicator in the indicator documents. Optional for<span 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 \"> threat_match </span>rules.\n","type":"string"},"threatIndices":{"description":"Array of index patterns for the threat intelligence indices. Required for<span 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 \"> threat_match </span>rules.\n","items":{"type":"string"},"type":"array"},"threatMappings":{"description":"Array of threat mappings that specify how to match events with threat intelligence. Required for threat*match rules.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatMapping:KibanaSecurityDetectionRuleThreatMapping"},"type":"array"},"threatQuery":{"description":"Query used to filter threat intelligence data. Optional for<span 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 \"> threat_match </span>rules.\n","type":"string"},"threats":{"description":"MITRE ATT&CK framework threat information.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreat:KibanaSecurityDetectionRuleThreat"},"type":"array"},"threshold":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreshold:KibanaSecurityDetectionRuleThreshold","description":"Threshold settings for the rule. Required for threshold rules.\n"},"tiebreakerField":{"description":"Sets the tiebreaker field. Required for EQL rules when event.dataset is not provided.\n","type":"string"},"timelineId":{"description":"Timeline template ID for the rule.\n","type":"string"},"timelineTitle":{"description":"Timeline template title for the rule.\n","type":"string"},"timestampOverride":{"description":"Field name to use for timestamp override. Available for all rule types.\n","type":"string"},"timestampOverrideFallbackDisabled":{"description":"Disables timestamp override fallback. Available for all rule types.\n","type":"boolean"},"to":{"description":"Time to which data is analyzed each time the rule runs, using a date math range.\n","type":"string"},"type":{"description":"Rule type. Supported types: query, eql, esql, machine*learning, new*terms, saved*query, threat*match, threshold.\n","type":"string"},"updatedAt":{"description":"The time the rule was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the rule.\n","type":"string"},"version":{"description":"The rule's version number.\n","type":"number"}},"type":"object"},"type":"object"},"elasticstack:index/kibanaSecurityEnableRule:KibanaSecurityEnableRule":{"description":"Enables Elastic Security detection rules based on tags.\n\nThis resource uses Kibana’s bulk action API to enable all rules matching the specified tag key-value pair.\n\nRequires Elastic Stack version 8.11.0 or higher. See the [documentation](https://www.elastic.co/guide/en/security/current/rules-ui-management.html) for more details.\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\n// Enable all Windows rules\nconst windows = new elasticstack.KibanaSecurityEnableRule(\"windows\", {\n    spaceId: \"default\",\n    key: \"OS\",\n    value: \"Windows\",\n});\n// Enable rules but don't disable them when the resource is destroyed\nconst macosPersistent = new elasticstack.KibanaSecurityEnableRule(\"macos_persistent\", {\n    spaceId: \"default\",\n    key: \"OS\",\n    value: \"macOS\",\n    disableOnDestroy: false,\n});\n// Enable all Linux rules\nconst linux = new elasticstack.KibanaSecurityEnableRule(\"linux\", {\n    spaceId: \"default\",\n    key: \"OS\",\n    value: \"Linux\",\n});\n// Enable rules in a custom space\nconst customSpace = new elasticstack.KibanaSecurityEnableRule(\"custom_space\", {\n    spaceId: \"security\",\n    key: \"Data Source\",\n    value: \"Elastic Defend\",\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\n# Enable all Windows rules\nwindows = elasticstack.KibanaSecurityEnableRule(\"windows\",\n    space_id=\"default\",\n    key=\"OS\",\n    value=\"Windows\")\n# Enable rules but don't disable them when the resource is destroyed\nmacos_persistent = elasticstack.KibanaSecurityEnableRule(\"macos_persistent\",\n    space_id=\"default\",\n    key=\"OS\",\n    value=\"macOS\",\n    disable_on_destroy=False)\n# Enable all Linux rules\nlinux = elasticstack.KibanaSecurityEnableRule(\"linux\",\n    space_id=\"default\",\n    key=\"OS\",\n    value=\"Linux\")\n# Enable rules in a custom space\ncustom_space = elasticstack.KibanaSecurityEnableRule(\"custom_space\",\n    space_id=\"security\",\n    key=\"Data Source\",\n    value=\"Elastic Defend\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    // Enable all Windows rules\n    var windows = new Elasticstack.KibanaSecurityEnableRule(\"windows\", new()\n    {\n        SpaceId = \"default\",\n        Key = \"OS\",\n        Value = \"Windows\",\n    });\n\n    // Enable rules but don't disable them when the resource is destroyed\n    var macosPersistent = new Elasticstack.KibanaSecurityEnableRule(\"macos_persistent\", new()\n    {\n        SpaceId = \"default\",\n        Key = \"OS\",\n        Value = \"macOS\",\n        DisableOnDestroy = false,\n    });\n\n    // Enable all Linux rules\n    var linux = new Elasticstack.KibanaSecurityEnableRule(\"linux\", new()\n    {\n        SpaceId = \"default\",\n        Key = \"OS\",\n        Value = \"Linux\",\n    });\n\n    // Enable rules in a custom space\n    var customSpace = new Elasticstack.KibanaSecurityEnableRule(\"custom_space\", new()\n    {\n        SpaceId = \"security\",\n        Key = \"Data Source\",\n        Value = \"Elastic Defend\",\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// Enable all Windows rules\n\t\t_, err := elasticstack.NewKibanaSecurityEnableRule(ctx, \"windows\", &elasticstack.KibanaSecurityEnableRuleArgs{\n\t\t\tSpaceId: pulumi.String(\"default\"),\n\t\t\tKey:     pulumi.String(\"OS\"),\n\t\t\tValue:   pulumi.String(\"Windows\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable rules but don't disable them when the resource is destroyed\n\t\t_, err = elasticstack.NewKibanaSecurityEnableRule(ctx, \"macos_persistent\", &elasticstack.KibanaSecurityEnableRuleArgs{\n\t\t\tSpaceId:          pulumi.String(\"default\"),\n\t\t\tKey:              pulumi.String(\"OS\"),\n\t\t\tValue:            pulumi.String(\"macOS\"),\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable all Linux rules\n\t\t_, err = elasticstack.NewKibanaSecurityEnableRule(ctx, \"linux\", &elasticstack.KibanaSecurityEnableRuleArgs{\n\t\t\tSpaceId: pulumi.String(\"default\"),\n\t\t\tKey:     pulumi.String(\"OS\"),\n\t\t\tValue:   pulumi.String(\"Linux\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable rules in a custom space\n\t\t_, err = elasticstack.NewKibanaSecurityEnableRule(ctx, \"custom_space\", &elasticstack.KibanaSecurityEnableRuleArgs{\n\t\t\tSpaceId: pulumi.String(\"security\"),\n\t\t\tKey:     pulumi.String(\"Data Source\"),\n\t\t\tValue:   pulumi.String(\"Elastic Defend\"),\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.KibanaSecurityEnableRule;\nimport com.pulumi.elasticstack.KibanaSecurityEnableRuleArgs;\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        // Enable all Windows rules\n        var windows = new KibanaSecurityEnableRule(\"windows\", KibanaSecurityEnableRuleArgs.builder()\n            .spaceId(\"default\")\n            .key(\"OS\")\n            .value(\"Windows\")\n            .build());\n\n        // Enable rules but don't disable them when the resource is destroyed\n        var macosPersistent = new KibanaSecurityEnableRule(\"macosPersistent\", KibanaSecurityEnableRuleArgs.builder()\n            .spaceId(\"default\")\n            .key(\"OS\")\n            .value(\"macOS\")\n            .disableOnDestroy(false)\n            .build());\n\n        // Enable all Linux rules\n        var linux = new KibanaSecurityEnableRule(\"linux\", KibanaSecurityEnableRuleArgs.builder()\n            .spaceId(\"default\")\n            .key(\"OS\")\n            .value(\"Linux\")\n            .build());\n\n        // Enable rules in a custom space\n        var customSpace = new KibanaSecurityEnableRule(\"customSpace\", KibanaSecurityEnableRuleArgs.builder()\n            .spaceId(\"security\")\n            .key(\"Data Source\")\n            .value(\"Elastic Defend\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # Enable all Windows rules\n  windows:\n    type: elasticstack:KibanaSecurityEnableRule\n    properties:\n      spaceId: default\n      key: OS\n      value: Windows\n  # Enable rules but don't disable them when the resource is destroyed\n  macosPersistent:\n    type: elasticstack:KibanaSecurityEnableRule\n    name: macos_persistent\n    properties:\n      spaceId: default\n      key: OS\n      value: macOS\n      disableOnDestroy: false\n  # Enable all Linux rules\n  linux:\n    type: elasticstack:KibanaSecurityEnableRule\n    properties:\n      spaceId: default\n      key: OS\n      value: Linux\n  # Enable rules in a custom space\n  customSpace:\n    type: elasticstack:KibanaSecurityEnableRule\n    name: custom_space\n    properties:\n      spaceId: security\n      key: Data Source\n      value: Elastic Defend\n```\n<!--End PulumiCodeChooser -->\n","inputProperties":{"disableOnDestroy":{"description":"Whether to disable the rules when this resource is destroyed. Defaults to true.\n","type":"boolean"},"key":{"description":"The tag key to filter rules by (e.g., 'OS').\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityEnableRuleKibanaConnection:KibanaSecurityEnableRuleKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"value":{"description":"The tag value to filter rules by (e.g., 'Windows').\n","type":"string"}},"properties":{"allRulesEnabled":{"description":"Computed attribute indicating whether all rules matching the tag are currently enabled. Used for drift detection.\n","type":"boolean"},"disableOnDestroy":{"description":"Whether to disable the rules when this resource is destroyed. Defaults to true.\n","type":"boolean"},"key":{"description":"The tag key to filter rules by (e.g., 'OS').\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityEnableRuleKibanaConnection:KibanaSecurityEnableRuleKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"value":{"description":"The tag value to filter rules by (e.g., 'Windows').\n","type":"string"}},"required":["allRulesEnabled","disableOnDestroy","key","spaceId","value"],"requiredInputs":["key","value"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityEnableRule resources.\n","properties":{"allRulesEnabled":{"description":"Computed attribute indicating whether all rules matching the tag are currently enabled. Used for drift detection.\n","type":"boolean"},"disableOnDestroy":{"description":"Whether to disable the rules when this resource is destroyed. Defaults to true.\n","type":"boolean"},"key":{"description":"The tag key to filter rules by (e.g., 'OS').\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityEnableRuleKibanaConnection:KibanaSecurityEnableRuleKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"value":{"description":"The tag value to filter rules by (e.g., 'Windows').\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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\", &elasticstack.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&elasticstack.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&elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"comments":{"description":"Array of comments about the exception item.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemComment:KibanaSecurityExceptionItemComment"},"type":"array"},"description":{"description":"Describes the exception item.\n","type":"string"},"entries":{"description":"The exception item entries. This defines the conditions under which the exception applies.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntry:KibanaSecurityExceptionItemEntry"},"type":"array"},"expireTime":{"description":"The exception item's expiration date in RFC3339 format. This field is only available for regular exception items, not endpoint exceptions.\n","type":"string"},"itemId":{"description":"The exception item's human readable string identifier.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemKibanaConnection:KibanaSecurityExceptionItemKibanaConnection"},"type":"array"},"listId":{"description":"The exception list's identifier that this item belongs to.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the exception item as JSON string.\n","type":"string"},"name":{"description":"The name of the exception item.\n","type":"string"},"namespaceType":{"description":"Determines whether the exception item is available in all Kibana spaces or just the space in which it is created. Can be <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span> (default) or <span pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\">`agnostic`</span>.\n","type":"string"},"osTypes":{"description":"Array of OS types for which the exceptions apply. Valid values: <span pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\">`linux`</span>, <span pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\">`macos`</span>, <span pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\">`windows`</span>.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize exception items.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of exception item. Must be <span pulumi-lang-nodejs=\"`simple`\" pulumi-lang-dotnet=\"`Simple`\" pulumi-lang-go=\"`simple`\" pulumi-lang-python=\"`simple`\" pulumi-lang-yaml=\"`simple`\" pulumi-lang-java=\"`simple`\">`simple`</span>.\n","type":"string"}},"properties":{"comments":{"description":"Array of comments about the exception item.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemComment:KibanaSecurityExceptionItemComment"},"type":"array"},"createdAt":{"description":"The timestamp of when the exception item was created.\n","type":"string"},"createdBy":{"description":"The user who created the exception item.\n","type":"string"},"description":{"description":"Describes the exception item.\n","type":"string"},"entries":{"description":"The exception item entries. This defines the conditions under which the exception applies.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntry:KibanaSecurityExceptionItemEntry"},"type":"array"},"expireTime":{"description":"The exception item's expiration date in RFC3339 format. This field is only available for regular exception items, not endpoint exceptions.\n","type":"string"},"itemId":{"description":"The exception item's human readable string identifier.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemKibanaConnection:KibanaSecurityExceptionItemKibanaConnection"},"type":"array"},"listId":{"description":"The exception list's identifier that this item belongs to.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the exception item as JSON string.\n","type":"string"},"name":{"description":"The name of the exception item.\n","type":"string"},"namespaceType":{"description":"Determines whether the exception item is available in all Kibana spaces or just the space in which it is created. Can be <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span> (default) or <span pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\">`agnostic`</span>.\n","type":"string"},"osTypes":{"description":"Array of OS types for which the exceptions apply. Valid values: <span pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\">`linux`</span>, <span pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\">`macos`</span>, <span pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\">`windows`</span>.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize exception items.\n","items":{"type":"string"},"type":"array"},"tieBreakerId":{"description":"Field used in search to ensure all items are sorted and returned correctly.\n","type":"string"},"type":{"description":"The type of exception item. Must be <span pulumi-lang-nodejs=\"`simple`\" pulumi-lang-dotnet=\"`Simple`\" pulumi-lang-go=\"`simple`\" pulumi-lang-python=\"`simple`\" pulumi-lang-yaml=\"`simple`\" pulumi-lang-java=\"`simple`\">`simple`</span>.\n","type":"string"},"updatedAt":{"description":"The timestamp of when the exception item was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the exception item.\n","type":"string"}},"required":["createdAt","createdBy","description","entries","expireTime","itemId","listId","name","namespaceType","spaceId","tieBreakerId","type","updatedAt","updatedBy"],"requiredInputs":["description","entries","listId","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityExceptionItem resources.\n","properties":{"comments":{"description":"Array of comments about the exception item.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemComment:KibanaSecurityExceptionItemComment"},"type":"array"},"createdAt":{"description":"The timestamp of when the exception item was created.\n","type":"string"},"createdBy":{"description":"The user who created the exception item.\n","type":"string"},"description":{"description":"Describes the exception item.\n","type":"string"},"entries":{"description":"The exception item entries. This defines the conditions under which the exception applies.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntry:KibanaSecurityExceptionItemEntry"},"type":"array"},"expireTime":{"description":"The exception item's expiration date in RFC3339 format. This field is only available for regular exception items, not endpoint exceptions.\n","type":"string"},"itemId":{"description":"The exception item's human readable string identifier.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemKibanaConnection:KibanaSecurityExceptionItemKibanaConnection"},"type":"array"},"listId":{"description":"The exception list's identifier that this item belongs to.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the exception item as JSON string.\n","type":"string"},"name":{"description":"The name of the exception item.\n","type":"string"},"namespaceType":{"description":"Determines whether the exception item is available in all Kibana spaces or just the space in which it is created. Can be <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span> (default) or <span pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\">`agnostic`</span>.\n","type":"string"},"osTypes":{"description":"Array of OS types for which the exceptions apply. Valid values: <span pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\">`linux`</span>, <span pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\">`macos`</span>, <span pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\">`windows`</span>.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize exception items.\n","items":{"type":"string"},"type":"array"},"tieBreakerId":{"description":"Field used in search to ensure all items are sorted and returned correctly.\n","type":"string"},"type":{"description":"The type of exception item. Must be <span pulumi-lang-nodejs=\"`simple`\" pulumi-lang-dotnet=\"`Simple`\" pulumi-lang-go=\"`simple`\" pulumi-lang-python=\"`simple`\" pulumi-lang-yaml=\"`simple`\" pulumi-lang-java=\"`simple`\">`simple`</span>.\n","type":"string"},"updatedAt":{"description":"The timestamp of when the exception item was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the exception item.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"description":{"description":"Describes the exception list.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionListKibanaConnection:KibanaSecurityExceptionListKibanaConnection"},"type":"array"},"listId":{"description":"The exception list's human readable string identifier.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the list container as JSON string.\n","type":"string"},"name":{"description":"The name of the exception list.\n","type":"string"},"namespaceType":{"description":"Determines whether the exception list is available in all Kibana spaces or just the space in which it is created. Can be <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span> (default) or <span pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\">`agnostic`</span>.\n","type":"string"},"osTypes":{"description":"Array of OS types for which the exceptions apply. Valid values: <span pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\">`linux`</span>, <span pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\">`macos`</span>, <span pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\">`windows`</span>.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize exception containers.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of exception list. Can be one of: <span pulumi-lang-nodejs=\"`detection`\" pulumi-lang-dotnet=\"`Detection`\" pulumi-lang-go=\"`detection`\" pulumi-lang-python=\"`detection`\" pulumi-lang-yaml=\"`detection`\" pulumi-lang-java=\"`detection`\">`detection`</span>, <span pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\">`endpoint`</span>, <span 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`\">`endpoint_trusted_apps`</span>, <span 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`\">`endpoint_events`</span>, <span 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`\">`endpoint_host_isolation_exceptions`</span>, <span 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`\">`endpoint_blocklists`</span>, <span pulumi-lang-nodejs=\"`ruleDefault`\" pulumi-lang-dotnet=\"`RuleDefault`\" pulumi-lang-go=\"`ruleDefault`\" pulumi-lang-python=\"`rule_default`\" pulumi-lang-yaml=\"`ruleDefault`\" pulumi-lang-java=\"`ruleDefault`\">`rule_default`</span>.\n","type":"string"}},"properties":{"createdAt":{"description":"The timestamp of when the exception list was created.\n","type":"string"},"createdBy":{"description":"The user who created the exception list.\n","type":"string"},"description":{"description":"Describes the exception list.\n","type":"string"},"immutable":{"description":"Whether the exception list is immutable.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionListKibanaConnection:KibanaSecurityExceptionListKibanaConnection"},"type":"array"},"listId":{"description":"The exception list's human readable string identifier.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the list container as JSON string.\n","type":"string"},"name":{"description":"The name of the exception list.\n","type":"string"},"namespaceType":{"description":"Determines whether the exception list is available in all Kibana spaces or just the space in which it is created. Can be <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span> (default) or <span pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\">`agnostic`</span>.\n","type":"string"},"osTypes":{"description":"Array of OS types for which the exceptions apply. Valid values: <span pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\">`linux`</span>, <span pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\">`macos`</span>, <span pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\">`windows`</span>.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize exception containers.\n","items":{"type":"string"},"type":"array"},"tieBreakerId":{"description":"Field used in search to ensure all containers are sorted and returned correctly.\n","type":"string"},"type":{"description":"The type of exception list. Can be one of: <span pulumi-lang-nodejs=\"`detection`\" pulumi-lang-dotnet=\"`Detection`\" pulumi-lang-go=\"`detection`\" pulumi-lang-python=\"`detection`\" pulumi-lang-yaml=\"`detection`\" pulumi-lang-java=\"`detection`\">`detection`</span>, <span pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\">`endpoint`</span>, <span 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`\">`endpoint_trusted_apps`</span>, <span 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`\">`endpoint_events`</span>, <span 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`\">`endpoint_host_isolation_exceptions`</span>, <span 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`\">`endpoint_blocklists`</span>, <span pulumi-lang-nodejs=\"`ruleDefault`\" pulumi-lang-dotnet=\"`RuleDefault`\" pulumi-lang-go=\"`ruleDefault`\" pulumi-lang-python=\"`rule_default`\" pulumi-lang-yaml=\"`ruleDefault`\" pulumi-lang-java=\"`ruleDefault`\">`rule_default`</span>.\n","type":"string"},"updatedAt":{"description":"The timestamp of when the exception list was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the exception list.\n","type":"string"}},"required":["createdAt","createdBy","description","immutable","listId","name","namespaceType","spaceId","tieBreakerId","type","updatedAt","updatedBy"],"requiredInputs":["description","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityExceptionList resources.\n","properties":{"createdAt":{"description":"The timestamp of when the exception list was created.\n","type":"string"},"createdBy":{"description":"The user who created the exception list.\n","type":"string"},"description":{"description":"Describes the exception list.\n","type":"string"},"immutable":{"description":"Whether the exception list is immutable.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionListKibanaConnection:KibanaSecurityExceptionListKibanaConnection"},"type":"array"},"listId":{"description":"The exception list's human readable string identifier.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the list container as JSON string.\n","type":"string"},"name":{"description":"The name of the exception list.\n","type":"string"},"namespaceType":{"description":"Determines whether the exception list is available in all Kibana spaces or just the space in which it is created. Can be <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span> (default) or <span pulumi-lang-nodejs=\"`agnostic`\" pulumi-lang-dotnet=\"`Agnostic`\" pulumi-lang-go=\"`agnostic`\" pulumi-lang-python=\"`agnostic`\" pulumi-lang-yaml=\"`agnostic`\" pulumi-lang-java=\"`agnostic`\">`agnostic`</span>.\n","type":"string"},"osTypes":{"description":"Array of OS types for which the exceptions apply. Valid values: <span pulumi-lang-nodejs=\"`linux`\" pulumi-lang-dotnet=\"`Linux`\" pulumi-lang-go=\"`linux`\" pulumi-lang-python=\"`linux`\" pulumi-lang-yaml=\"`linux`\" pulumi-lang-java=\"`linux`\">`linux`</span>, <span pulumi-lang-nodejs=\"`macos`\" pulumi-lang-dotnet=\"`Macos`\" pulumi-lang-go=\"`macos`\" pulumi-lang-python=\"`macos`\" pulumi-lang-yaml=\"`macos`\" pulumi-lang-java=\"`macos`\">`macos`</span>, <span pulumi-lang-nodejs=\"`windows`\" pulumi-lang-dotnet=\"`Windows`\" pulumi-lang-go=\"`windows`\" pulumi-lang-python=\"`windows`\" pulumi-lang-yaml=\"`windows`\" pulumi-lang-java=\"`windows`\">`windows`</span>.\n","items":{"type":"string"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"String array containing words and phrases to help categorize exception containers.\n","items":{"type":"string"},"type":"array"},"tieBreakerId":{"description":"Field used in search to ensure all containers are sorted and returned correctly.\n","type":"string"},"type":{"description":"The type of exception list. Can be one of: <span pulumi-lang-nodejs=\"`detection`\" pulumi-lang-dotnet=\"`Detection`\" pulumi-lang-go=\"`detection`\" pulumi-lang-python=\"`detection`\" pulumi-lang-yaml=\"`detection`\" pulumi-lang-java=\"`detection`\">`detection`</span>, <span pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\">`endpoint`</span>, <span 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`\">`endpoint_trusted_apps`</span>, <span 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`\">`endpoint_events`</span>, <span 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`\">`endpoint_host_isolation_exceptions`</span>, <span 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`\">`endpoint_blocklists`</span>, <span pulumi-lang-nodejs=\"`ruleDefault`\" pulumi-lang-dotnet=\"`RuleDefault`\" pulumi-lang-go=\"`ruleDefault`\" pulumi-lang-python=\"`rule_default`\" pulumi-lang-yaml=\"`ruleDefault`\" pulumi-lang-java=\"`ruleDefault`\">`rule_default`</span>.\n","type":"string"},"updatedAt":{"description":"The timestamp of when the exception list was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the exception list.\n","type":"string"}},"type":"object"},"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 <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> attribute\n- Once created, the <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> of a list cannot be changed\n- Lists can be referenced by exception items to create more sophisticated matching rules\n- The <span 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`\">`list_id`</span> is auto-generated if not provided\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"description":{"description":"Describes the security list.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListKibanaConnection:KibanaSecurityListKibanaConnection"},"type":"array"},"kibanaSecurityListId":{"description":"The unique identifier of the security list (auto-generated by Kibana if not specified).\n","type":"string"},"listId":{"description":"The value list's human-readable identifier.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the value list as JSON string.\n","type":"string"},"name":{"description":"The name of the security list.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"type":{"description":"Specifies the Elasticsearch data type of values the list contains. Valid values include: <span pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\">`binary`</span>, <span pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\">`boolean`</span>, <span pulumi-lang-nodejs=\"`byte`\" pulumi-lang-dotnet=\"`Byte`\" pulumi-lang-go=\"`byte`\" pulumi-lang-python=\"`byte`\" pulumi-lang-yaml=\"`byte`\" pulumi-lang-java=\"`byte`\">`byte`</span>, <span pulumi-lang-nodejs=\"`date`\" pulumi-lang-dotnet=\"`Date`\" pulumi-lang-go=\"`date`\" pulumi-lang-python=\"`date`\" pulumi-lang-yaml=\"`date`\" pulumi-lang-java=\"`date`\">`date`</span>, <span 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`\">`date_nanos`</span>, <span 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`\">`date_range`</span>, <span pulumi-lang-nodejs=\"`double`\" pulumi-lang-dotnet=\"`Double`\" pulumi-lang-go=\"`double`\" pulumi-lang-python=\"`double`\" pulumi-lang-yaml=\"`double`\" pulumi-lang-java=\"`double`\">`double`</span>, <span 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`\">`double_range`</span>, <span pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\">`float`</span>, <span 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`\">`float_range`</span>, <span 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`\">`geo_point`</span>, <span 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`\">`geo_shape`</span>, <span 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`\">`half_float`</span>, <span pulumi-lang-nodejs=\"`integer`\" pulumi-lang-dotnet=\"`Integer`\" pulumi-lang-go=\"`integer`\" pulumi-lang-python=\"`integer`\" pulumi-lang-yaml=\"`integer`\" pulumi-lang-java=\"`integer`\">`integer`</span>, <span 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`\">`integer_range`</span>, <span pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\">`ip`</span>, <span 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`\">`ip_range`</span>, <span pulumi-lang-nodejs=\"`keyword`\" pulumi-lang-dotnet=\"`Keyword`\" pulumi-lang-go=\"`keyword`\" pulumi-lang-python=\"`keyword`\" pulumi-lang-yaml=\"`keyword`\" pulumi-lang-java=\"`keyword`\">`keyword`</span>, <span pulumi-lang-nodejs=\"`long`\" pulumi-lang-dotnet=\"`Long`\" pulumi-lang-go=\"`long`\" pulumi-lang-python=\"`long`\" pulumi-lang-yaml=\"`long`\" pulumi-lang-java=\"`long`\">`long`</span>, <span 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`\">`long_range`</span>, <span pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\">`shape`</span>, <span pulumi-lang-nodejs=\"`short`\" pulumi-lang-dotnet=\"`Short`\" pulumi-lang-go=\"`short`\" pulumi-lang-python=\"`short`\" pulumi-lang-yaml=\"`short`\" pulumi-lang-java=\"`short`\">`short`</span>, <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span>.\n","type":"string"},"version":{"description":"The document version number.\n","type":"number"}},"properties":{"createdAt":{"description":"The timestamp of when the list was created.\n","type":"string"},"createdBy":{"description":"The user who created the list.\n","type":"string"},"description":{"description":"Describes the security list.\n","type":"string"},"immutable":{"description":"Whether the list is immutable.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListKibanaConnection:KibanaSecurityListKibanaConnection"},"type":"array"},"kibanaSecurityListId":{"description":"The unique identifier of the security list (auto-generated by Kibana if not specified).\n","type":"string"},"listId":{"description":"The value list's human-readable identifier.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the value list as JSON string.\n","type":"string"},"name":{"description":"The name of the security list.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tieBreakerId":{"description":"Field used in search to ensure all containers are sorted and returned correctly.\n","type":"string"},"type":{"description":"Specifies the Elasticsearch data type of values the list contains. Valid values include: <span pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\">`binary`</span>, <span pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\">`boolean`</span>, <span pulumi-lang-nodejs=\"`byte`\" pulumi-lang-dotnet=\"`Byte`\" pulumi-lang-go=\"`byte`\" pulumi-lang-python=\"`byte`\" pulumi-lang-yaml=\"`byte`\" pulumi-lang-java=\"`byte`\">`byte`</span>, <span pulumi-lang-nodejs=\"`date`\" pulumi-lang-dotnet=\"`Date`\" pulumi-lang-go=\"`date`\" pulumi-lang-python=\"`date`\" pulumi-lang-yaml=\"`date`\" pulumi-lang-java=\"`date`\">`date`</span>, <span 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`\">`date_nanos`</span>, <span 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`\">`date_range`</span>, <span pulumi-lang-nodejs=\"`double`\" pulumi-lang-dotnet=\"`Double`\" pulumi-lang-go=\"`double`\" pulumi-lang-python=\"`double`\" pulumi-lang-yaml=\"`double`\" pulumi-lang-java=\"`double`\">`double`</span>, <span 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`\">`double_range`</span>, <span pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\">`float`</span>, <span 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`\">`float_range`</span>, <span 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`\">`geo_point`</span>, <span 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`\">`geo_shape`</span>, <span 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`\">`half_float`</span>, <span pulumi-lang-nodejs=\"`integer`\" pulumi-lang-dotnet=\"`Integer`\" pulumi-lang-go=\"`integer`\" pulumi-lang-python=\"`integer`\" pulumi-lang-yaml=\"`integer`\" pulumi-lang-java=\"`integer`\">`integer`</span>, <span 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`\">`integer_range`</span>, <span pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\">`ip`</span>, <span 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`\">`ip_range`</span>, <span pulumi-lang-nodejs=\"`keyword`\" pulumi-lang-dotnet=\"`Keyword`\" pulumi-lang-go=\"`keyword`\" pulumi-lang-python=\"`keyword`\" pulumi-lang-yaml=\"`keyword`\" pulumi-lang-java=\"`keyword`\">`keyword`</span>, <span pulumi-lang-nodejs=\"`long`\" pulumi-lang-dotnet=\"`Long`\" pulumi-lang-go=\"`long`\" pulumi-lang-python=\"`long`\" pulumi-lang-yaml=\"`long`\" pulumi-lang-java=\"`long`\">`long`</span>, <span 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`\">`long_range`</span>, <span pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\">`shape`</span>, <span pulumi-lang-nodejs=\"`short`\" pulumi-lang-dotnet=\"`Short`\" pulumi-lang-go=\"`short`\" pulumi-lang-python=\"`short`\" pulumi-lang-yaml=\"`short`\" pulumi-lang-java=\"`short`\">`short`</span>, <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span>.\n","type":"string"},"updatedAt":{"description":"The timestamp of when the list was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the list.\n","type":"string"},"version":{"description":"The document version number.\n","type":"number"},"versionId":{"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":"string"}},"required":["createdAt","createdBy","description","immutable","kibanaSecurityListId","listId","name","spaceId","tieBreakerId","type","updatedAt","updatedBy","version","versionId"],"requiredInputs":["description","type"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityList resources.\n","properties":{"createdAt":{"description":"The timestamp of when the list was created.\n","type":"string"},"createdBy":{"description":"The user who created the list.\n","type":"string"},"description":{"description":"Describes the security list.\n","type":"string"},"immutable":{"description":"Whether the list is immutable.\n","type":"boolean"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListKibanaConnection:KibanaSecurityListKibanaConnection"},"type":"array"},"kibanaSecurityListId":{"description":"The unique identifier of the security list (auto-generated by Kibana if not specified).\n","type":"string"},"listId":{"description":"The value list's human-readable identifier.\n","type":"string"},"meta":{"description":"Placeholder for metadata about the value list as JSON string.\n","type":"string"},"name":{"description":"The name of the security list.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tieBreakerId":{"description":"Field used in search to ensure all containers are sorted and returned correctly.\n","type":"string"},"type":{"description":"Specifies the Elasticsearch data type of values the list contains. Valid values include: <span pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\">`binary`</span>, <span pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\">`boolean`</span>, <span pulumi-lang-nodejs=\"`byte`\" pulumi-lang-dotnet=\"`Byte`\" pulumi-lang-go=\"`byte`\" pulumi-lang-python=\"`byte`\" pulumi-lang-yaml=\"`byte`\" pulumi-lang-java=\"`byte`\">`byte`</span>, <span pulumi-lang-nodejs=\"`date`\" pulumi-lang-dotnet=\"`Date`\" pulumi-lang-go=\"`date`\" pulumi-lang-python=\"`date`\" pulumi-lang-yaml=\"`date`\" pulumi-lang-java=\"`date`\">`date`</span>, <span 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`\">`date_nanos`</span>, <span 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`\">`date_range`</span>, <span pulumi-lang-nodejs=\"`double`\" pulumi-lang-dotnet=\"`Double`\" pulumi-lang-go=\"`double`\" pulumi-lang-python=\"`double`\" pulumi-lang-yaml=\"`double`\" pulumi-lang-java=\"`double`\">`double`</span>, <span 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`\">`double_range`</span>, <span pulumi-lang-nodejs=\"`float`\" pulumi-lang-dotnet=\"`Float`\" pulumi-lang-go=\"`float`\" pulumi-lang-python=\"`float`\" pulumi-lang-yaml=\"`float`\" pulumi-lang-java=\"`float`\">`float`</span>, <span 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`\">`float_range`</span>, <span 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`\">`geo_point`</span>, <span 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`\">`geo_shape`</span>, <span 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`\">`half_float`</span>, <span pulumi-lang-nodejs=\"`integer`\" pulumi-lang-dotnet=\"`Integer`\" pulumi-lang-go=\"`integer`\" pulumi-lang-python=\"`integer`\" pulumi-lang-yaml=\"`integer`\" pulumi-lang-java=\"`integer`\">`integer`</span>, <span 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`\">`integer_range`</span>, <span pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\">`ip`</span>, <span 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`\">`ip_range`</span>, <span pulumi-lang-nodejs=\"`keyword`\" pulumi-lang-dotnet=\"`Keyword`\" pulumi-lang-go=\"`keyword`\" pulumi-lang-python=\"`keyword`\" pulumi-lang-yaml=\"`keyword`\" pulumi-lang-java=\"`keyword`\">`keyword`</span>, <span pulumi-lang-nodejs=\"`long`\" pulumi-lang-dotnet=\"`Long`\" pulumi-lang-go=\"`long`\" pulumi-lang-python=\"`long`\" pulumi-lang-yaml=\"`long`\" pulumi-lang-java=\"`long`\">`long`</span>, <span 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`\">`long_range`</span>, <span pulumi-lang-nodejs=\"`shape`\" pulumi-lang-dotnet=\"`Shape`\" pulumi-lang-go=\"`shape`\" pulumi-lang-python=\"`shape`\" pulumi-lang-yaml=\"`shape`\" pulumi-lang-java=\"`shape`\">`shape`</span>, <span pulumi-lang-nodejs=\"`short`\" pulumi-lang-dotnet=\"`Short`\" pulumi-lang-go=\"`short`\" pulumi-lang-python=\"`short`\" pulumi-lang-yaml=\"`short`\" pulumi-lang-java=\"`short`\">`short`</span>, <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span>.\n","type":"string"},"updatedAt":{"description":"The timestamp of when the list was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the list.\n","type":"string"},"version":{"description":"The document version number.\n","type":"number"},"versionId":{"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":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListDataStreamsKibanaConnection:KibanaSecurityListDataStreamsKibanaConnection"},"type":"array"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListDataStreamsKibanaConnection:KibanaSecurityListDataStreamsKibanaConnection"},"type":"array"},"listIndex":{"description":"Indicates whether the `.lists` data stream exists.\n","type":"boolean"},"listItemIndex":{"description":"Indicates whether the `.items` data stream exists.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"required":["listIndex","listItemIndex","spaceId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityListDataStreams resources.\n","properties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListDataStreamsKibanaConnection:KibanaSecurityListDataStreamsKibanaConnection"},"type":"array"},"listIndex":{"description":"Indicates whether the `.lists` data stream exists.\n","type":"boolean"},"listItemIndex":{"description":"Indicates whether the `.items` data stream exists.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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<string, object?>\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\", &elasticstack.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\", &elasticstack.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<!--End PulumiCodeChooser -->\n","inputProperties":{"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListItemKibanaConnection:KibanaSecurityListItemKibanaConnection"},"type":"array"},"listId":{"description":"The value list's identifier that this item belongs to.\n","type":"string"},"listItemId":{"description":"The value list item's identifier (auto-generated by Kibana if not specified).\n","type":"string"},"meta":{"description":"Placeholder for metadata about the value list item as JSON string.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"value":{"description":"The value used to evaluate exceptions. The value's data type must match the list's type.\n","type":"string"}},"properties":{"createdAt":{"description":"The timestamp of when the list item was created.\n","type":"string"},"createdBy":{"description":"The user who created the list item.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListItemKibanaConnection:KibanaSecurityListItemKibanaConnection"},"type":"array"},"listId":{"description":"The value list's identifier that this item belongs to.\n","type":"string"},"listItemId":{"description":"The value list item's identifier (auto-generated by Kibana if not specified).\n","type":"string"},"meta":{"description":"Placeholder for metadata about the value list item as JSON string.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"updatedAt":{"description":"The timestamp of when the list item was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the list item.\n","type":"string"},"value":{"description":"The value used to evaluate exceptions. The value's data type must match the list's type.\n","type":"string"},"versionId":{"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":"string"}},"required":["createdAt","createdBy","listId","listItemId","spaceId","updatedAt","updatedBy","value","versionId"],"requiredInputs":["listId","value"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityListItem resources.\n","properties":{"createdAt":{"description":"The timestamp of when the list item was created.\n","type":"string"},"createdBy":{"description":"The user who created the list item.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityListItemKibanaConnection:KibanaSecurityListItemKibanaConnection"},"type":"array"},"listId":{"description":"The value list's identifier that this item belongs to.\n","type":"string"},"listItemId":{"description":"The value list item's identifier (auto-generated by Kibana if not specified).\n","type":"string"},"meta":{"description":"Placeholder for metadata about the value list item as JSON string.\n","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"updatedAt":{"description":"The timestamp of when the list item was last updated.\n","type":"string"},"updatedBy":{"description":"The user who last updated the list item.\n","type":"string"},"value":{"description":"The value used to evaluate exceptions. The value's data type must match the list's type.\n","type":"string"},"versionId":{"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":"string"}},"type":"object"},"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\nSee also: Security Roles Guide\n\n## Example Usage\n\n### Data analyst\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst dataAnalyst = new elasticstack.KibanaSecurityRole(\"data_analyst\", {\n    name: \"data_analyst\",\n    elasticsearch: {\n        clusters: [\"monitor\"],\n        indices: [{\n            names: [\n                \"logs-*\",\n                \"metrics-*\",\n            ],\n            privileges: [\n                \"read\",\n                \"view_index_metadata\",\n            ],\n        }],\n    },\n    kibanas: [{\n        features: [\n            {\n                name: \"dashboard\",\n                privileges: [\"read\"],\n            },\n            {\n                name: \"discover\",\n                privileges: [\n                    \"minimal_read\",\n                    \"url_create\",\n                    \"store_search_session\",\n                ],\n            },\n        ],\n        spaces: [\"analytics\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\ndata_analyst = elasticstack.KibanaSecurityRole(\"data_analyst\",\n    name=\"data_analyst\",\n    elasticsearch={\n        \"clusters\": [\"monitor\"],\n        \"indices\": [{\n            \"names\": [\n                \"logs-*\",\n                \"metrics-*\",\n            ],\n            \"privileges\": [\n                \"read\",\n                \"view_index_metadata\",\n            ],\n        }],\n    },\n    kibanas=[{\n        \"features\": [\n            {\n                \"name\": \"dashboard\",\n                \"privileges\": [\"read\"],\n            },\n            {\n                \"name\": \"discover\",\n                \"privileges\": [\n                    \"minimal_read\",\n                    \"url_create\",\n                    \"store_search_session\",\n                ],\n            },\n        ],\n        \"spaces\": [\"analytics\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var dataAnalyst = new Elasticstack.KibanaSecurityRole(\"data_analyst\", new()\n    {\n        Name = \"data_analyst\",\n        Elasticsearch = new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchArgs\n        {\n            Clusters = new[]\n            {\n                \"monitor\",\n            },\n            Indices = new[]\n            {\n                new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchIndexArgs\n                {\n                    Names = new[]\n                    {\n                        \"logs-*\",\n                        \"metrics-*\",\n                    },\n                    Privileges = new[]\n                    {\n                        \"read\",\n                        \"view_index_metadata\",\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 = \"dashboard\",\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                },\n                Spaces = new[]\n                {\n                    \"analytics\",\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, \"data_analyst\", &elasticstack.KibanaSecurityRoleArgs{\n\t\t\tName: pulumi.String(\"data_analyst\"),\n\t\t\tElasticsearch: &elasticstack.KibanaSecurityRoleElasticsearchArgs{\n\t\t\t\tClusters: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"monitor\"),\n\t\t\t\t},\n\t\t\t\tIndices: elasticstack.KibanaSecurityRoleElasticsearchIndexArray{\n\t\t\t\t\t&elasticstack.KibanaSecurityRoleElasticsearchIndexArgs{\n\t\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"logs-*\"),\n\t\t\t\t\t\t\tpulumi.String(\"metrics-*\"),\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(\"read\"),\n\t\t\t\t\t\t\tpulumi.String(\"view_index_metadata\"),\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&elasticstack.KibanaSecurityRoleKibanaArgs{\n\t\t\t\t\tFeatures: elasticstack.KibanaSecurityRoleKibanaFeatureArray{\n\t\t\t\t\t\t&elasticstack.KibanaSecurityRoleKibanaFeatureArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"dashboard\"),\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&elasticstack.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},\n\t\t\t\t\tSpaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"analytics\"),\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 dataAnalyst = new KibanaSecurityRole(\"dataAnalyst\", KibanaSecurityRoleArgs.builder()\n            .name(\"data_analyst\")\n            .elasticsearch(KibanaSecurityRoleElasticsearchArgs.builder()\n                .clusters(\"monitor\")\n                .indices(KibanaSecurityRoleElasticsearchIndexArgs.builder()\n                    .names(                    \n                        \"logs-*\",\n                        \"metrics-*\")\n                    .privileges(                    \n                        \"read\",\n                        \"view_index_metadata\")\n                    .build())\n                .build())\n            .kibanas(KibanaSecurityRoleKibanaArgs.builder()\n                .features(                \n                    KibanaSecurityRoleKibanaFeatureArgs.builder()\n                        .name(\"dashboard\")\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                .spaces(\"analytics\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  dataAnalyst:\n    type: elasticstack:KibanaSecurityRole\n    name: data_analyst\n    properties:\n      name: data_analyst\n      elasticsearch:\n        clusters:\n          - monitor\n        indices:\n          - names:\n              - logs-*\n              - metrics-*\n            privileges:\n              - read\n              - view_index_metadata\n      kibanas:\n        - features:\n            - name: dashboard\n              privileges:\n                - read\n            - name: discover\n              privileges:\n                - minimal_read\n                - url_create\n                - store_search_session\n          spaces:\n            - analytics\n```\n<!--End PulumiCodeChooser -->\n\n### Multi-space access\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as elasticstack from \"@pulumi/elasticstack\";\n\nconst multiSpace = new elasticstack.KibanaSecurityRole(\"multi_space\", {\n    name: \"multi_space\",\n    elasticsearch: {\n        clusters: [\"monitor\"],\n        indices: [{\n            names: [\n                \"logs-*\",\n                \"metrics-*\",\n                \"traces-*\",\n            ],\n            privileges: [\n                \"read\",\n                \"view_index_metadata\",\n            ],\n        }],\n    },\n    kibanas: [\n        {\n            bases: [\"all\"],\n            spaces: [\n                \"dev\",\n                \"staging\",\n            ],\n        },\n        {\n            features: [\n                {\n                    name: \"dashboard\",\n                    privileges: [\"read\"],\n                },\n                {\n                    name: \"discover\",\n                    privileges: [\n                        \"minimal_read\",\n                        \"url_create\",\n                        \"store_search_session\",\n                    ],\n                },\n            ],\n            spaces: [\"prod\"],\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_elasticstack as elasticstack\n\nmulti_space = elasticstack.KibanaSecurityRole(\"multi_space\",\n    name=\"multi_space\",\n    elasticsearch={\n        \"clusters\": [\"monitor\"],\n        \"indices\": [{\n            \"names\": [\n                \"logs-*\",\n                \"metrics-*\",\n                \"traces-*\",\n            ],\n            \"privileges\": [\n                \"read\",\n                \"view_index_metadata\",\n            ],\n        }],\n    },\n    kibanas=[\n        {\n            \"bases\": [\"all\"],\n            \"spaces\": [\n                \"dev\",\n                \"staging\",\n            ],\n        },\n        {\n            \"features\": [\n                {\n                    \"name\": \"dashboard\",\n                    \"privileges\": [\"read\"],\n                },\n                {\n                    \"name\": \"discover\",\n                    \"privileges\": [\n                        \"minimal_read\",\n                        \"url_create\",\n                        \"store_search_session\",\n                    ],\n                },\n            ],\n            \"spaces\": [\"prod\"],\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \n{\n    var multiSpace = new Elasticstack.KibanaSecurityRole(\"multi_space\", new()\n    {\n        Name = \"multi_space\",\n        Elasticsearch = new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchArgs\n        {\n            Clusters = new[]\n            {\n                \"monitor\",\n            },\n            Indices = new[]\n            {\n                new Elasticstack.Inputs.KibanaSecurityRoleElasticsearchIndexArgs\n                {\n                    Names = new[]\n                    {\n                        \"logs-*\",\n                        \"metrics-*\",\n                        \"traces-*\",\n                    },\n                    Privileges = new[]\n                    {\n                        \"read\",\n                        \"view_index_metadata\",\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                    \"dev\",\n                    \"staging\",\n                },\n            },\n            new Elasticstack.Inputs.KibanaSecurityRoleKibanaArgs\n            {\n                Features = new[]\n                {\n                    new Elasticstack.Inputs.KibanaSecurityRoleKibanaFeatureArgs\n                    {\n                        Name = \"dashboard\",\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                },\n                Spaces = new[]\n                {\n                    \"prod\",\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, \"multi_space\", &elasticstack.KibanaSecurityRoleArgs{\n\t\t\tName: pulumi.String(\"multi_space\"),\n\t\t\tElasticsearch: &elasticstack.KibanaSecurityRoleElasticsearchArgs{\n\t\t\t\tClusters: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"monitor\"),\n\t\t\t\t},\n\t\t\t\tIndices: elasticstack.KibanaSecurityRoleElasticsearchIndexArray{\n\t\t\t\t\t&elasticstack.KibanaSecurityRoleElasticsearchIndexArgs{\n\t\t\t\t\t\tNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"logs-*\"),\n\t\t\t\t\t\t\tpulumi.String(\"metrics-*\"),\n\t\t\t\t\t\t\tpulumi.String(\"traces-*\"),\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(\"read\"),\n\t\t\t\t\t\t\tpulumi.String(\"view_index_metadata\"),\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&elasticstack.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(\"dev\"),\n\t\t\t\t\t\tpulumi.String(\"staging\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&elasticstack.KibanaSecurityRoleKibanaArgs{\n\t\t\t\t\tFeatures: elasticstack.KibanaSecurityRoleKibanaFeatureArray{\n\t\t\t\t\t\t&elasticstack.KibanaSecurityRoleKibanaFeatureArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"dashboard\"),\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&elasticstack.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},\n\t\t\t\t\tSpaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"prod\"),\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 multiSpace = new KibanaSecurityRole(\"multiSpace\", KibanaSecurityRoleArgs.builder()\n            .name(\"multi_space\")\n            .elasticsearch(KibanaSecurityRoleElasticsearchArgs.builder()\n                .clusters(\"monitor\")\n                .indices(KibanaSecurityRoleElasticsearchIndexArgs.builder()\n                    .names(                    \n                        \"logs-*\",\n                        \"metrics-*\",\n                        \"traces-*\")\n                    .privileges(                    \n                        \"read\",\n                        \"view_index_metadata\")\n                    .build())\n                .build())\n            .kibanas(            \n                KibanaSecurityRoleKibanaArgs.builder()\n                    .bases(\"all\")\n                    .spaces(                    \n                        \"dev\",\n                        \"staging\")\n                    .build(),\n                KibanaSecurityRoleKibanaArgs.builder()\n                    .features(                    \n                        KibanaSecurityRoleKibanaFeatureArgs.builder()\n                            .name(\"dashboard\")\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                    .spaces(\"prod\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  multiSpace:\n    type: elasticstack:KibanaSecurityRole\n    name: multi_space\n    properties:\n      name: multi_space\n      elasticsearch:\n        clusters:\n          - monitor\n        indices:\n          - names:\n              - logs-*\n              - metrics-*\n              - traces-*\n            privileges:\n              - read\n              - view_index_metadata\n      kibanas:\n        - bases:\n            - all\n          spaces:\n            - dev\n            - staging\n        - features:\n            - name: dashboard\n              privileges:\n                - read\n            - name: discover\n              privileges:\n                - minimal_read\n                - url_create\n                - store_search_session\n          spaces:\n            - prod\n```\n<!--End PulumiCodeChooser -->\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 <role name>\n```\n\n","inputProperties":{"description":{"description":"Optional description for the role\n","type":"string"},"elasticsearch":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearch:KibanaSecurityRoleElasticsearch","description":"Elasticsearch cluster and index privileges.\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibanaConnection:KibanaSecurityRoleKibanaConnection"},"type":"array"},"kibanas":{"description":"The list of objects that specify the Kibana privileges for the role.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibana:KibanaSecurityRoleKibana"},"type":"array"},"metadata":{"description":"Optional meta-data.\n","type":"string"},"name":{"description":"The name for the role.\n","type":"string"}},"properties":{"description":{"description":"Optional description for the role\n","type":"string"},"elasticsearch":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearch:KibanaSecurityRoleElasticsearch","description":"Elasticsearch cluster and index privileges.\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibanaConnection:KibanaSecurityRoleKibanaConnection"},"type":"array"},"kibanas":{"description":"The list of objects that specify the Kibana privileges for the role.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibana:KibanaSecurityRoleKibana"},"type":"array"},"metadata":{"description":"Optional meta-data.\n","type":"string"},"name":{"description":"The name for the role.\n","type":"string"}},"required":["metadata","name"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSecurityRole resources.\n","properties":{"description":{"description":"Optional description for the role\n","type":"string"},"elasticsearch":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearch:KibanaSecurityRoleElasticsearch","description":"Elasticsearch cluster and index privileges.\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibanaConnection:KibanaSecurityRoleKibanaConnection"},"type":"array"},"kibanas":{"description":"The list of objects that specify the Kibana privileges for the role.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibana:KibanaSecurityRoleKibana"},"type":"array"},"metadata":{"description":"Optional meta-data.\n","type":"string"},"name":{"description":"The name for the role.\n","type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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 < 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// ES Query DSL regexp example: filter requests with regexp on httpRequest.referer\n// (e.g., CDN PR-preview URLs). Supports any ES Query DSL expression inside query.\n// The same filters pattern works on good_kql and total_kql as well.\nconst kqlRegexpFilter = new elasticstack.KibanaSlo(\"kql_regexp_filter\", {\n    name: \"kql regexp filter example\",\n    description: \"KQL custom indicator with ES Query DSL regexp filter\",\n    kqlCustomIndicators: [{\n        index: \"my-index\",\n        total: \"*\",\n        filterKql: {\n            kqlQuery: \"service.name: checkout\",\n            filters: [{\n                query: JSON.stringify({\n                    regexp: {\n                        \"httpRequest.referer\": {\n                            case_insensitive: true,\n                            flags: \"ALL\",\n                            value: \".*pr-preview.*\",\n                        },\n                    },\n                }),\n            }],\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    settings: {\n        syncDelay: \"5m\",\n        frequency: \"5m\",\n    },\n});\n// Object-form KQL (filter_kql, good_kql, total_kql) and optional settings.sync_field / enabled\n// (see resource schema). Use the attribute form `filter_kql = { kql_query = \"...\" }` inside\n// `kql_custom_indicator`, not a nested `filter_kql { }` block.\nconst kqlObjectForm = new elasticstack.KibanaSlo(\"kql_object_form\", {\n    name: \"kql object form example\",\n    description: \"KQL with object-form union and managed enabled state\",\n    enabled: true,\n    kqlCustomIndicators: [{\n        index: \"my-index\",\n        filterKql: {\n            kqlQuery: \"service.name: checkout\",\n        },\n        goodKql: {\n            kqlQuery: \"http.response.status_code: 200\",\n        },\n        totalKql: {\n            kqlQuery: \"*\",\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    settings: {\n        syncDelay: \"5m\",\n        frequency: \"5m\",\n        syncField: \"@timestamp\",\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 < 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 json\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 < 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# ES Query DSL regexp example: filter requests with regexp on httpRequest.referer\n# (e.g., CDN PR-preview URLs). Supports any ES Query DSL expression inside query.\n# The same filters pattern works on good_kql and total_kql as well.\nkql_regexp_filter = elasticstack.KibanaSlo(\"kql_regexp_filter\",\n    name=\"kql regexp filter example\",\n    description=\"KQL custom indicator with ES Query DSL regexp filter\",\n    kql_custom_indicators=[{\n        \"index\": \"my-index\",\n        \"total\": \"*\",\n        \"filter_kql\": {\n            \"kql_query\": \"service.name: checkout\",\n            \"filters\": [{\n                \"query\": json.dumps({\n                    \"regexp\": {\n                        \"httpRequest.referer\": {\n                            \"case_insensitive\": True,\n                            \"flags\": \"ALL\",\n                            \"value\": \".*pr-preview.*\",\n                        },\n                    },\n                }),\n            }],\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    settings={\n        \"sync_delay\": \"5m\",\n        \"frequency\": \"5m\",\n    })\n# Object-form KQL (filter_kql, good_kql, total_kql) and optional settings.sync_field / enabled\n# (see resource schema). Use the attribute form `filter_kql = { kql_query = \"...\" }` inside\n# `kql_custom_indicator`, not a nested `filter_kql { }` block.\nkql_object_form = elasticstack.KibanaSlo(\"kql_object_form\",\n    name=\"kql object form example\",\n    description=\"KQL with object-form union and managed enabled state\",\n    enabled=True,\n    kql_custom_indicators=[{\n        \"index\": \"my-index\",\n        \"filter_kql\": {\n            \"kql_query\": \"service.name: checkout\",\n        },\n        \"good_kql\": {\n            \"kql_query\": \"http.response.status_code: 200\",\n        },\n        \"total_kql\": {\n            \"kql_query\": \"*\",\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    settings={\n        \"sync_delay\": \"5m\",\n        \"frequency\": \"5m\",\n        \"sync_field\": \"@timestamp\",\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 < 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 System.Text.Json;\nusing Pulumi;\nusing Elasticstack = Pulumi.Elasticstack;\n\nreturn await Deployment.RunAsync(() => \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 < 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    // ES Query DSL regexp example: filter requests with regexp on httpRequest.referer\n    // (e.g., CDN PR-preview URLs). Supports any ES Query DSL expression inside query.\n    // The same filters pattern works on good_kql and total_kql as well.\n    var kqlRegexpFilter = new Elasticstack.KibanaSlo(\"kql_regexp_filter\", new()\n    {\n        Name = \"kql regexp filter example\",\n        Description = \"KQL custom indicator with ES Query DSL regexp filter\",\n        KqlCustomIndicators = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloKqlCustomIndicatorArgs\n            {\n                Index = \"my-index\",\n                Total = \"*\",\n                FilterKql = new Elasticstack.Inputs.KibanaSloKqlCustomIndicatorFilterKqlArgs\n                {\n                    KqlQuery = \"service.name: checkout\",\n                    Filters = new[]\n                    {\n                        new Elasticstack.Inputs.KibanaSloKqlCustomIndicatorFilterKqlFilterArgs\n                        {\n                            Query = JsonSerializer.Serialize(new Dictionary<string, object?>\n                            {\n                                [\"regexp\"] = new Dictionary<string, object?>\n                                {\n                                    [\"httpRequest.referer\"] = new Dictionary<string, object?>\n                                    {\n                                        [\"case_insensitive\"] = true,\n                                        [\"flags\"] = \"ALL\",\n                                        [\"value\"] = \".*pr-preview.*\",\n                                    },\n                                },\n                            }),\n                        },\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        Settings = new Elasticstack.Inputs.KibanaSloSettingsArgs\n        {\n            SyncDelay = \"5m\",\n            Frequency = \"5m\",\n        },\n    });\n\n    // Object-form KQL (filter_kql, good_kql, total_kql) and optional settings.sync_field / enabled\n    // (see resource schema). Use the attribute form `filter_kql = { kql_query = \"...\" }` inside\n    // `kql_custom_indicator`, not a nested `filter_kql { }` block.\n    var kqlObjectForm = new Elasticstack.KibanaSlo(\"kql_object_form\", new()\n    {\n        Name = \"kql object form example\",\n        Description = \"KQL with object-form union and managed enabled state\",\n        Enabled = true,\n        KqlCustomIndicators = new[]\n        {\n            new Elasticstack.Inputs.KibanaSloKqlCustomIndicatorArgs\n            {\n                Index = \"my-index\",\n                FilterKql = new Elasticstack.Inputs.KibanaSloKqlCustomIndicatorFilterKqlArgs\n                {\n                    KqlQuery = \"service.name: checkout\",\n                },\n                GoodKql = new Elasticstack.Inputs.KibanaSloKqlCustomIndicatorGoodKqlArgs\n                {\n                    KqlQuery = \"http.response.status_code: 200\",\n                },\n                TotalKql = new Elasticstack.Inputs.KibanaSloKqlCustomIndicatorTotalKqlArgs\n                {\n                    KqlQuery = \"*\",\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        Settings = new Elasticstack.Inputs.KibanaSloSettingsArgs\n        {\n            SyncDelay = \"5m\",\n            Frequency = \"5m\",\n            SyncField = \"@timestamp\",\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 < 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\"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.NewKibanaSlo(ctx, \"auth_server_latency\", &elasticstack.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&elasticstack.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&elasticstack.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&elasticstack.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: &elasticstack.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\", &elasticstack.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&elasticstack.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&elasticstack.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&elasticstack.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: &elasticstack.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\", &elasticstack.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&elasticstack.KibanaSloKqlCustomIndicatorArgs{\n\t\t\t\t\tIndex:          pulumi.String(\"my-index\"),\n\t\t\t\t\tGood:           pulumi.String(\"latency < 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&elasticstack.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&elasticstack.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: &elasticstack.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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"regexp\": map[string]interface{}{\n\t\t\t\t\"httpRequest.referer\": map[string]interface{}{\n\t\t\t\t\t\"case_insensitive\": true,\n\t\t\t\t\t\"flags\":            \"ALL\",\n\t\t\t\t\t\"value\":            \".*pr-preview.*\",\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// ES Query DSL regexp example: filter requests with regexp on httpRequest.referer\n\t\t// (e.g., CDN PR-preview URLs). Supports any ES Query DSL expression inside query.\n\t\t// The same filters pattern works on good_kql and total_kql as well.\n\t\t_, err = elasticstack.NewKibanaSlo(ctx, \"kql_regexp_filter\", &elasticstack.KibanaSloArgs{\n\t\t\tName:        pulumi.String(\"kql regexp filter example\"),\n\t\t\tDescription: pulumi.String(\"KQL custom indicator with ES Query DSL regexp filter\"),\n\t\t\tKqlCustomIndicators: elasticstack.KibanaSloKqlCustomIndicatorArray{\n\t\t\t\t&elasticstack.KibanaSloKqlCustomIndicatorArgs{\n\t\t\t\t\tIndex: pulumi.String(\"my-index\"),\n\t\t\t\t\tTotal: pulumi.String(\"*\"),\n\t\t\t\t\tFilterKql: &elasticstack.KibanaSloKqlCustomIndicatorFilterKqlArgs{\n\t\t\t\t\t\tKqlQuery: pulumi.String(\"service.name: checkout\"),\n\t\t\t\t\t\tFilters: elasticstack.KibanaSloKqlCustomIndicatorFilterKqlFilterArray{\n\t\t\t\t\t\t\t&elasticstack.KibanaSloKqlCustomIndicatorFilterKqlFilterArgs{\n\t\t\t\t\t\t\t\tQuery: pulumi.String(json0),\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\tTimeWindows: elasticstack.KibanaSloTimeWindowArray{\n\t\t\t\t&elasticstack.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&elasticstack.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: &elasticstack.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// Object-form KQL (filter_kql, good_kql, total_kql) and optional settings.sync_field / enabled\n\t\t// (see resource schema). Use the attribute form `filter_kql = { kql_query = \"...\" }` inside\n\t\t// `kql_custom_indicator`, not a nested `filter_kql { }` block.\n\t\t_, err = elasticstack.NewKibanaSlo(ctx, \"kql_object_form\", &elasticstack.KibanaSloArgs{\n\t\t\tName:        pulumi.String(\"kql object form example\"),\n\t\t\tDescription: pulumi.String(\"KQL with object-form union and managed enabled state\"),\n\t\t\tEnabled:     pulumi.Bool(true),\n\t\t\tKqlCustomIndicators: elasticstack.KibanaSloKqlCustomIndicatorArray{\n\t\t\t\t&elasticstack.KibanaSloKqlCustomIndicatorArgs{\n\t\t\t\t\tIndex: pulumi.String(\"my-index\"),\n\t\t\t\t\tFilterKql: &elasticstack.KibanaSloKqlCustomIndicatorFilterKqlArgs{\n\t\t\t\t\t\tKqlQuery: pulumi.String(\"service.name: checkout\"),\n\t\t\t\t\t},\n\t\t\t\t\tGoodKql: &elasticstack.KibanaSloKqlCustomIndicatorGoodKqlArgs{\n\t\t\t\t\t\tKqlQuery: pulumi.String(\"http.response.status_code: 200\"),\n\t\t\t\t\t},\n\t\t\t\t\tTotalKql: &elasticstack.KibanaSloKqlCustomIndicatorTotalKqlArgs{\n\t\t\t\t\t\tKqlQuery: pulumi.String(\"*\"),\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&elasticstack.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&elasticstack.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: &elasticstack.KibanaSloSettingsArgs{\n\t\t\t\tSyncDelay: pulumi.String(\"5m\"),\n\t\t\t\tFrequency: pulumi.String(\"5m\"),\n\t\t\t\tSyncField: 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\t// Available from 8.10.0\n\t\t_, err = elasticstack.NewKibanaSlo(ctx, \"custom_histogram\", &elasticstack.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&elasticstack.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&elasticstack.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 < 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&elasticstack.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&elasticstack.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&elasticstack.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\", &elasticstack.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&elasticstack.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&elasticstack.KibanaSloMetricCustomIndicatorGoodArgs{\n\t\t\t\t\t\t\tMetrics: elasticstack.KibanaSloMetricCustomIndicatorGoodMetricArray{\n\t\t\t\t\t\t\t\t&elasticstack.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&elasticstack.KibanaSloMetricCustomIndicatorTotalArgs{\n\t\t\t\t\t\t\tMetrics: elasticstack.KibanaSloMetricCustomIndicatorTotalMetricArray{\n\t\t\t\t\t\t\t\t&elasticstack.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&elasticstack.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&elasticstack.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\", &elasticstack.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&elasticstack.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&elasticstack.KibanaSloTimesliceMetricIndicatorMetricArgs{\n\t\t\t\t\t\t\tMetrics: elasticstack.KibanaSloTimesliceMetricIndicatorMetricMetricArray{\n\t\t\t\t\t\t\t\t&elasticstack.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&elasticstack.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&elasticstack.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.KibanaSloKqlCustomIndicatorFilterKqlArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloKqlCustomIndicatorGoodKqlArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloKqlCustomIndicatorTotalKqlArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloHistogramCustomIndicatorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloMetricCustomIndicatorArgs;\nimport com.pulumi.elasticstack.inputs.KibanaSloTimesliceMetricIndicatorArgs;\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 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 < 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        // ES Query DSL regexp example: filter requests with regexp on httpRequest.referer\n        // (e.g., CDN PR-preview URLs). Supports any ES Query DSL expression inside query.\n        // The same filters pattern works on good_kql and total_kql as well.\n        var kqlRegexpFilter = new KibanaSlo(\"kqlRegexpFilter\", KibanaSloArgs.builder()\n            .name(\"kql regexp filter example\")\n            .description(\"KQL custom indicator with ES Query DSL regexp filter\")\n            .kqlCustomIndicators(KibanaSloKqlCustomIndicatorArgs.builder()\n                .index(\"my-index\")\n                .total(\"*\")\n                .filterKql(KibanaSloKqlCustomIndicatorFilterKqlArgs.builder()\n                    .kqlQuery(\"service.name: checkout\")\n                    .filters(KibanaSloKqlCustomIndicatorFilterKqlFilterArgs.builder()\n                        .query(serializeJson(\n                            jsonObject(\n                                jsonProperty(\"regexp\", jsonObject(\n                                    jsonProperty(\"httpRequest.referer\", jsonObject(\n                                        jsonProperty(\"case_insensitive\", true),\n                                        jsonProperty(\"flags\", \"ALL\"),\n                                        jsonProperty(\"value\", \".*pr-preview.*\")\n                                    ))\n                                ))\n                            )))\n                        .build())\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            .settings(KibanaSloSettingsArgs.builder()\n                .syncDelay(\"5m\")\n                .frequency(\"5m\")\n                .build())\n            .build());\n\n        // Object-form KQL (filter_kql, good_kql, total_kql) and optional settings.sync_field / enabled\n        // (see resource schema). Use the attribute form `filter_kql = { kql_query = \"...\" }` inside\n        // `kql_custom_indicator`, not a nested `filter_kql { }` block.\n        var kqlObjectForm = new KibanaSlo(\"kqlObjectForm\", KibanaSloArgs.builder()\n            .name(\"kql object form example\")\n            .description(\"KQL with object-form union and managed enabled state\")\n            .enabled(true)\n            .kqlCustomIndicators(KibanaSloKqlCustomIndicatorArgs.builder()\n                .index(\"my-index\")\n                .filterKql(KibanaSloKqlCustomIndicatorFilterKqlArgs.builder()\n                    .kqlQuery(\"service.name: checkout\")\n                    .build())\n                .goodKql(KibanaSloKqlCustomIndicatorGoodKqlArgs.builder()\n                    .kqlQuery(\"http.response.status_code: 200\")\n                    .build())\n                .totalKql(KibanaSloKqlCustomIndicatorTotalKqlArgs.builder()\n                    .kqlQuery(\"*\")\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            .settings(KibanaSloSettingsArgs.builder()\n                .syncDelay(\"5m\")\n                .frequency(\"5m\")\n                .syncField(\"@timestamp\")\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 < 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 < 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  # ES Query DSL regexp example: filter requests with regexp on httpRequest.referer\n  # (e.g., CDN PR-preview URLs). Supports any ES Query DSL expression inside query.\n  # The same filters pattern works on good_kql and total_kql as well.\n  kqlRegexpFilter:\n    type: elasticstack:KibanaSlo\n    name: kql_regexp_filter\n    properties:\n      name: kql regexp filter example\n      description: KQL custom indicator with ES Query DSL regexp filter\n      kqlCustomIndicators:\n        - index: my-index\n          total: '*'\n          filterKql:\n            kqlQuery: 'service.name: checkout'\n            filters:\n              - query:\n                  fn::toJSON:\n                    regexp:\n                      httpRequest.referer:\n                        case_insensitive: true\n                        flags: ALL\n                        value: .*pr-preview.*\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  # Object-form KQL (filter_kql, good_kql, total_kql) and optional settings.sync_field / enabled\n  # (see resource schema). Use the attribute form `filter_kql = { kql_query = \"...\" }` inside\n  # `kql_custom_indicator`, not a nested `filter_kql { }` block.\n  kqlObjectForm:\n    type: elasticstack:KibanaSlo\n    name: kql_object_form\n    properties:\n      name: kql object form example\n      description: KQL with object-form union and managed enabled state\n      enabled: true\n      kqlCustomIndicators:\n        - index: my-index\n          filterKql:\n            kqlQuery: 'service.name: checkout'\n          goodKql:\n            kqlQuery: 'http.response.status_code: 200'\n          totalKql:\n            kqlQuery: '*'\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        syncField: '@timestamp'\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 < 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<!--End PulumiCodeChooser -->\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 <space id>/<slo id>\n```\n\n","inputProperties":{"apmAvailabilityIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmAvailabilityIndicator:KibanaSloApmAvailabilityIndicator"},"type":"array"},"apmLatencyIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmLatencyIndicator:KibanaSloApmLatencyIndicator"},"type":"array"},"artifacts":{"$ref":"#/types/elasticstack:index%2FKibanaSloArtifacts:KibanaSloArtifacts","description":"Links to related assets (for example dashboards) returned and managed with the SLO.\n"},"budgetingMethod":{"description":"An <span pulumi-lang-nodejs=\"`occurrences`\" pulumi-lang-dotnet=\"`Occurrences`\" pulumi-lang-go=\"`occurrences`\" pulumi-lang-python=\"`occurrences`\" pulumi-lang-yaml=\"`occurrences`\" pulumi-lang-java=\"`occurrences`\">`occurrences`</span> budgeting method uses the number of good and total events during the time window. A <span pulumi-lang-nodejs=\"`timeslices`\" pulumi-lang-dotnet=\"`Timeslices`\" pulumi-lang-go=\"`timeslices`\" pulumi-lang-python=\"`timeslices`\" pulumi-lang-yaml=\"`timeslices`\" pulumi-lang-java=\"`timeslices`\">`timeslices`</span> 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","type":"string"},"description":{"description":"A description for the SLO.\n","type":"string"},"enabled":{"description":"Whether the SLO is enabled in Kibana.\n","type":"boolean"},"groupBies":{"description":"Optional group by fields to use to generate an SLO per distinct value.\n","items":{"type":"string"},"type":"array"},"histogramCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicator:KibanaSloHistogramCustomIndicator"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKibanaConnection:KibanaSloKibanaConnection"},"type":"array"},"kqlCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicator:KibanaSloKqlCustomIndicator"},"type":"array"},"metricCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicator:KibanaSloMetricCustomIndicator"},"type":"array"},"name":{"description":"The name of the SLO.\n","type":"string"},"objectives":{"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","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloObjective:KibanaSloObjective"},"type":"array"},"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":{"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","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"The tags for the SLO.\n","items":{"type":"string"},"type":"array"},"timeWindows":{"description":"Currently supports `calendarAligned` and <span pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\">`rolling`</span> time windows. For `type = \"rolling\"`, duration must be one of <span pulumi-lang-nodejs=\"`7d`\" pulumi-lang-dotnet=\"`7d`\" pulumi-lang-go=\"`7d`\" pulumi-lang-python=\"`7d`\" pulumi-lang-yaml=\"`7d`\" pulumi-lang-java=\"`7d`\">`7d`</span> (7 days), <span pulumi-lang-nodejs=\"`30d`\" pulumi-lang-dotnet=\"`30d`\" pulumi-lang-go=\"`30d`\" pulumi-lang-python=\"`30d`\" pulumi-lang-yaml=\"`30d`\" pulumi-lang-java=\"`30d`\">`30d`</span> (30 days), or <span pulumi-lang-nodejs=\"`90d`\" pulumi-lang-dotnet=\"`90d`\" pulumi-lang-go=\"`90d`\" pulumi-lang-python=\"`90d`\" pulumi-lang-yaml=\"`90d`\" pulumi-lang-java=\"`90d`\">`90d`</span> (90 days). For `type = \"calendarAligned\"`, duration must be either <span pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\">`1w`</span> (weekly) or `1M` (monthly). Rolling time window SLOs only consider SLI data from the last duration period as a moving window. Calendar aligned time windows align to calendar boundaries.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimeWindow:KibanaSloTimeWindow"},"type":"array"},"timesliceMetricIndicators":{"description":"Defines a timeslice metric indicator for SLO.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicator:KibanaSloTimesliceMetricIndicator"},"type":"array"}},"properties":{"apmAvailabilityIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmAvailabilityIndicator:KibanaSloApmAvailabilityIndicator"},"type":"array"},"apmLatencyIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmLatencyIndicator:KibanaSloApmLatencyIndicator"},"type":"array"},"artifacts":{"$ref":"#/types/elasticstack:index%2FKibanaSloArtifacts:KibanaSloArtifacts","description":"Links to related assets (for example dashboards) returned and managed with the SLO.\n"},"budgetingMethod":{"description":"An <span pulumi-lang-nodejs=\"`occurrences`\" pulumi-lang-dotnet=\"`Occurrences`\" pulumi-lang-go=\"`occurrences`\" pulumi-lang-python=\"`occurrences`\" pulumi-lang-yaml=\"`occurrences`\" pulumi-lang-java=\"`occurrences`\">`occurrences`</span> budgeting method uses the number of good and total events during the time window. A <span pulumi-lang-nodejs=\"`timeslices`\" pulumi-lang-dotnet=\"`Timeslices`\" pulumi-lang-go=\"`timeslices`\" pulumi-lang-python=\"`timeslices`\" pulumi-lang-yaml=\"`timeslices`\" pulumi-lang-java=\"`timeslices`\">`timeslices`</span> 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","type":"string"},"description":{"description":"A description for the SLO.\n","type":"string"},"enabled":{"description":"Whether the SLO is enabled in Kibana.\n","type":"boolean"},"groupBies":{"description":"Optional group by fields to use to generate an SLO per distinct value.\n","items":{"type":"string"},"type":"array"},"histogramCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicator:KibanaSloHistogramCustomIndicator"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKibanaConnection:KibanaSloKibanaConnection"},"type":"array"},"kqlCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicator:KibanaSloKqlCustomIndicator"},"type":"array"},"metricCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicator:KibanaSloMetricCustomIndicator"},"type":"array"},"name":{"description":"The name of the SLO.\n","type":"string"},"objectives":{"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","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloObjective:KibanaSloObjective"},"type":"array"},"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":{"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","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"The tags for the SLO.\n","items":{"type":"string"},"type":"array"},"timeWindows":{"description":"Currently supports `calendarAligned` and <span pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\">`rolling`</span> time windows. For `type = \"rolling\"`, duration must be one of <span pulumi-lang-nodejs=\"`7d`\" pulumi-lang-dotnet=\"`7d`\" pulumi-lang-go=\"`7d`\" pulumi-lang-python=\"`7d`\" pulumi-lang-yaml=\"`7d`\" pulumi-lang-java=\"`7d`\">`7d`</span> (7 days), <span pulumi-lang-nodejs=\"`30d`\" pulumi-lang-dotnet=\"`30d`\" pulumi-lang-go=\"`30d`\" pulumi-lang-python=\"`30d`\" pulumi-lang-yaml=\"`30d`\" pulumi-lang-java=\"`30d`\">`30d`</span> (30 days), or <span pulumi-lang-nodejs=\"`90d`\" pulumi-lang-dotnet=\"`90d`\" pulumi-lang-go=\"`90d`\" pulumi-lang-python=\"`90d`\" pulumi-lang-yaml=\"`90d`\" pulumi-lang-java=\"`90d`\">`90d`</span> (90 days). For `type = \"calendarAligned\"`, duration must be either <span pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\">`1w`</span> (weekly) or `1M` (monthly). Rolling time window SLOs only consider SLI data from the last duration period as a moving window. Calendar aligned time windows align to calendar boundaries.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimeWindow:KibanaSloTimeWindow"},"type":"array"},"timesliceMetricIndicators":{"description":"Defines a timeslice metric indicator for SLO.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicator:KibanaSloTimesliceMetricIndicator"},"type":"array"}},"required":["artifacts","budgetingMethod","description","enabled","groupBies","name","sloId","spaceId"],"requiredInputs":["budgetingMethod","description"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSlo resources.\n","properties":{"apmAvailabilityIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmAvailabilityIndicator:KibanaSloApmAvailabilityIndicator"},"type":"array"},"apmLatencyIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloApmLatencyIndicator:KibanaSloApmLatencyIndicator"},"type":"array"},"artifacts":{"$ref":"#/types/elasticstack:index%2FKibanaSloArtifacts:KibanaSloArtifacts","description":"Links to related assets (for example dashboards) returned and managed with the SLO.\n"},"budgetingMethod":{"description":"An <span pulumi-lang-nodejs=\"`occurrences`\" pulumi-lang-dotnet=\"`Occurrences`\" pulumi-lang-go=\"`occurrences`\" pulumi-lang-python=\"`occurrences`\" pulumi-lang-yaml=\"`occurrences`\" pulumi-lang-java=\"`occurrences`\">`occurrences`</span> budgeting method uses the number of good and total events during the time window. A <span pulumi-lang-nodejs=\"`timeslices`\" pulumi-lang-dotnet=\"`Timeslices`\" pulumi-lang-go=\"`timeslices`\" pulumi-lang-python=\"`timeslices`\" pulumi-lang-yaml=\"`timeslices`\" pulumi-lang-java=\"`timeslices`\">`timeslices`</span> 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","type":"string"},"description":{"description":"A description for the SLO.\n","type":"string"},"enabled":{"description":"Whether the SLO is enabled in Kibana.\n","type":"boolean"},"groupBies":{"description":"Optional group by fields to use to generate an SLO per distinct value.\n","items":{"type":"string"},"type":"array"},"histogramCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicator:KibanaSloHistogramCustomIndicator"},"type":"array"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKibanaConnection:KibanaSloKibanaConnection"},"type":"array"},"kqlCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicator:KibanaSloKqlCustomIndicator"},"type":"array"},"metricCustomIndicators":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicator:KibanaSloMetricCustomIndicator"},"type":"array"},"name":{"description":"The name of the SLO.\n","type":"string"},"objectives":{"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","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloObjective:KibanaSloObjective"},"type":"array"},"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":{"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","type":"string"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"The tags for the SLO.\n","items":{"type":"string"},"type":"array"},"timeWindows":{"description":"Currently supports `calendarAligned` and <span pulumi-lang-nodejs=\"`rolling`\" pulumi-lang-dotnet=\"`Rolling`\" pulumi-lang-go=\"`rolling`\" pulumi-lang-python=\"`rolling`\" pulumi-lang-yaml=\"`rolling`\" pulumi-lang-java=\"`rolling`\">`rolling`</span> time windows. For `type = \"rolling\"`, duration must be one of <span pulumi-lang-nodejs=\"`7d`\" pulumi-lang-dotnet=\"`7d`\" pulumi-lang-go=\"`7d`\" pulumi-lang-python=\"`7d`\" pulumi-lang-yaml=\"`7d`\" pulumi-lang-java=\"`7d`\">`7d`</span> (7 days), <span pulumi-lang-nodejs=\"`30d`\" pulumi-lang-dotnet=\"`30d`\" pulumi-lang-go=\"`30d`\" pulumi-lang-python=\"`30d`\" pulumi-lang-yaml=\"`30d`\" pulumi-lang-java=\"`30d`\">`30d`</span> (30 days), or <span pulumi-lang-nodejs=\"`90d`\" pulumi-lang-dotnet=\"`90d`\" pulumi-lang-go=\"`90d`\" pulumi-lang-python=\"`90d`\" pulumi-lang-yaml=\"`90d`\" pulumi-lang-java=\"`90d`\">`90d`</span> (90 days). For `type = \"calendarAligned\"`, duration must be either <span pulumi-lang-nodejs=\"`1w`\" pulumi-lang-dotnet=\"`1w`\" pulumi-lang-go=\"`1w`\" pulumi-lang-python=\"`1w`\" pulumi-lang-yaml=\"`1w`\" pulumi-lang-java=\"`1w`\">`1w`</span> (weekly) or `1M` (monthly). Rolling time window SLOs only consider SLI data from the last duration period as a moving window. Calendar aligned time windows align to calendar boundaries.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimeWindow:KibanaSloTimeWindow"},"type":"array"},"timesliceMetricIndicators":{"description":"Defines a timeslice metric indicator for SLO.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicator:KibanaSloTimesliceMetricIndicator"},"type":"array"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <cluster_uuid>/<space id>\n```\n\n","inputProperties":{"color":{"description":"The hexadecimal color code used in the space avatar. By default, the color is automatically generated from the space name.\n","type":"string"},"description":{"description":"The description for the space.\n","type":"string"},"disabledFeatures":{"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","items":{"type":"string"},"type":"array"},"imageUrl":{"description":"The data-URL encoded image to display in the space avatar.\n","type":"string"},"initials":{"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","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSpaceKibanaConnection:KibanaSpaceKibanaConnection"},"type":"array"},"name":{"description":"The display name for the space.\n","type":"string"},"solution":{"description":"The solution view for the space. Valid options are <span pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\">`security`</span>, <span pulumi-lang-nodejs=\"`oblt`\" pulumi-lang-dotnet=\"`Oblt`\" pulumi-lang-go=\"`oblt`\" pulumi-lang-python=\"`oblt`\" pulumi-lang-yaml=\"`oblt`\" pulumi-lang-java=\"`oblt`\">`oblt`</span>, <span pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\">`es`</span>, or <span pulumi-lang-nodejs=\"`classic`\" pulumi-lang-dotnet=\"`Classic`\" pulumi-lang-go=\"`classic`\" pulumi-lang-python=\"`classic`\" pulumi-lang-yaml=\"`classic`\" pulumi-lang-java=\"`classic`\">`classic`</span>.\n","type":"string"},"spaceId":{"description":"The space ID that is part of the Kibana URL when inside the space.\n","type":"string"}},"properties":{"color":{"description":"The hexadecimal color code used in the space avatar. By default, the color is automatically generated from the space name.\n","type":"string"},"description":{"description":"The description for the space.\n","type":"string"},"disabledFeatures":{"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","items":{"type":"string"},"type":"array"},"imageUrl":{"description":"The data-URL encoded image to display in the space avatar.\n","type":"string"},"initials":{"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","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSpaceKibanaConnection:KibanaSpaceKibanaConnection"},"type":"array"},"name":{"description":"The display name for the space.\n","type":"string"},"solution":{"description":"The solution view for the space. Valid options are <span pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\">`security`</span>, <span pulumi-lang-nodejs=\"`oblt`\" pulumi-lang-dotnet=\"`Oblt`\" pulumi-lang-go=\"`oblt`\" pulumi-lang-python=\"`oblt`\" pulumi-lang-yaml=\"`oblt`\" pulumi-lang-java=\"`oblt`\">`oblt`</span>, <span pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\">`es`</span>, or <span pulumi-lang-nodejs=\"`classic`\" pulumi-lang-dotnet=\"`Classic`\" pulumi-lang-go=\"`classic`\" pulumi-lang-python=\"`classic`\" pulumi-lang-yaml=\"`classic`\" pulumi-lang-java=\"`classic`\">`classic`</span>.\n","type":"string"},"spaceId":{"description":"The space ID that is part of the Kibana URL when inside the space.\n","type":"string"}},"required":["color","disabledFeatures","initials","name","solution","spaceId"],"requiredInputs":["spaceId"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSpace resources.\n","properties":{"color":{"description":"The hexadecimal color code used in the space avatar. By default, the color is automatically generated from the space name.\n","type":"string"},"description":{"description":"The description for the space.\n","type":"string"},"disabledFeatures":{"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","items":{"type":"string"},"type":"array"},"imageUrl":{"description":"The data-URL encoded image to display in the space avatar.\n","type":"string"},"initials":{"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","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSpaceKibanaConnection:KibanaSpaceKibanaConnection"},"type":"array"},"name":{"description":"The display name for the space.\n","type":"string"},"solution":{"description":"The solution view for the space. Valid options are <span pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\">`security`</span>, <span pulumi-lang-nodejs=\"`oblt`\" pulumi-lang-dotnet=\"`Oblt`\" pulumi-lang-go=\"`oblt`\" pulumi-lang-python=\"`oblt`\" pulumi-lang-yaml=\"`oblt`\" pulumi-lang-java=\"`oblt`\">`oblt`</span>, <span pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\">`es`</span>, or <span pulumi-lang-nodejs=\"`classic`\" pulumi-lang-dotnet=\"`Classic`\" pulumi-lang-go=\"`classic`\" pulumi-lang-python=\"`classic`\" pulumi-lang-yaml=\"`classic`\" pulumi-lang-java=\"`classic`\">`classic`</span>.\n","type":"string"},"spaceId":{"description":"The space ID that is part of the Kibana URL when inside the space.\n","type":"string"}},"type":"object"},"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 * <span pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\">`http`</span>\n * <span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>\n * <span pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\">`icmp`</span>\n * <span pulumi-lang-nodejs=\"`browser`\" pulumi-lang-dotnet=\"`Browser`\" pulumi-lang-go=\"`browser`\" pulumi-lang-python=\"`browser`\" pulumi-lang-yaml=\"`browser`\" pulumi-lang-java=\"`browser`\">`browser`</span>\n\nThe monitor type is determined by the fields in the <span pulumi-lang-nodejs=\"`suite`\" pulumi-lang-dotnet=\"`Suite`\" pulumi-lang-go=\"`suite`\" pulumi-lang-python=\"`suite`\" pulumi-lang-yaml=\"`suite`\" pulumi-lang-java=\"`suite`\">`suite`</span> 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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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: &elasticstack.KibanaSyntheticsMonitorAlertArgs{\n\t\t\t\tStatus: &elasticstack.KibanaSyntheticsMonitorAlertStatusArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tTls: &elasticstack.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: &elasticstack.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<!--End PulumiCodeChooser -->\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 <space id>/<monitor_id>\n```\n\n","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":{"description":"Whether the monitor is enabled. Default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>\n","type":"boolean"},"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"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorKibanaConnection:KibanaSyntheticsMonitorKibanaConnection"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"description":"Key-value pairs of labels to associate with the monitor. Labels can be used for filtering and grouping monitors.\n","type":"object"},"locations":{"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","items":{"type":"string"},"type":"array"},"name":{"description":"The monitor's name.\n","type":"string"},"namespace":{"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 <span pulumi-lang-nodejs=\"`namespace`\" pulumi-lang-dotnet=\"`Namespace`\" pulumi-lang-go=\"`namespace`\" pulumi-lang-python=\"`namespace`\" pulumi-lang-yaml=\"`namespace`\" pulumi-lang-java=\"`namespace`\">`namespace`</span> field should be lowercase and not contain spaces. The namespace must not include any of the following characters: *, \\, /, ?, \", <, >, |, whitespace, ,, #, :, or -. Default: <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>\n","type":"string"},"params":{"description":"Monitor parameters. Raw JSON object, use <span pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\">`jsonencode`</span> function to represent JSON\n","type":"string"},"privateLocations":{"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","items":{"type":"string"},"type":"array"},"retestOnFailure":{"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: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>.\n","type":"boolean"},"schedule":{"description":"The monitor's schedule in minutes. Supported values are 1, 3, 5, 10, 15, 30, 60, 120 and 240.\n","type":"number"},"serviceName":{"description":"The APM service name.\n","type":"string"},"spaceId":{"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","type":"string"},"tags":{"description":"An array of tags.\n","items":{"type":"string"},"type":"array"},"tcp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorTcp:KibanaSyntheticsMonitorTcp","description":"TCP Monitor specific fields\n"},"timeout":{"description":"The monitor timeout in seconds, monitor will fail if it doesn't complete within this time. Default: <span pulumi-lang-nodejs=\"`16`\" pulumi-lang-dotnet=\"`16`\" pulumi-lang-go=\"`16`\" pulumi-lang-python=\"`16`\" pulumi-lang-yaml=\"`16`\" pulumi-lang-java=\"`16`\">`16`</span>\n","type":"number"}},"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":{"description":"Whether the monitor is enabled. Default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>\n","type":"boolean"},"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"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorKibanaConnection:KibanaSyntheticsMonitorKibanaConnection"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"description":"Key-value pairs of labels to associate with the monitor. Labels can be used for filtering and grouping monitors.\n","type":"object"},"locations":{"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","items":{"type":"string"},"type":"array"},"name":{"description":"The monitor's name.\n","type":"string"},"namespace":{"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 <span pulumi-lang-nodejs=\"`namespace`\" pulumi-lang-dotnet=\"`Namespace`\" pulumi-lang-go=\"`namespace`\" pulumi-lang-python=\"`namespace`\" pulumi-lang-yaml=\"`namespace`\" pulumi-lang-java=\"`namespace`\">`namespace`</span> field should be lowercase and not contain spaces. The namespace must not include any of the following characters: *, \\, /, ?, \", <, >, |, whitespace, ,, #, :, or -. Default: <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>\n","type":"string"},"params":{"description":"Monitor parameters. Raw JSON object, use <span pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\">`jsonencode`</span> function to represent JSON\n","type":"string"},"privateLocations":{"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","items":{"type":"string"},"type":"array"},"retestOnFailure":{"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: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>.\n","type":"boolean"},"schedule":{"description":"The monitor's schedule in minutes. Supported values are 1, 3, 5, 10, 15, 30, 60, 120 and 240.\n","type":"number"},"serviceName":{"description":"The APM service name.\n","type":"string"},"spaceId":{"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","type":"string"},"tags":{"description":"An array of tags.\n","items":{"type":"string"},"type":"array"},"tcp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorTcp:KibanaSyntheticsMonitorTcp","description":"TCP Monitor specific fields\n"},"timeout":{"description":"The monitor timeout in seconds, monitor will fail if it doesn't complete within this time. Default: <span pulumi-lang-nodejs=\"`16`\" pulumi-lang-dotnet=\"`16`\" pulumi-lang-go=\"`16`\" pulumi-lang-python=\"`16`\" pulumi-lang-yaml=\"`16`\" pulumi-lang-java=\"`16`\">`16`</span>\n","type":"number"}},"required":["alert","enabled","name","namespace","schedule","serviceName","spaceId","timeout"],"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":{"description":"Whether the monitor is enabled. Default: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>\n","type":"boolean"},"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"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorKibanaConnection:KibanaSyntheticsMonitorKibanaConnection"},"type":"array"},"labels":{"additionalProperties":{"type":"string"},"description":"Key-value pairs of labels to associate with the monitor. Labels can be used for filtering and grouping monitors.\n","type":"object"},"locations":{"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","items":{"type":"string"},"type":"array"},"name":{"description":"The monitor's name.\n","type":"string"},"namespace":{"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 <span pulumi-lang-nodejs=\"`namespace`\" pulumi-lang-dotnet=\"`Namespace`\" pulumi-lang-go=\"`namespace`\" pulumi-lang-python=\"`namespace`\" pulumi-lang-yaml=\"`namespace`\" pulumi-lang-java=\"`namespace`\">`namespace`</span> field should be lowercase and not contain spaces. The namespace must not include any of the following characters: *, \\, /, ?, \", <, >, |, whitespace, ,, #, :, or -. Default: <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span>\n","type":"string"},"params":{"description":"Monitor parameters. Raw JSON object, use <span pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\">`jsonencode`</span> function to represent JSON\n","type":"string"},"privateLocations":{"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","items":{"type":"string"},"type":"array"},"retestOnFailure":{"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: <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>.\n","type":"boolean"},"schedule":{"description":"The monitor's schedule in minutes. Supported values are 1, 3, 5, 10, 15, 30, 60, 120 and 240.\n","type":"number"},"serviceName":{"description":"The APM service name.\n","type":"string"},"spaceId":{"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","type":"string"},"tags":{"description":"An array of tags.\n","items":{"type":"string"},"type":"array"},"tcp":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsMonitorTcp:KibanaSyntheticsMonitorTcp","description":"TCP Monitor specific fields\n"},"timeout":{"description":"The monitor timeout in seconds, monitor will fail if it doesn't complete within this time. Default: <span pulumi-lang-nodejs=\"`16`\" pulumi-lang-dotnet=\"`16`\" pulumi-lang-go=\"`16`\" pulumi-lang-python=\"`16`\" pulumi-lang-yaml=\"`16`\" pulumi-lang-java=\"`16`\">`16`</span>\n","type":"number"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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<!--End PulumiCodeChooser -->\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 <space id>/<param_id>\n```\n\n","inputProperties":{"description":{"description":"A description of the parameter.\n","type":"string"},"key":{"description":"The key of the parameter.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsParameterKibanaConnection:KibanaSyntheticsParameterKibanaConnection"},"type":"array"},"shareAcrossSpaces":{"description":"Whether the parameter should be shared across spaces.\n","type":"boolean"},"tags":{"description":"An array of tags to categorize the parameter.\n","items":{"type":"string"},"type":"array"},"value":{"description":"The value associated with the parameter.\n","secret":true,"type":"string"}},"properties":{"description":{"description":"A description of the parameter.\n","type":"string"},"key":{"description":"The key of the parameter.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsParameterKibanaConnection:KibanaSyntheticsParameterKibanaConnection"},"type":"array"},"shareAcrossSpaces":{"description":"Whether the parameter should be shared across spaces.\n","type":"boolean"},"tags":{"description":"An array of tags to categorize the parameter.\n","items":{"type":"string"},"type":"array"},"value":{"description":"The value associated with the parameter.\n","secret":true,"type":"string"}},"required":["description","key","shareAcrossSpaces","tags","value"],"requiredInputs":["key","value"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSyntheticsParameter resources.\n","properties":{"description":{"description":"A description of the parameter.\n","type":"string"},"key":{"description":"The key of the parameter.\n","type":"string"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsParameterKibanaConnection:KibanaSyntheticsParameterKibanaConnection"},"type":"array"},"shareAcrossSpaces":{"description":"Whether the parameter should be shared across spaces.\n","type":"boolean"},"tags":{"description":"An array of tags to categorize the parameter.\n","items":{"type":"string"},"type":"array"},"value":{"description":"The value associated with the parameter.\n","secret":true,"type":"string"}},"type":"object"},"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## Example Usage\n\n<!--Start PulumiCodeChooser -->\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(() => \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\", &elasticstack.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\", &elasticstack.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: &elasticstack.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<!--End PulumiCodeChooser -->\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 <space_id>/<private_location_id>\n```\n\n","inputProperties":{"agentPolicyId":{"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","type":"string"},"geo":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationGeo:KibanaSyntheticsPrivateLocationGeo","description":"Geographic coordinates (WGS84) for the location\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationKibanaConnection:KibanaSyntheticsPrivateLocationKibanaConnection"},"type":"array"},"label":{"description":"A label for the private location, used as unique identifier\n","type":"string"},"spaceId":{"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 cannot change the ID using the update operation.\n","type":"string"},"tags":{"description":"An array of tags to categorize the private location.","items":{"type":"string"},"type":"array"}},"properties":{"agentPolicyId":{"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","type":"string"},"geo":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationGeo:KibanaSyntheticsPrivateLocationGeo","description":"Geographic coordinates (WGS84) for the location\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationKibanaConnection:KibanaSyntheticsPrivateLocationKibanaConnection"},"type":"array"},"label":{"description":"A label for the private location, used as unique identifier\n","type":"string"},"spaceId":{"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 cannot change the ID using the update operation.\n","type":"string"},"tags":{"description":"An array of tags to categorize the private location.","items":{"type":"string"},"type":"array"}},"required":["agentPolicyId","label","spaceId"],"requiredInputs":["agentPolicyId","label"],"stateInputs":{"description":"Input properties used for looking up and filtering KibanaSyntheticsPrivateLocation resources.\n","properties":{"agentPolicyId":{"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","type":"string"},"geo":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationGeo:KibanaSyntheticsPrivateLocationGeo","description":"Geographic coordinates (WGS84) for the location\n"},"kibanaConnections":{"description":"Kibana connection configuration block.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSyntheticsPrivateLocationKibanaConnection:KibanaSyntheticsPrivateLocationKibanaConnection"},"type":"array"},"label":{"description":"A label for the private location, used as unique identifier\n","type":"string"},"spaceId":{"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 cannot change the ID using the update operation.\n","type":"string"},"tags":{"description":"An array of tags to categorize the private location.","items":{"type":"string"},"type":"array"}},"type":"object"},"type":"object"}},"types":{"elasticstack:config/elasticsearches:elasticsearches":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:config/fleets:fleets":{"properties":{"apiKey":{"description":"API Key to use for authentication to Fleet.\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Fleet.\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Fleet server.\n","items":{"type":"string"},"type":"array"},"endpoint":{"secret":true,"type":"string"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Fleet.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Fleet.\n","type":"string"}},"type":"object"},"elasticstack:config/kibanas:kibanas":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/ApmAgentConfigurationKibanaConnection:ApmAgentConfigurationKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/ApmSourceMapKibanaConnection:ApmSourceMapKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/ApmSourceMapSourcemap:ApmSourceMapSourcemap":{"properties":{"binary":{"description":"The source map content as a base64-encoded string (standard encoding). Exactly one of <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span>, <span pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\">`binary`</span>, or `file.path` must be set. The value is write-only and is not read back from the API.\n","secret":true,"type":"string"},"file":{"$ref":"#/types/elasticstack:index%2FApmSourceMapSourcemapFile:ApmSourceMapSourcemapFile","description":"Upload a source map from a local file path.\n"},"json":{"description":"The source map content as a JSON string. Exactly one of <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span>, <span pulumi-lang-nodejs=\"`binary`\" pulumi-lang-dotnet=\"`Binary`\" pulumi-lang-go=\"`binary`\" pulumi-lang-python=\"`binary`\" pulumi-lang-yaml=\"`binary`\" pulumi-lang-java=\"`binary`\">`binary`</span>, or `file.path` must be set. The value is write-only and is not read back from the API.\n","secret":true,"type":"string"}},"type":"object"},"elasticstack:index/ApmSourceMapSourcemapFile:ApmSourceMapSourcemapFile":{"language":{"nodejs":{"requiredOutputs":["checksum","path"]}},"properties":{"checksum":{"description":"SHA256 hex digest of the uploaded sourcemap.\n","type":"string"},"path":{"description":"Absolute or relative path to the source map file on the local filesystem.\n","type":"string"}},"required":["path"],"type":"object"},"elasticstack:index/ElasticsearchClusterSettingsElasticsearchConnection:ElasticsearchClusterSettingsElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchClusterSettingsPersistent:ElasticsearchClusterSettingsPersistent":{"properties":{"settings":{"description":"Defines the settings in the cluster.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsPersistentSetting:ElasticsearchClusterSettingsPersistentSetting"},"type":"array"}},"type":"object"},"elasticstack:index/ElasticsearchClusterSettingsPersistentSetting:ElasticsearchClusterSettingsPersistentSetting":{"properties":{"name":{"description":"The name of the setting to set and track.\n","type":"string"},"value":{"description":"The value of the setting to set and track.\n","type":"string"},"valueLists":{"description":"The list of values to be set for the key, where the list is required.\n","items":{"type":"string"},"type":"array"}},"required":["name"],"type":"object"},"elasticstack:index/ElasticsearchClusterSettingsTransient:ElasticsearchClusterSettingsTransient":{"properties":{"settings":{"description":"Defines the settings in the cluster.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchClusterSettingsTransientSetting:ElasticsearchClusterSettingsTransientSetting"},"type":"array"}},"type":"object"},"elasticstack:index/ElasticsearchClusterSettingsTransientSetting:ElasticsearchClusterSettingsTransientSetting":{"properties":{"name":{"description":"The name of the setting to set and track.\n","type":"string"},"value":{"description":"The value of the setting to set and track.\n","type":"string"},"valueLists":{"description":"The list of values to be set for the key, where the list is required.\n","items":{"type":"string"},"type":"array"}},"required":["name"],"type":"object"},"elasticstack:index/ElasticsearchComponentTemplateElasticsearchConnection:ElasticsearchComponentTemplateElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchComponentTemplateTemplate:ElasticsearchComponentTemplateTemplate":{"properties":{"aliases":{"description":"Alias to add.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplateAlias:ElasticsearchComponentTemplateTemplateAlias"},"type":"array"},"dataStreamOptions":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplateDataStreamOptions:ElasticsearchComponentTemplateTemplateDataStreamOptions","description":"Options for data streams created by this template. Applied once at data stream creation time. Available only for Elasticsearch 9.1.0 and above.\n"},"mappings":{"description":"Mapping for fields in the index. Should be specified as a JSON object of field mappings. See the [explicit mapping documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/explicit-mapping.html) for more details.\n","type":"string"},"settings":{"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":"string"}},"type":"object"},"elasticstack:index/ElasticsearchComponentTemplateTemplateAlias:ElasticsearchComponentTemplateTemplateAlias":{"language":{"nodejs":{"requiredOutputs":["indexRouting","isHidden","isWriteIndex","name","routing","searchRouting"]}},"properties":{"filter":{"description":"Query used to limit documents the alias can access.\n","type":"string"},"indexRouting":{"description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the routing value for indexing operations.\n","type":"string"},"isHidden":{"description":"If true, the alias is hidden.\n","type":"boolean"},"isWriteIndex":{"description":"If true, the index is the write index for the alias.\n","type":"boolean"},"name":{"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","type":"string"},"routing":{"description":"Value used to route indexing and search operations to a specific shard.\n","type":"string"},"searchRouting":{"description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n","type":"string"}},"required":["name"],"type":"object"},"elasticstack:index/ElasticsearchComponentTemplateTemplateDataStreamOptions:ElasticsearchComponentTemplateTemplateDataStreamOptions":{"properties":{"failureStore":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStore:ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStore","description":"Failure store configuration.\n"}},"type":"object"},"elasticstack:index/ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStore:ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStore":{"properties":{"enabled":{"description":"If true, document redirection to the failure store is enabled for new matching data streams.\n","type":"boolean"},"lifecycle":{"$ref":"#/types/elasticstack:index%2FElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreLifecycle:ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreLifecycle","description":"Lifecycle configuration for the failure store.\n"}},"type":"object"},"elasticstack:index/ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreLifecycle:ElasticsearchComponentTemplateTemplateDataStreamOptionsFailureStoreLifecycle":{"properties":{"dataRetention":{"description":"The retention period for failure store documents (e.g. \"30d\").\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchConnectorConfigurationValues:ElasticsearchConnectorConfigurationValues":{"properties":{"bool":{"description":"Boolean configuration value.\n","type":"boolean"},"json":{"description":"JSON-encoded object or array configuration value.\n","type":"string"},"number":{"description":"Numeric configuration value (integer or float).\n","type":"number"},"secretValue":{"description":"Write-only secret configuration value. Drift is detected via private-state hashing (see resource documentation).\n","secret":true,"type":"string"},"string":{"description":"String configuration value.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchConnectorElasticsearchConnection:ElasticsearchConnectorElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchConnectorFeatures:ElasticsearchConnectorFeatures":{"properties":{"documentLevelSecurity":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeaturesDocumentLevelSecurity:ElasticsearchConnectorFeaturesDocumentLevelSecurity","description":"Feature flag for <span pulumi-lang-nodejs=\"`documentLevelSecurity`\" pulumi-lang-dotnet=\"`DocumentLevelSecurity`\" pulumi-lang-go=\"`documentLevelSecurity`\" pulumi-lang-python=\"`document_level_security`\" pulumi-lang-yaml=\"`documentLevelSecurity`\" pulumi-lang-java=\"`documentLevelSecurity`\">`document_level_security`</span>.\n"},"incrementalSync":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeaturesIncrementalSync:ElasticsearchConnectorFeaturesIncrementalSync","description":"Feature flag for <span pulumi-lang-nodejs=\"`incrementalSync`\" pulumi-lang-dotnet=\"`IncrementalSync`\" pulumi-lang-go=\"`incrementalSync`\" pulumi-lang-python=\"`incremental_sync`\" pulumi-lang-yaml=\"`incrementalSync`\" pulumi-lang-java=\"`incrementalSync`\">`incremental_sync`</span>.\n"},"nativeConnectorApiKeys":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeaturesNativeConnectorApiKeys:ElasticsearchConnectorFeaturesNativeConnectorApiKeys","description":"Feature flag for <span pulumi-lang-nodejs=\"`nativeConnectorApiKeys`\" pulumi-lang-dotnet=\"`NativeConnectorApiKeys`\" pulumi-lang-go=\"`nativeConnectorApiKeys`\" pulumi-lang-python=\"`native_connector_api_keys`\" pulumi-lang-yaml=\"`nativeConnectorApiKeys`\" pulumi-lang-java=\"`nativeConnectorApiKeys`\">`native_connector_api_keys`</span>.\n"},"syncRules":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeaturesSyncRules:ElasticsearchConnectorFeaturesSyncRules","description":"Sync rules feature flags.\n"}},"type":"object"},"elasticstack:index/ElasticsearchConnectorFeaturesDocumentLevelSecurity:ElasticsearchConnectorFeaturesDocumentLevelSecurity":{"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/ElasticsearchConnectorFeaturesIncrementalSync:ElasticsearchConnectorFeaturesIncrementalSync":{"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/ElasticsearchConnectorFeaturesNativeConnectorApiKeys:ElasticsearchConnectorFeaturesNativeConnectorApiKeys":{"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/ElasticsearchConnectorFeaturesSyncRules:ElasticsearchConnectorFeaturesSyncRules":{"properties":{"advanced":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeaturesSyncRulesAdvanced:ElasticsearchConnectorFeaturesSyncRulesAdvanced","description":"Feature flag for <span pulumi-lang-nodejs=\"`advanced`\" pulumi-lang-dotnet=\"`Advanced`\" pulumi-lang-go=\"`advanced`\" pulumi-lang-python=\"`advanced`\" pulumi-lang-yaml=\"`advanced`\" pulumi-lang-java=\"`advanced`\">`advanced`</span>.\n"},"basic":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorFeaturesSyncRulesBasic:ElasticsearchConnectorFeaturesSyncRulesBasic","description":"Feature flag for <span pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\">`basic`</span>.\n"}},"type":"object"},"elasticstack:index/ElasticsearchConnectorFeaturesSyncRulesAdvanced:ElasticsearchConnectorFeaturesSyncRulesAdvanced":{"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/ElasticsearchConnectorFeaturesSyncRulesBasic:ElasticsearchConnectorFeaturesSyncRulesBasic":{"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/ElasticsearchConnectorPipeline:ElasticsearchConnectorPipeline":{"properties":{"extractBinaryContent":{"description":"Whether to extract binary content during ingestion.\n","type":"boolean"},"name":{"description":"Ingest pipeline name.\n","type":"string"},"reduceWhitespace":{"description":"Whether to reduce whitespace in extracted text.\n","type":"boolean"},"runMlInference":{"description":"Whether to run ML inference during ingestion.\n","type":"boolean"}},"required":["extractBinaryContent","name","reduceWhitespace","runMlInference"],"type":"object"},"elasticstack:index/ElasticsearchConnectorScheduling:ElasticsearchConnectorScheduling":{"properties":{"accessControl":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorSchedulingAccessControl:ElasticsearchConnectorSchedulingAccessControl","description":"Schedule for the <span pulumi-lang-nodejs=\"`accessControl`\" pulumi-lang-dotnet=\"`AccessControl`\" pulumi-lang-go=\"`accessControl`\" pulumi-lang-python=\"`access_control`\" pulumi-lang-yaml=\"`accessControl`\" pulumi-lang-java=\"`accessControl`\">`access_control`</span> sync job type.\n"},"full":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorSchedulingFull:ElasticsearchConnectorSchedulingFull","description":"Schedule for the <span pulumi-lang-nodejs=\"`full`\" pulumi-lang-dotnet=\"`Full`\" pulumi-lang-go=\"`full`\" pulumi-lang-python=\"`full`\" pulumi-lang-yaml=\"`full`\" pulumi-lang-java=\"`full`\">`full`</span> sync job type.\n"},"incremental":{"$ref":"#/types/elasticstack:index%2FElasticsearchConnectorSchedulingIncremental:ElasticsearchConnectorSchedulingIncremental","description":"Schedule for the <span pulumi-lang-nodejs=\"`incremental`\" pulumi-lang-dotnet=\"`Incremental`\" pulumi-lang-go=\"`incremental`\" pulumi-lang-python=\"`incremental`\" pulumi-lang-yaml=\"`incremental`\" pulumi-lang-java=\"`incremental`\">`incremental`</span> sync job type.\n"}},"type":"object"},"elasticstack:index/ElasticsearchConnectorSchedulingAccessControl:ElasticsearchConnectorSchedulingAccessControl":{"properties":{"enabled":{"description":"Whether this scheduled job type is enabled.\n","type":"boolean"},"interval":{"description":"Cron expression accepted by the Elasticsearch scheduler.\n","type":"string"}},"required":["enabled","interval"],"type":"object"},"elasticstack:index/ElasticsearchConnectorSchedulingFull:ElasticsearchConnectorSchedulingFull":{"properties":{"enabled":{"description":"Whether this scheduled job type is enabled.\n","type":"boolean"},"interval":{"description":"Cron expression accepted by the Elasticsearch scheduler.\n","type":"string"}},"required":["enabled","interval"],"type":"object"},"elasticstack:index/ElasticsearchConnectorSchedulingIncremental:ElasticsearchConnectorSchedulingIncremental":{"properties":{"enabled":{"description":"Whether this scheduled job type is enabled.\n","type":"boolean"},"interval":{"description":"Cron expression accepted by the Elasticsearch scheduler.\n","type":"string"}},"required":["enabled","interval"],"type":"object"},"elasticstack:index/ElasticsearchDataStreamElasticsearchConnection:ElasticsearchDataStreamElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchDataStreamIndex:ElasticsearchDataStreamIndex":{"language":{"nodejs":{"requiredOutputs":["indexName","indexUuid"]}},"properties":{"indexName":{"description":"Name of the backing index.\n","type":"string"},"indexUuid":{"description":"Universally unique identifier (UUID) for the index.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchDataStreamLifecycleDownsampling:ElasticsearchDataStreamLifecycleDownsampling":{"properties":{"after":{"description":"Interval representing when the backing index is meant to be downsampled\n","type":"string"},"fixedInterval":{"description":"The interval at which to aggregate the original time series index.\n","type":"string"}},"required":["after","fixedInterval"],"type":"object"},"elasticstack:index/ElasticsearchDataStreamLifecycleElasticsearchConnection:ElasticsearchDataStreamLifecycleElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchEnrichPolicyElasticsearchConnection:ElasticsearchEnrichPolicyElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexAlias:ElasticsearchIndexAlias":{"language":{"nodejs":{"requiredOutputs":["indexRouting","isHidden","isWriteIndex","name","routing","searchRouting"]}},"properties":{"filter":{"description":"Query used to limit documents the alias can access.\n","type":"string"},"indexRouting":{"description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the <span pulumi-lang-nodejs=\"`routing`\" pulumi-lang-dotnet=\"`Routing`\" pulumi-lang-go=\"`routing`\" pulumi-lang-python=\"`routing`\" pulumi-lang-yaml=\"`routing`\" pulumi-lang-java=\"`routing`\">`routing`</span> value for indexing operations.\n","type":"string"},"isHidden":{"description":"If true, the alias is hidden.\n","type":"boolean"},"isWriteIndex":{"description":"If true, the index is the write index for the alias.\n","type":"boolean"},"name":{"description":"Index alias name.\n","type":"string"},"routing":{"description":"Value used to route indexing and search operations to a specific shard.\n","type":"string"},"searchRouting":{"description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n","type":"string"}},"required":["name"],"type":"object"},"elasticstack:index/ElasticsearchIndexAliasElasticsearchConnection:ElasticsearchIndexAliasElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexAliasReadIndex:ElasticsearchIndexAliasReadIndex":{"language":{"nodejs":{"requiredOutputs":["isHidden","name"]}},"properties":{"filter":{"description":"Query used to limit documents the alias can access.\n","type":"string"},"indexRouting":{"description":"Value used to route indexing operations to a specific shard.\n","type":"string"},"isHidden":{"description":"If true, the alias is hidden.\n","type":"boolean"},"name":{"description":"Name of the read index.\n","type":"string"},"routing":{"description":"Value used to route indexing and search operations to a specific shard.\n","type":"string"},"searchRouting":{"description":"Value used to route search operations to a specific shard.\n","type":"string"}},"required":["name"],"type":"object"},"elasticstack:index/ElasticsearchIndexAliasWriteIndex:ElasticsearchIndexAliasWriteIndex":{"language":{"nodejs":{"requiredOutputs":["isHidden","name"]}},"properties":{"filter":{"description":"Query used to limit documents the alias can access.\n","type":"string"},"indexRouting":{"description":"Value used to route indexing operations to a specific shard.\n","type":"string"},"isHidden":{"description":"If true, the alias is hidden.\n","type":"boolean"},"name":{"description":"Name of the write index.\n","type":"string"},"routing":{"description":"Value used to route indexing and search operations to a specific shard.\n","type":"string"},"searchRouting":{"description":"Value used to route search operations to a specific shard.\n","type":"string"}},"required":["name"],"type":"object"},"elasticstack:index/ElasticsearchIndexElasticsearchConnection:ElasticsearchIndexElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleCold:ElasticsearchIndexLifecycleCold":{"language":{"nodejs":{"requiredOutputs":["minAge"]}},"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":{"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","type":"string"},"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"},"elasticstack:index/ElasticsearchIndexLifecycleColdAllocate:ElasticsearchIndexLifecycleColdAllocate":{"language":{"nodejs":{"requiredOutputs":["numberOfReplicas","totalShardsPerNode"]}},"properties":{"exclude":{"description":"Assigns an index to nodes that have none of the specified custom attributes. Must be valid JSON document.\n","type":"string"},"include":{"description":"Assigns an index to nodes that have at least one of the specified custom attributes. Must be valid JSON document.\n","type":"string"},"numberOfReplicas":{"description":"Number of replicas to assign to the index.\n","type":"number"},"require":{"description":"Assigns an index to nodes that have all of the specified custom attributes. Must be valid JSON document.\n","type":"string"},"totalShardsPerNode":{"description":"The maximum number of shards for the index on a single Elasticsearch node. When omitted, the existing index setting is left unchanged.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdDownsample:ElasticsearchIndexLifecycleColdDownsample":{"language":{"nodejs":{"requiredOutputs":["waitTimeout"]}},"properties":{"fixedInterval":{"description":"Downsampling interval. Required when the <span pulumi-lang-nodejs=\"`downsample`\" pulumi-lang-dotnet=\"`Downsample`\" pulumi-lang-go=\"`downsample`\" pulumi-lang-python=\"`downsample`\" pulumi-lang-yaml=\"`downsample`\" pulumi-lang-java=\"`downsample`\">`downsample`</span> action is configured.\n","type":"string"},"waitTimeout":{"description":"Maximum time to wait for the downsample operation to complete before timing out.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdFreeze:ElasticsearchIndexLifecycleColdFreeze":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM freezes the index.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdMigrate:ElasticsearchIndexLifecycleColdMigrate":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM automatically migrates the index during this phase.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdReadonly:ElasticsearchIndexLifecycleColdReadonly":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM makes the index read-only.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdSearchableSnapshot:ElasticsearchIndexLifecycleColdSearchableSnapshot":{"language":{"nodejs":{"requiredOutputs":["forceMergeIndex"]}},"properties":{"forceMergeIndex":{"description":"Force merges the managed index to one segment.\n","type":"boolean"},"snapshotRepository":{"description":"Repository used to store the snapshot. Required when the <span pulumi-lang-nodejs=\"`searchableSnapshot`\" pulumi-lang-dotnet=\"`SearchableSnapshot`\" pulumi-lang-go=\"`searchableSnapshot`\" pulumi-lang-python=\"`searchable_snapshot`\" pulumi-lang-yaml=\"`searchableSnapshot`\" pulumi-lang-java=\"`searchableSnapshot`\">`searchable_snapshot`</span> action is configured.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdSetPriority:ElasticsearchIndexLifecycleColdSetPriority":{"properties":{"priority":{"description":"The priority for the index. Must be 0 or greater. Required when the <span pulumi-lang-nodejs=\"`setPriority`\" pulumi-lang-dotnet=\"`SetPriority`\" pulumi-lang-go=\"`setPriority`\" pulumi-lang-python=\"`set_priority`\" pulumi-lang-yaml=\"`setPriority`\" pulumi-lang-java=\"`setPriority`\">`set_priority`</span> action is configured.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleColdUnfollow:ElasticsearchIndexLifecycleColdUnfollow":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM makes the follower index a regular one.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleDelete:ElasticsearchIndexLifecycleDelete":{"language":{"nodejs":{"requiredOutputs":["minAge"]}},"properties":{"delete":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleDeleteDelete:ElasticsearchIndexLifecycleDeleteDelete","description":"Permanently removes the index.\n"},"minAge":{"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","type":"string"},"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"},"elasticstack:index/ElasticsearchIndexLifecycleDeleteDelete:ElasticsearchIndexLifecycleDeleteDelete":{"language":{"nodejs":{"requiredOutputs":["deleteSearchableSnapshot"]}},"properties":{"deleteSearchableSnapshot":{"description":"Deletes the searchable snapshot created in a previous phase.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleDeleteWaitForSnapshot:ElasticsearchIndexLifecycleDeleteWaitForSnapshot":{"properties":{"policy":{"description":"Name of the SLM policy that the delete action should wait for. Required when the <span pulumi-lang-nodejs=\"`waitForSnapshot`\" pulumi-lang-dotnet=\"`WaitForSnapshot`\" pulumi-lang-go=\"`waitForSnapshot`\" pulumi-lang-python=\"`wait_for_snapshot`\" pulumi-lang-yaml=\"`waitForSnapshot`\" pulumi-lang-java=\"`waitForSnapshot`\">`wait_for_snapshot`</span> action is configured.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleElasticsearchConnection:ElasticsearchIndexLifecycleElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleFrozen:ElasticsearchIndexLifecycleFrozen":{"language":{"nodejs":{"requiredOutputs":["minAge"]}},"properties":{"minAge":{"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","type":"string"},"searchableSnapshot":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexLifecycleFrozenSearchableSnapshot:ElasticsearchIndexLifecycleFrozenSearchableSnapshot","description":"Required in the <span pulumi-lang-nodejs=\"`frozen`\" pulumi-lang-dotnet=\"`Frozen`\" pulumi-lang-go=\"`frozen`\" pulumi-lang-python=\"`frozen`\" pulumi-lang-yaml=\"`frozen`\" pulumi-lang-java=\"`frozen`\">`frozen`</span> phase. Takes a snapshot of the managed index in the configured repository and mounts it as a searchable snapshot.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleFrozenSearchableSnapshot:ElasticsearchIndexLifecycleFrozenSearchableSnapshot":{"language":{"nodejs":{"requiredOutputs":["forceMergeIndex"]}},"properties":{"forceMergeIndex":{"description":"Force merges the managed index to one segment.\n","type":"boolean"},"snapshotRepository":{"description":"Repository used to store the snapshot. Required when the <span pulumi-lang-nodejs=\"`searchableSnapshot`\" pulumi-lang-dotnet=\"`SearchableSnapshot`\" pulumi-lang-go=\"`searchableSnapshot`\" pulumi-lang-python=\"`searchable_snapshot`\" pulumi-lang-yaml=\"`searchableSnapshot`\" pulumi-lang-java=\"`searchableSnapshot`\">`searchable_snapshot`</span> action is configured.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHot:ElasticsearchIndexLifecycleHot":{"language":{"nodejs":{"requiredOutputs":["minAge"]}},"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":{"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","type":"string"},"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"},"elasticstack:index/ElasticsearchIndexLifecycleHotDownsample:ElasticsearchIndexLifecycleHotDownsample":{"language":{"nodejs":{"requiredOutputs":["waitTimeout"]}},"properties":{"fixedInterval":{"description":"Downsampling interval. Required when the <span pulumi-lang-nodejs=\"`downsample`\" pulumi-lang-dotnet=\"`Downsample`\" pulumi-lang-go=\"`downsample`\" pulumi-lang-python=\"`downsample`\" pulumi-lang-yaml=\"`downsample`\" pulumi-lang-java=\"`downsample`\">`downsample`</span> action is configured.\n","type":"string"},"waitTimeout":{"description":"Maximum time to wait for the downsample operation to complete before timing out.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotForcemerge:ElasticsearchIndexLifecycleHotForcemerge":{"properties":{"indexCodec":{"description":"Codec used to compress the document store.\n","type":"string"},"maxNumSegments":{"description":"Number of segments to merge to. To fully merge the index, set to 1. Required when the <span pulumi-lang-nodejs=\"`forcemerge`\" pulumi-lang-dotnet=\"`Forcemerge`\" pulumi-lang-go=\"`forcemerge`\" pulumi-lang-python=\"`forcemerge`\" pulumi-lang-yaml=\"`forcemerge`\" pulumi-lang-java=\"`forcemerge`\">`forcemerge`</span> action is configured.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotReadonly:ElasticsearchIndexLifecycleHotReadonly":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM makes the index read-only.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotRollover:ElasticsearchIndexLifecycleHotRollover":{"properties":{"maxAge":{"description":"Triggers rollover after the maximum elapsed time from index creation is reached.\n","type":"string"},"maxDocs":{"description":"Triggers rollover after the specified maximum number of documents is reached.\n","type":"number"},"maxPrimaryShardDocs":{"description":"Triggers rollover when the largest primary shard in the index reaches a certain number of documents. Supported from Elasticsearch version **8.2**\n","type":"number"},"maxPrimaryShardSize":{"description":"Triggers rollover when the largest primary shard in the index reaches a certain size.\n","type":"string"},"maxSize":{"description":"Triggers rollover when the index reaches a certain size.\n","type":"string"},"minAge":{"description":"Prevents rollover until after the minimum elapsed time from index creation is reached. Supported from Elasticsearch version **8.4**\n","type":"string"},"minDocs":{"description":"Prevents rollover until after the specified minimum number of documents is reached. Supported from Elasticsearch version **8.4**\n","type":"number"},"minPrimaryShardDocs":{"description":"Prevents rollover until the largest primary shard in the index reaches a certain number of documents. Supported from Elasticsearch version **8.4**\n","type":"number"},"minPrimaryShardSize":{"description":"Prevents rollover until the largest primary shard in the index reaches a certain size. Supported from Elasticsearch version **8.4**\n","type":"string"},"minSize":{"description":"Prevents rollover until the index reaches a certain size.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotSearchableSnapshot:ElasticsearchIndexLifecycleHotSearchableSnapshot":{"language":{"nodejs":{"requiredOutputs":["forceMergeIndex"]}},"properties":{"forceMergeIndex":{"description":"Force merges the managed index to one segment.\n","type":"boolean"},"snapshotRepository":{"description":"Repository used to store the snapshot. Required when the <span pulumi-lang-nodejs=\"`searchableSnapshot`\" pulumi-lang-dotnet=\"`SearchableSnapshot`\" pulumi-lang-go=\"`searchableSnapshot`\" pulumi-lang-python=\"`searchable_snapshot`\" pulumi-lang-yaml=\"`searchableSnapshot`\" pulumi-lang-java=\"`searchableSnapshot`\">`searchable_snapshot`</span> action is configured.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotSetPriority:ElasticsearchIndexLifecycleHotSetPriority":{"properties":{"priority":{"description":"The priority for the index. Must be 0 or greater. Required when the <span pulumi-lang-nodejs=\"`setPriority`\" pulumi-lang-dotnet=\"`SetPriority`\" pulumi-lang-go=\"`setPriority`\" pulumi-lang-python=\"`set_priority`\" pulumi-lang-yaml=\"`setPriority`\" pulumi-lang-java=\"`setPriority`\">`set_priority`</span> action is configured.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotShrink:ElasticsearchIndexLifecycleHotShrink":{"language":{"nodejs":{"requiredOutputs":["allowWriteAfterShrink"]}},"properties":{"allowWriteAfterShrink":{"description":"If true, the shrunken index is made writable by removing the write block.\n","type":"boolean"},"maxPrimaryShardSize":{"description":"The max primary shard size for the target index.\n","type":"string"},"numberOfShards":{"description":"Number of shards to shrink to.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleHotUnfollow:ElasticsearchIndexLifecycleHotUnfollow":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM makes the follower index a regular one.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarm:ElasticsearchIndexLifecycleWarm":{"language":{"nodejs":{"requiredOutputs":["minAge"]}},"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":{"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","type":"string"},"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"},"elasticstack:index/ElasticsearchIndexLifecycleWarmAllocate:ElasticsearchIndexLifecycleWarmAllocate":{"language":{"nodejs":{"requiredOutputs":["numberOfReplicas","totalShardsPerNode"]}},"properties":{"exclude":{"description":"Assigns an index to nodes that have none of the specified custom attributes. Must be valid JSON document.\n","type":"string"},"include":{"description":"Assigns an index to nodes that have at least one of the specified custom attributes. Must be valid JSON document.\n","type":"string"},"numberOfReplicas":{"description":"Number of replicas to assign to the index.\n","type":"number"},"require":{"description":"Assigns an index to nodes that have all of the specified custom attributes. Must be valid JSON document.\n","type":"string"},"totalShardsPerNode":{"description":"The maximum number of shards for the index on a single Elasticsearch node. When omitted, the existing index setting is left unchanged.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmDownsample:ElasticsearchIndexLifecycleWarmDownsample":{"language":{"nodejs":{"requiredOutputs":["waitTimeout"]}},"properties":{"fixedInterval":{"description":"Downsampling interval. Required when the <span pulumi-lang-nodejs=\"`downsample`\" pulumi-lang-dotnet=\"`Downsample`\" pulumi-lang-go=\"`downsample`\" pulumi-lang-python=\"`downsample`\" pulumi-lang-yaml=\"`downsample`\" pulumi-lang-java=\"`downsample`\">`downsample`</span> action is configured.\n","type":"string"},"waitTimeout":{"description":"Maximum time to wait for the downsample operation to complete before timing out.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmForcemerge:ElasticsearchIndexLifecycleWarmForcemerge":{"properties":{"indexCodec":{"description":"Codec used to compress the document store.\n","type":"string"},"maxNumSegments":{"description":"Number of segments to merge to. To fully merge the index, set to 1. Required when the <span pulumi-lang-nodejs=\"`forcemerge`\" pulumi-lang-dotnet=\"`Forcemerge`\" pulumi-lang-go=\"`forcemerge`\" pulumi-lang-python=\"`forcemerge`\" pulumi-lang-yaml=\"`forcemerge`\" pulumi-lang-java=\"`forcemerge`\">`forcemerge`</span> action is configured.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmMigrate:ElasticsearchIndexLifecycleWarmMigrate":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM automatically migrates the index during this phase.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmReadonly:ElasticsearchIndexLifecycleWarmReadonly":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM makes the index read-only.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmSetPriority:ElasticsearchIndexLifecycleWarmSetPriority":{"properties":{"priority":{"description":"The priority for the index. Must be 0 or greater. Required when the <span pulumi-lang-nodejs=\"`setPriority`\" pulumi-lang-dotnet=\"`SetPriority`\" pulumi-lang-go=\"`setPriority`\" pulumi-lang-python=\"`set_priority`\" pulumi-lang-yaml=\"`setPriority`\" pulumi-lang-java=\"`setPriority`\">`set_priority`</span> action is configured.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmShrink:ElasticsearchIndexLifecycleWarmShrink":{"language":{"nodejs":{"requiredOutputs":["allowWriteAfterShrink"]}},"properties":{"allowWriteAfterShrink":{"description":"If true, the shrunken index is made writable by removing the write block.\n","type":"boolean"},"maxPrimaryShardSize":{"description":"The max primary shard size for the target index.\n","type":"string"},"numberOfShards":{"description":"Number of shards to shrink to.\n","type":"number"}},"type":"object"},"elasticstack:index/ElasticsearchIndexLifecycleWarmUnfollow:ElasticsearchIndexLifecycleWarmUnfollow":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Controls whether ILM makes the follower index a regular one.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexMappingsElasticsearchConnection:ElasticsearchIndexMappingsElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexSetting:ElasticsearchIndexSetting":{"properties":{"settings":{"description":"Defines the setting for the index.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexSettingSetting:ElasticsearchIndexSettingSetting"},"type":"array"}},"type":"object"},"elasticstack:index/ElasticsearchIndexSettingSetting:ElasticsearchIndexSettingSetting":{"properties":{"name":{"description":"The name of the setting to set and track.\n","type":"string"},"value":{"description":"The value of the setting to set and track.\n","type":"string"}},"required":["name","value"],"type":"object"},"elasticstack:index/ElasticsearchIndexSort:ElasticsearchIndexSort":{"properties":{"field":{"description":"The index field to sort by.\n","type":"string"},"missing":{"description":"How to treat documents missing the sort field. Valid values: _last, _first.\n","type":"string"},"mode":{"description":"Which value to use when the sort field has multiple values. Valid values: min, max.\n","type":"string"},"order":{"description":"The sort direction. Valid values: asc, desc.\n","type":"string"}},"required":["field"],"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateDataStream:ElasticsearchIndexTemplateDataStream":{"language":{"nodejs":{"requiredOutputs":["allowCustomRouting","hidden"]}},"properties":{"allowCustomRouting":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the data stream supports custom routing. Defaults to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>. Available only in **8.x**\n","type":"boolean"},"hidden":{"description":"If true, the data stream is hidden.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateElasticsearchConnection:ElasticsearchIndexTemplateElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateIlmAttachmentElasticsearchConnection:ElasticsearchIndexTemplateIlmAttachmentElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateTemplate:ElasticsearchIndexTemplateTemplate":{"properties":{"aliases":{"description":"Alias to add.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplateAlias:ElasticsearchIndexTemplateTemplateAlias"},"type":"array"},"dataStreamOptions":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplateDataStreamOptions:ElasticsearchIndexTemplateTemplateDataStreamOptions","description":"Options for data streams created by this template. Applied once at data stream creation time. Available only for Elasticsearch 9.1.0 and above.\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":{"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","type":"string"},"settings":{"description":"Configuration options for the index. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateTemplateAlias:ElasticsearchIndexTemplateTemplateAlias":{"language":{"nodejs":{"requiredOutputs":["indexRouting","isHidden","isWriteIndex","name","routing","searchRouting"]}},"properties":{"filter":{"description":"Query used to limit documents the alias can access.\n","type":"string"},"indexRouting":{"description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the <span pulumi-lang-nodejs=\"`routing`\" pulumi-lang-dotnet=\"`Routing`\" pulumi-lang-go=\"`routing`\" pulumi-lang-python=\"`routing`\" pulumi-lang-yaml=\"`routing`\" pulumi-lang-java=\"`routing`\">`routing`</span> value for indexing operations.\n","type":"string"},"isHidden":{"description":"If true, the alias is hidden.\n","type":"boolean"},"isWriteIndex":{"description":"If true, the index is the write index for the alias.\n","type":"boolean"},"name":{"description":"The alias name.\n","type":"string"},"routing":{"description":"Value used to route indexing and search operations to a specific shard.\n","type":"string"},"searchRouting":{"description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n","type":"string"}},"required":["name"],"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateTemplateDataStreamOptions:ElasticsearchIndexTemplateTemplateDataStreamOptions":{"properties":{"failureStore":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStore:ElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStore","description":"Failure store configuration.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStore:ElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStore":{"properties":{"enabled":{"description":"If true, document redirection to the failure store is enabled for new matching data streams.\n","type":"boolean"},"lifecycle":{"$ref":"#/types/elasticstack:index%2FElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStoreLifecycle:ElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStoreLifecycle","description":"Lifecycle configuration for the failure store.\n"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStoreLifecycle:ElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStoreLifecycle":{"properties":{"dataRetention":{"description":"The retention period for failure store documents (e.g. \"30d\").\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIndexTemplateTemplateLifecycle:ElasticsearchIndexTemplateTemplateLifecycle":{"properties":{"dataRetention":{"description":"The retention period of the data indexed in this data stream.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchInferenceEndpointElasticsearchConnection:ElasticsearchInferenceEndpointElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchIngestPipelineElasticsearchConnection:ElasticsearchIngestPipelineElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchLogstashPipelineElasticsearchConnection:ElasticsearchLogstashPipelineElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfig:ElasticsearchMlAnomalyDetectionJobAnalysisConfig":{"language":{"nodejs":{"requiredOutputs":["bucketSpan","detectors","modelPruneWindow"]}},"properties":{"bucketSpan":{"description":"The size of the interval that the analysis is aggregated into, typically between 15m and 1h.\n","type":"string"},"categorizationFieldName":{"description":"For categorization jobs only. The name of the field to categorize.\n","type":"string"},"categorizationFilters":{"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","items":{"type":"string"},"type":"array"},"detectors":{"description":"Detector configuration objects. Detectors identify the anomaly detection functions and the fields on which they operate.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigDetector:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetector"},"type":"array"},"influencers":{"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","items":{"type":"string"},"type":"array"},"latency":{"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","type":"string"},"modelPruneWindow":{"description":"Advanced configuration option. The time interval (in days) between pruning the model.\n","type":"string"},"multivariateByFields":{"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","type":"boolean"},"perPartitionCategorization":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigPerPartitionCategorization:ElasticsearchMlAnomalyDetectionJobAnalysisConfigPerPartitionCategorization","description":"Settings related to how categorization interacts with partition fields.\n"},"summaryCountFieldName":{"description":"If this property is specified, the data that is fed to the job is expected to be pre-summarized.\n","type":"string"}},"required":["detectors"],"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetector:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetector":{"language":{"nodejs":{"requiredOutputs":["function","useNull"]}},"properties":{"byFieldName":{"description":"The field used to split the data.\n","type":"string"},"customRules":{"description":"Custom rules enable you to customize the way detectors operate. Each rule must either have a non-empty <span pulumi-lang-nodejs=\"`scope`\" pulumi-lang-dotnet=\"`Scope`\" pulumi-lang-go=\"`scope`\" pulumi-lang-python=\"`scope`\" pulumi-lang-yaml=\"`scope`\" pulumi-lang-java=\"`scope`\">`scope`</span> or at least one <span pulumi-lang-nodejs=\"`conditions`\" pulumi-lang-dotnet=\"`Conditions`\" pulumi-lang-go=\"`conditions`\" pulumi-lang-python=\"`conditions`\" pulumi-lang-yaml=\"`conditions`\" pulumi-lang-java=\"`conditions`\">`conditions`</span> entry. Multiple conditions are combined together with a logical AND. A non-empty <span pulumi-lang-nodejs=\"`scope`\" pulumi-lang-dotnet=\"`Scope`\" pulumi-lang-go=\"`scope`\" pulumi-lang-python=\"`scope`\" pulumi-lang-yaml=\"`scope`\" pulumi-lang-java=\"`scope`\">`scope`</span> and one or more <span pulumi-lang-nodejs=\"`conditions`\" pulumi-lang-dotnet=\"`Conditions`\" pulumi-lang-go=\"`conditions`\" pulumi-lang-python=\"`conditions`\" pulumi-lang-yaml=\"`conditions`\" pulumi-lang-java=\"`conditions`\">`conditions`</span> may both be set on the same rule; they are not mutually exclusive.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRule:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRule"},"type":"array"},"detectorDescription":{"description":"A description of the detector.\n","type":"string"},"excludeFrequent":{"description":"Contains one of the following values: all, none, by, or over.\n","type":"string"},"fieldName":{"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","type":"string"},"function":{"description":"The analysis function that is used. For example, count, rare, mean, min, max, sum.\n","type":"string"},"overFieldName":{"description":"The field used to split the data.\n\nIn 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","type":"string"},"partitionFieldName":{"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","type":"string"},"useNull":{"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":"boolean"}},"required":["function"],"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRule:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRule":{"properties":{"actions":{"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","items":{"type":"string"},"type":"array"},"conditions":{"description":"An array of numeric conditions when the rule applies. If you specify more than one condition, Elasticsearch combines them together with a logical AND. A rule must either have a non-empty <span pulumi-lang-nodejs=\"`scope`\" pulumi-lang-dotnet=\"`Scope`\" pulumi-lang-go=\"`scope`\" pulumi-lang-python=\"`scope`\" pulumi-lang-yaml=\"`scope`\" pulumi-lang-java=\"`scope`\">`scope`</span> or at least one condition. You may set <span pulumi-lang-nodejs=\"`scope`\" pulumi-lang-dotnet=\"`Scope`\" pulumi-lang-go=\"`scope`\" pulumi-lang-python=\"`scope`\" pulumi-lang-yaml=\"`scope`\" pulumi-lang-java=\"`scope`\">`scope`</span> on the same rule.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleCondition:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleCondition"},"type":"array"},"scope":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleScope:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleScope"},"description":"Maps an analysis field name (typically matching <span pulumi-lang-nodejs=\"`byFieldName`\" pulumi-lang-dotnet=\"`ByFieldName`\" pulumi-lang-go=\"`byFieldName`\" pulumi-lang-python=\"`by_field_name`\" pulumi-lang-yaml=\"`byFieldName`\" pulumi-lang-java=\"`byFieldName`\">`by_field_name`</span>, <span pulumi-lang-nodejs=\"`overFieldName`\" pulumi-lang-dotnet=\"`OverFieldName`\" pulumi-lang-go=\"`overFieldName`\" pulumi-lang-python=\"`over_field_name`\" pulumi-lang-yaml=\"`overFieldName`\" pulumi-lang-java=\"`overFieldName`\">`over_field_name`</span>, or <span pulumi-lang-nodejs=\"`partitionFieldName`\" pulumi-lang-dotnet=\"`PartitionFieldName`\" pulumi-lang-go=\"`partitionFieldName`\" pulumi-lang-python=\"`partition_field_name`\" pulumi-lang-yaml=\"`partitionFieldName`\" pulumi-lang-java=\"`partitionFieldName`\">`partition_field_name`</span> on the detector) to an ML filter reference. Each <span pulumi-lang-nodejs=\"`filterId`\" pulumi-lang-dotnet=\"`FilterId`\" pulumi-lang-go=\"`filterId`\" pulumi-lang-python=\"`filter_id`\" pulumi-lang-yaml=\"`filterId`\" pulumi-lang-java=\"`filterId`\">`filter_id`</span> must identify an ML filter that already exists in the cluster (for example, created using the Elasticsearch ML filter APIs). A rule must either have a non-empty <span pulumi-lang-nodejs=\"`scope`\" pulumi-lang-dotnet=\"`Scope`\" pulumi-lang-go=\"`scope`\" pulumi-lang-python=\"`scope`\" pulumi-lang-yaml=\"`scope`\" pulumi-lang-java=\"`scope`\">`scope`</span> or at least one condition. You may set <span pulumi-lang-nodejs=\"`conditions`\" pulumi-lang-dotnet=\"`Conditions`\" pulumi-lang-go=\"`conditions`\" pulumi-lang-python=\"`conditions`\" pulumi-lang-yaml=\"`conditions`\" pulumi-lang-java=\"`conditions`\">`conditions`</span> on the same rule.\n","type":"object"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleCondition:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleCondition":{"properties":{"appliesTo":{"description":"Specifies the result property to which the condition applies.\n","type":"string"},"operator":{"description":"Specifies the condition operator.\n","type":"string"},"value":{"description":"The value that is compared against the<span 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 \"> applies_to </span>field using the operator.\n","type":"number"}},"required":["appliesTo","operator","value"],"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleScope:ElasticsearchMlAnomalyDetectionJobAnalysisConfigDetectorCustomRuleScope":{"properties":{"filterId":{"description":"The ML filter identifier (<span pulumi-lang-nodejs=\"`filterId`\" pulumi-lang-dotnet=\"`FilterId`\" pulumi-lang-go=\"`filterId`\" pulumi-lang-python=\"`filter_id`\" pulumi-lang-yaml=\"`filterId`\" pulumi-lang-java=\"`filterId`\">`filter_id`</span>) to apply.\n","type":"string"},"filterType":{"description":"<span pulumi-lang-nodejs=\"`include`\" pulumi-lang-dotnet=\"`Include`\" pulumi-lang-go=\"`include`\" pulumi-lang-python=\"`include`\" pulumi-lang-yaml=\"`include`\" pulumi-lang-java=\"`include`\">`include`</span> applies the rule to values in the filter; <span pulumi-lang-nodejs=\"`exclude`\" pulumi-lang-dotnet=\"`Exclude`\" pulumi-lang-go=\"`exclude`\" pulumi-lang-python=\"`exclude`\" pulumi-lang-yaml=\"`exclude`\" pulumi-lang-java=\"`exclude`\">`exclude`</span> applies it to values not in the filter.\n","type":"string"}},"required":["filterId"],"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisConfigPerPartitionCategorization:ElasticsearchMlAnomalyDetectionJobAnalysisConfigPerPartitionCategorization":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"To enable this setting, you must also set the <span pulumi-lang-nodejs=\"`partitionFieldName`\" pulumi-lang-dotnet=\"`PartitionFieldName`\" pulumi-lang-go=\"`partitionFieldName`\" pulumi-lang-python=\"`partition_field_name`\" pulumi-lang-yaml=\"`partitionFieldName`\" pulumi-lang-java=\"`partitionFieldName`\">`partition_field_name`</span> property to the same value in every detector that uses the keyword <span pulumi-lang-nodejs=\"`mlcategory`\" pulumi-lang-dotnet=\"`Mlcategory`\" pulumi-lang-go=\"`mlcategory`\" pulumi-lang-python=\"`mlcategory`\" pulumi-lang-yaml=\"`mlcategory`\" pulumi-lang-java=\"`mlcategory`\">`mlcategory`</span>.\n","type":"boolean"},"stopOnWarn":{"description":"This setting can be set to true only if per-partition categorization is enabled.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobAnalysisLimits:ElasticsearchMlAnomalyDetectionJobAnalysisLimits":{"language":{"nodejs":{"requiredOutputs":["categorizationExamplesLimit"]}},"properties":{"categorizationExamplesLimit":{"description":"The maximum number of examples stored per category in memory and in the results data store.\n","type":"number"},"modelMemoryLimit":{"description":"The approximate maximum amount of memory resources that are required for analytical processing.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobDataDescription:ElasticsearchMlAnomalyDetectionJobDataDescription":{"properties":{"timeField":{"description":"The name of the field that contains the timestamp.\n","type":"string"},"timeFormat":{"description":"The time format, which can be epoch, epoch_ms, or a custom pattern.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobElasticsearchConnection:ElasticsearchMlAnomalyDetectionJobElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobModelPlotConfig:ElasticsearchMlAnomalyDetectionJobModelPlotConfig":{"language":{"nodejs":{"requiredOutputs":["annotationsEnabled","enabled"]}},"properties":{"annotationsEnabled":{"description":"If true, enables calculation and storage of the model change annotations for each entity that is being analyzed.\n","type":"boolean"},"enabled":{"description":"If true, enables calculation and storage of the model bounds for each entity that is being analyzed.\n","type":"boolean"},"terms":{"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":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlAnomalyDetectionJobTimeouts:ElasticsearchMlAnomalyDetectionJobTimeouts":{"properties":{"delete":{"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). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlCalendarElasticsearchConnection:ElasticsearchMlCalendarElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlCalendarEventElasticsearchConnection:ElasticsearchMlCalendarEventElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlCalendarJobElasticsearchConnection:ElasticsearchMlCalendarJobElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlDatafeedChunkingConfig:ElasticsearchMlDatafeedChunkingConfig":{"language":{"nodejs":{"requiredOutputs":["mode","timeSpan"]}},"properties":{"mode":{"description":"The chunking mode. Can be <span pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\">`auto`</span>, <span pulumi-lang-nodejs=\"`manual`\" pulumi-lang-dotnet=\"`Manual`\" pulumi-lang-go=\"`manual`\" pulumi-lang-python=\"`manual`\" pulumi-lang-yaml=\"`manual`\" pulumi-lang-java=\"`manual`\">`manual`</span>, or <span pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\">`off`</span>. In <span pulumi-lang-nodejs=\"`auto`\" pulumi-lang-dotnet=\"`Auto`\" pulumi-lang-go=\"`auto`\" pulumi-lang-python=\"`auto`\" pulumi-lang-yaml=\"`auto`\" pulumi-lang-java=\"`auto`\">`auto`</span> mode, the chunk size is dynamically calculated. In <span pulumi-lang-nodejs=\"`manual`\" pulumi-lang-dotnet=\"`Manual`\" pulumi-lang-go=\"`manual`\" pulumi-lang-python=\"`manual`\" pulumi-lang-yaml=\"`manual`\" pulumi-lang-java=\"`manual`\">`manual`</span> mode, chunking is applied according to the specified <span 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`\">`time_span`</span>. In <span pulumi-lang-nodejs=\"`off`\" pulumi-lang-dotnet=\"`Off`\" pulumi-lang-go=\"`off`\" pulumi-lang-python=\"`off`\" pulumi-lang-yaml=\"`off`\" pulumi-lang-java=\"`off`\">`off`</span> mode, no chunking is applied.\n","type":"string"},"timeSpan":{"description":"The time span for each chunk. Only applicable and required when mode is <span pulumi-lang-nodejs=\"`manual`\" pulumi-lang-dotnet=\"`Manual`\" pulumi-lang-go=\"`manual`\" pulumi-lang-python=\"`manual`\" pulumi-lang-yaml=\"`manual`\" pulumi-lang-java=\"`manual`\">`manual`</span>. Must be a valid duration.\n","type":"string"}},"required":["mode"],"type":"object"},"elasticstack:index/ElasticsearchMlDatafeedDelayedDataCheckConfig:ElasticsearchMlDatafeedDelayedDataCheckConfig":{"language":{"nodejs":{"requiredOutputs":["checkWindow","enabled"]}},"properties":{"checkWindow":{"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 <span 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`\">`check_window`</span> to be calculated when the real-time datafeed runs.\n","type":"string"},"enabled":{"description":"Specifies whether the datafeed periodically checks for delayed data.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/ElasticsearchMlDatafeedElasticsearchConnection:ElasticsearchMlDatafeedElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlDatafeedIndicesOptions:ElasticsearchMlDatafeedIndicesOptions":{"language":{"nodejs":{"requiredOutputs":["allowNoIndices","expandWildcards","ignoreThrottled","ignoreUnavailable"]}},"properties":{"allowNoIndices":{"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","type":"boolean"},"expandWildcards":{"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","items":{"type":"string"},"type":"array"},"ignoreThrottled":{"deprecationMessage":"Deprecated","description":"If true, concrete, expanded, or aliased indices are ignored when frozen. This setting is deprecated.\n","type":"boolean"},"ignoreUnavailable":{"description":"If true, unavailable indices (missing or closed) are ignored.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchMlDatafeedStateElasticsearchConnection:ElasticsearchMlDatafeedStateElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlDatafeedStateTimeouts:ElasticsearchMlDatafeedStateTimeouts":{"properties":{"create":{"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":"string"},"update":{"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":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlFilterElasticsearchConnection:ElasticsearchMlFilterElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlJobStateElasticsearchConnection:ElasticsearchMlJobStateElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchMlJobStateTimeouts:ElasticsearchMlJobStateTimeouts":{"properties":{"create":{"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":"string"},"update":{"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":"string"}},"type":"object"},"elasticstack:index/ElasticsearchQueryRulesetElasticsearchConnection:ElasticsearchQueryRulesetElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchQueryRulesetRule:ElasticsearchQueryRulesetRule":{"properties":{"actions":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetRuleActions:ElasticsearchQueryRulesetRuleActions","description":"Actions to take when the rule matches; exactly one of <span pulumi-lang-nodejs=\"`ids`\" pulumi-lang-dotnet=\"`Ids`\" pulumi-lang-go=\"`ids`\" pulumi-lang-python=\"`ids`\" pulumi-lang-yaml=\"`ids`\" pulumi-lang-java=\"`ids`\">`ids`</span> or <span pulumi-lang-nodejs=\"`docs`\" pulumi-lang-dotnet=\"`Docs`\" pulumi-lang-go=\"`docs`\" pulumi-lang-python=\"`docs`\" pulumi-lang-yaml=\"`docs`\" pulumi-lang-java=\"`docs`\">`docs`</span> must be set.\n"},"criterias":{"description":"Match criteria for the rule; all criteria must match for the rule to apply.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetRuleCriteria:ElasticsearchQueryRulesetRuleCriteria"},"type":"array"},"priority":{"description":"Relative priority within the ruleset; omitted from the API when null.\n","type":"number"},"ruleId":{"description":"Unique identifier for the rule within the ruleset.\n","type":"string"},"type":{"description":"Rule type: <span pulumi-lang-nodejs=\"`pinned`\" pulumi-lang-dotnet=\"`Pinned`\" pulumi-lang-go=\"`pinned`\" pulumi-lang-python=\"`pinned`\" pulumi-lang-yaml=\"`pinned`\" pulumi-lang-java=\"`pinned`\">`pinned`</span> or <span pulumi-lang-nodejs=\"`exclude`\" pulumi-lang-dotnet=\"`Exclude`\" pulumi-lang-go=\"`exclude`\" pulumi-lang-python=\"`exclude`\" pulumi-lang-yaml=\"`exclude`\" pulumi-lang-java=\"`exclude`\">`exclude`</span>.\n","type":"string"}},"required":["actions","criterias","ruleId","type"],"type":"object"},"elasticstack:index/ElasticsearchQueryRulesetRuleActions:ElasticsearchQueryRulesetRuleActions":{"properties":{"docs":{"description":"Documents to pin or exclude, specified by index and ID.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchQueryRulesetRuleActionsDoc:ElasticsearchQueryRulesetRuleActionsDoc"},"type":"array"},"ids":{"description":"Document IDs to pin or exclude.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"elasticstack:index/ElasticsearchQueryRulesetRuleActionsDoc:ElasticsearchQueryRulesetRuleActionsDoc":{"properties":{"_id":{"description":"Unique document ID.\n","type":"string"},"_index":{"description":"Index containing the document.\n","type":"string"}},"required":["_id","_index"],"type":"object"},"elasticstack:index/ElasticsearchQueryRulesetRuleCriteria:ElasticsearchQueryRulesetRuleCriteria":{"properties":{"metadata":{"description":"Metadata field to match against; omitted from the API when null.\n","type":"string"},"type":{"description":"Criteria type (for example <span pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\">`exact`</span>, <span pulumi-lang-nodejs=\"`always`\" pulumi-lang-dotnet=\"`Always`\" pulumi-lang-go=\"`always`\" pulumi-lang-python=\"`always`\" pulumi-lang-yaml=\"`always`\" pulumi-lang-java=\"`always`\">`always`</span>, <span pulumi-lang-nodejs=\"`gt`\" pulumi-lang-dotnet=\"`Gt`\" pulumi-lang-go=\"`gt`\" pulumi-lang-python=\"`gt`\" pulumi-lang-yaml=\"`gt`\" pulumi-lang-java=\"`gt`\">`gt`</span>).\n","type":"string"},"values":{"description":"JSON-encoded array of string or numeric values; required unless <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> is <span pulumi-lang-nodejs=\"`always`\" pulumi-lang-dotnet=\"`Always`\" pulumi-lang-go=\"`always`\" pulumi-lang-python=\"`always`\" pulumi-lang-yaml=\"`always`\" pulumi-lang-java=\"`always`\">`always`</span>. Empty arrays are not allowed.\n","type":"string"}},"required":["type"],"type":"object"},"elasticstack:index/ElasticsearchScriptElasticsearchConnection:ElasticsearchScriptElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityApiKeyAccess:ElasticsearchSecurityApiKeyAccess":{"properties":{"replications":{"description":"A list of replication configurations for which the cross-cluster API key will have replication privileges.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyAccessReplication:ElasticsearchSecurityApiKeyAccessReplication"},"type":"array"},"searches":{"description":"A list of search configurations for which the cross-cluster API key will have search privileges.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityApiKeyAccessSearch:ElasticsearchSecurityApiKeyAccessSearch"},"type":"array"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityApiKeyAccessReplication:ElasticsearchSecurityApiKeyAccessReplication":{"properties":{"names":{"description":"A list of index patterns for replication.\n","items":{"type":"string"},"type":"array"}},"required":["names"],"type":"object"},"elasticstack:index/ElasticsearchSecurityApiKeyAccessSearch:ElasticsearchSecurityApiKeyAccessSearch":{"properties":{"allowRestrictedIndices":{"description":"Whether to allow access to restricted indices.\n","type":"boolean"},"fieldSecurity":{"description":"Field-level security configuration in JSON format.\n","type":"string"},"names":{"description":"A list of index patterns for search.\n","items":{"type":"string"},"type":"array"},"query":{"description":"Query to filter documents for search operations in JSON format.\n","type":"string"}},"required":["names"],"type":"object"},"elasticstack:index/ElasticsearchSecurityApiKeyElasticsearchConnection:ElasticsearchSecurityApiKeyElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleApplication:ElasticsearchSecurityRoleApplication":{"properties":{"application":{"description":"The name of the application to which this entry applies.\n","type":"string"},"privileges":{"description":"A list of strings, where each element is the name of an application privilege or action.\n","items":{"type":"string"},"type":"array"},"resources":{"description":"A list resources to which the privileges are applied.\n","items":{"type":"string"},"type":"array"}},"required":["application","privileges","resources"],"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleElasticsearchConnection:ElasticsearchSecurityRoleElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleIndex:ElasticsearchSecurityRoleIndex":{"language":{"nodejs":{"requiredOutputs":["allowRestrictedIndices","names","privileges"]}},"properties":{"allowRestrictedIndices":{"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","type":"boolean"},"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleIndexFieldSecurity:ElasticsearchSecurityRoleIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"privileges":{"description":"The index level privileges that the owners of the role have on the specified indices.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A search query that defines the documents the owners of the role have read access to.\n","type":"string"}},"required":["names","privileges"],"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleIndexFieldSecurity:ElasticsearchSecurityRoleIndexFieldSecurity":{"language":{"nodejs":{"requiredOutputs":["excepts"]}},"properties":{"excepts":{"description":"List of the fields to which the grants will not be applied.\n","items":{"type":"string"},"type":"array"},"grants":{"description":"List of the fields to grant the access to.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleMappingElasticsearchConnection:ElasticsearchSecurityRoleMappingElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleRemoteIndex:ElasticsearchSecurityRoleRemoteIndex":{"properties":{"clusters":{"description":"A list of cluster aliases to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FElasticsearchSecurityRoleRemoteIndexFieldSecurity:ElasticsearchSecurityRoleRemoteIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"privileges":{"description":"The index level privileges that the owners of the role have on the specified indices.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A search query that defines the documents the owners of the role have read access to.\n","type":"string"}},"required":["clusters","names","privileges"],"type":"object"},"elasticstack:index/ElasticsearchSecurityRoleRemoteIndexFieldSecurity:ElasticsearchSecurityRoleRemoteIndexFieldSecurity":{"language":{"nodejs":{"requiredOutputs":["excepts"]}},"properties":{"excepts":{"description":"List of the fields to which the grants will not be applied.\n","items":{"type":"string"},"type":"array"},"grants":{"description":"List of the fields to grant the access to.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"elasticstack:index/ElasticsearchSecuritySystemUserElasticsearchConnection:ElasticsearchSecuritySystemUserElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSecurityUserElasticsearchConnection:ElasticsearchSecurityUserElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotLifecycleElasticsearchConnection:ElasticsearchSnapshotLifecycleElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryAzure:ElasticsearchSnapshotRepositoryAzure":{"language":{"nodejs":{"requiredOutputs":["basePath","chunkSize","client","compress","container","locationMode","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"]}},"properties":{"basePath":{"description":"Specifies the path within the container to the repository data.\n","type":"string"},"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"client":{"description":"Azure named client to use.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"container":{"description":"Container name. You must create the Azure container before creating the repository.\n","type":"string"},"locationMode":{"description":"Location mode for the Azure repository. <span 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`\">`primary_only`</span> or <span 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`\">`secondary_only`</span>. See the [Azure storage redundancy documentation](https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy) for more details.\n","type":"string"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryElasticsearchConnection:ElasticsearchSnapshotRepositoryElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryFs:ElasticsearchSnapshotRepositoryFs":{"language":{"nodejs":{"requiredOutputs":["chunkSize","compress","location","maxNumberOfSnapshots","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"]}},"properties":{"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"location":{"description":"Location of the shared filesystem used to store and retrieve snapshots.\n","type":"string"},"maxNumberOfSnapshots":{"description":"Maximum number of snapshots the repository can contain.\n","type":"number"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryGcs:ElasticsearchSnapshotRepositoryGcs":{"language":{"nodejs":{"requiredOutputs":["basePath","bucket","chunkSize","client","compress","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"]}},"properties":{"basePath":{"description":"Specifies the path within the bucket to the repository data. Defaults to the root of the bucket.\n","type":"string"},"bucket":{"description":"The name of the bucket to be used for snapshots.\n","type":"string"},"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"client":{"description":"The name of the client to use to connect to Google Cloud Storage.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryHdfs:ElasticsearchSnapshotRepositoryHdfs":{"language":{"nodejs":{"requiredOutputs":["chunkSize","compress","loadDefaults","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","path","readonly","uri"]}},"properties":{"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"loadDefaults":{"description":"Whether to load the default Hadoop configuration or not.\n","type":"boolean"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"path":{"description":"The file path within the filesystem where data is stored/loaded.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"},"uri":{"description":"The uri address for hdfs. ex: \"hdfs://\\n\\n:\\n\\n/\".\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryS3:ElasticsearchSnapshotRepositoryS3":{"language":{"nodejs":{"requiredOutputs":["basePath","bucket","bufferSize","cannedAcl","chunkSize","client","compress","endpoint","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","pathStyleAccess","readonly","serverSideEncryption","storageClass"]}},"properties":{"basePath":{"description":"Specifies the path to the repository data within its bucket.\n","type":"string"},"bucket":{"description":"Name of the S3 bucket to use for snapshots.\n","type":"string"},"bufferSize":{"description":"Minimum threshold below which the chunk is uploaded using a single request.\n","type":"string"},"cannedAcl":{"description":"The S3 repository supports all S3 canned ACLs.\n","type":"string"},"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"client":{"description":"The name of the S3 client to use to connect to S3.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"endpoint":{"description":"Custom S3 service endpoint, useful when using VPC endpoints or non-default S3 URLs.\n","type":"string"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"pathStyleAccess":{"description":"If true, path style access pattern will be used.\n","type":"boolean"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"},"serverSideEncryption":{"description":"When true, files are encrypted server-side using AES-256 algorithm.\n","type":"boolean"},"storageClass":{"description":"Sets the S3 storage class for objects stored in the snapshot repository.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSnapshotRepositoryUrl:ElasticsearchSnapshotRepositoryUrl":{"language":{"nodejs":{"requiredOutputs":["chunkSize","compress","httpMaxRetries","httpSocketTimeout","maxNumberOfSnapshots","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly","url"]}},"properties":{"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"httpMaxRetries":{"description":"Maximum number of retries for http and https URLs.\n","type":"number"},"httpSocketTimeout":{"description":"Maximum wait time for data transfers over a connection.\n","type":"string"},"maxNumberOfSnapshots":{"description":"Maximum number of snapshots the repository can contain.\n","type":"number"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"},"url":{"description":"URL location of the root of the shared filesystem repository.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSynonymSetElasticsearchConnection:ElasticsearchSynonymSetElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchSynonymSetSynonymsSet:ElasticsearchSynonymSetSynonymsSet":{"language":{"nodejs":{"requiredOutputs":["id","synonyms"]}},"properties":{"id":{"description":"The identifier for this synonym rule. When omitted, the provider generates a UUID.\n","type":"string"},"synonyms":{"description":"The synonym rule in Solr format (e.g. `\"i-pod, i pod => ipod\"` or `\"universe, cosmos\"`).\n","type":"string"}},"required":["synonyms"],"type":"object"},"elasticstack:index/ElasticsearchTransformDestination:ElasticsearchTransformDestination":{"properties":{"aliases":{"description":"The aliases that the destination index for the transform should have.\n","items":{"$ref":"#/types/elasticstack:index%2FElasticsearchTransformDestinationAlias:ElasticsearchTransformDestinationAlias"},"type":"array"},"index":{"description":"The destination index for the transform.\n","type":"string"},"pipeline":{"description":"The unique identifier for an ingest pipeline.\n","type":"string"}},"required":["index"],"type":"object"},"elasticstack:index/ElasticsearchTransformDestinationAlias:ElasticsearchTransformDestinationAlias":{"language":{"nodejs":{"requiredOutputs":["alias","moveOnCreation"]}},"properties":{"alias":{"description":"The name of the alias.\n","type":"string"},"moveOnCreation":{"description":"Whether the destination index should be the only index in this alias. Defaults to false.\n","type":"boolean"}},"required":["alias"],"type":"object"},"elasticstack:index/ElasticsearchTransformElasticsearchConnection:ElasticsearchTransformElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"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.\n"}},"type":"object"},"elasticstack:index/ElasticsearchTransformRetentionPolicyTime:ElasticsearchTransformRetentionPolicyTime":{"properties":{"field":{"description":"The date field that is used to calculate the age of the document.\n","type":"string"},"maxAge":{"description":"Specifies the maximum age of a document in the destination index.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchTransformSource:ElasticsearchTransformSource":{"language":{"nodejs":{"requiredOutputs":["indices","query"]}},"properties":{"indices":{"description":"The source indices for the transform.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A query clause that retrieves a subset of data from the source index.\n","type":"string"},"runtimeMappings":{"description":"Definitions of search-time runtime fields that can be used by the transform.\n","type":"string"}},"required":["indices"],"type":"object"},"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.\n"}},"type":"object"},"elasticstack:index/ElasticsearchTransformSyncTime:ElasticsearchTransformSyncTime":{"language":{"nodejs":{"requiredOutputs":["delay"]}},"properties":{"delay":{"description":"The time delay between the current time and the latest input data time. The default value is 60s.\n","type":"string"},"field":{"description":"The date field that is used to identify new documents in the source.\n","type":"string"}},"type":"object"},"elasticstack:index/ElasticsearchWatchElasticsearchConnection:ElasticsearchWatchElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetAgentDownloadSourceKibanaConnection:FleetAgentDownloadSourceKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptions:FleetAgentPolicyAdvancedMonitoringOptions":{"language":{"nodejs":{"requiredOutputs":["diagnostics","httpMonitoringEndpoint"]}},"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"},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptionsDiagnostics:FleetAgentPolicyAdvancedMonitoringOptionsDiagnostics":{"language":{"nodejs":{"requiredOutputs":["fileUploader","rateLimits"]}},"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"},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploader:FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsFileUploader":{"language":{"nodejs":{"requiredOutputs":["backoffDuration","initDuration","maxRetries"]}},"properties":{"backoffDuration":{"description":"Maximum backoff duration between retry attempts (e.g., '1m', '30s').\n","type":"string"},"initDuration":{"description":"Initial duration before the first retry attempt (e.g., '1s', '500ms').\n","type":"string"},"maxRetries":{"description":"Maximum number of retry attempts for file uploads.\n","type":"number"}},"type":"object"},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimits:FleetAgentPolicyAdvancedMonitoringOptionsDiagnosticsRateLimits":{"language":{"nodejs":{"requiredOutputs":["burst","interval"]}},"properties":{"burst":{"description":"Rate limiting burst count for diagnostics requests.\n","type":"number"},"interval":{"description":"Rate limiting interval for diagnostics requests (e.g., '1m', '30s').\n","type":"string"}},"type":"object"},"elasticstack:index/FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpoint:FleetAgentPolicyAdvancedMonitoringOptionsHttpMonitoringEndpoint":{"language":{"nodejs":{"requiredOutputs":["bufferEnabled","enabled","host","port","pprofEnabled"]}},"properties":{"bufferEnabled":{"description":"Enable monitoring buffer for the HTTP endpoint.\n","type":"boolean"},"enabled":{"description":"Enable the HTTP monitoring endpoint. When enabled, exposes a /liveness endpoint for health checks.\n","type":"boolean"},"host":{"description":"Host for the HTTP monitoring endpoint.\n","type":"string"},"port":{"description":"Port for the HTTP monitoring endpoint.\n","type":"number"},"pprofEnabled":{"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":"boolean"}},"type":"object"},"elasticstack:index/FleetAgentPolicyAdvancedSettings:FleetAgentPolicyAdvancedSettings":{"language":{"nodejs":{"requiredOutputs":["downloadTargetDirectory","downloadTimeout","goMaxProcs","loggingFilesInterval","loggingFilesKeepfiles","loggingFilesRotateeverybytes","loggingLevel","loggingMetricsPeriod","loggingToFiles","monitoringRuntimeExperimental"]}},"properties":{"downloadTargetDirectory":{"description":"Target directory for downloading agent updates.\n","type":"string"},"downloadTimeout":{"description":"Timeout for downloading agent updates (e.g., '2h', '30m').\n","type":"string"},"goMaxProcs":{"description":"Maximum number of CPUs that the agent can use (GOMAXPROCS). Set to 0 to use all available CPUs.\n","type":"number"},"loggingFilesInterval":{"description":"Interval for log file rotation (e.g., '30s', '1m', '1h').\n","type":"string"},"loggingFilesKeepfiles":{"description":"Number of rotated log files to keep.\n","type":"number"},"loggingFilesRotateeverybytes":{"description":"Rotate log files when they reach this size in bytes.\n","type":"number"},"loggingLevel":{"description":"Logging level for the agent. Valid values: debug, info, warning, error.\n","type":"string"},"loggingMetricsPeriod":{"description":"Period for logging agent metrics (e.g., '30s', '1m').\n","type":"string"},"loggingToFiles":{"description":"Enable logging to files.\n","type":"boolean"},"monitoringRuntimeExperimental":{"description":"Experimental runtime monitoring mode. Valid values: '' (empty string to disable), 'process', 'otel'.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetAgentPolicyGlobalDataTags:FleetAgentPolicyGlobalDataTags":{"properties":{"numberValue":{"description":"Number value for the field. If this is set,<span 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 \"> string_value </span>must not be defined.\n","type":"number"},"stringValue":{"description":"String value for the field. If this is set,<span 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 \"> number_value </span>must not be defined.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetAgentPolicyKibanaConnection:FleetAgentPolicyKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetCustomIntegrationKibanaConnection:FleetCustomIntegrationKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetCustomIntegrationTimeouts:FleetCustomIntegrationTimeouts":{"properties":{"create":{"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":"string"},"update":{"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":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyKibanaConnection:FleetElasticDefendIntegrationPolicyKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicy:FleetElasticDefendIntegrationPolicyPolicy":{"properties":{"linux":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinux:FleetElasticDefendIntegrationPolicyPolicyLinux","description":"Linux-specific Elastic Defend policy settings.\n"},"mac":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMac:FleetElasticDefendIntegrationPolicyPolicyMac","description":"macOS-specific Elastic Defend policy settings.\n"},"windows":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindows:FleetElasticDefendIntegrationPolicyPolicyWindows","description":"Windows-specific Elastic Defend policy settings.\n"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinux:FleetElasticDefendIntegrationPolicyPolicyLinux":{"language":{"nodejs":{"requiredOutputs":["behaviorProtection","memoryProtection"]}},"properties":{"behaviorProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyLinuxBehaviorProtection","description":"Linux behavior protection settings.\n"},"events":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxEvents:FleetElasticDefendIntegrationPolicyPolicyLinuxEvents","description":"Linux event collection settings.\n"},"logging":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxLogging:FleetElasticDefendIntegrationPolicyPolicyLinuxLogging","description":"Linux logging settings.\n"},"malware":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxMalware:FleetElasticDefendIntegrationPolicyPolicyLinuxMalware","description":"Linux malware protection settings.\n"},"memoryProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyLinuxMemoryProtection","description":"Linux memory protection settings.\n"},"popup":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxPopup:FleetElasticDefendIntegrationPolicyPolicyLinuxPopup","description":"Linux popup notification settings.\n"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyLinuxBehaviorProtection":{"language":{"nodejs":{"requiredOutputs":["mode","reputationService","supported"]}},"properties":{"mode":{"description":"Protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"reputationService":{"description":"Whether reputation service is enabled.\n","type":"boolean"},"supported":{"description":"Whether this protection is supported on the platform.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxEvents:FleetElasticDefendIntegrationPolicyPolicyLinuxEvents":{"properties":{"file":{"description":"Collect file events.\n","type":"boolean"},"network":{"description":"Collect network events.\n","type":"boolean"},"process":{"description":"Collect process events.\n","type":"boolean"},"sessionData":{"description":"Collect session data events.\n","type":"boolean"},"ttyIo":{"description":"Collect TTY I/O events.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxLogging:FleetElasticDefendIntegrationPolicyPolicyLinuxLogging":{"properties":{"file":{"description":"Log level for file logging. Valid values: `\"info\"`, `\"debug\"`, `\"warning\"`, `\"error\"`, `\"critical\"`.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxMalware:FleetElasticDefendIntegrationPolicyPolicyLinuxMalware":{"properties":{"blocklist":{"description":"Whether blocklist is enabled.\n","type":"boolean"},"mode":{"description":"Malware protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyLinuxMemoryProtection":{"language":{"nodejs":{"requiredOutputs":["mode","supported"]}},"properties":{"mode":{"description":"Protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"supported":{"description":"Whether this protection is supported on the platform.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxPopup:FleetElasticDefendIntegrationPolicyPolicyLinuxPopup":{"language":{"nodejs":{"requiredOutputs":["behaviorProtection","malware","memoryProtection"]}},"properties":{"behaviorProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxPopupBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyLinuxPopupBehaviorProtection"},"malware":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxPopupMalware:FleetElasticDefendIntegrationPolicyPolicyLinuxPopupMalware"},"memoryProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyLinuxPopupMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyLinuxPopupMemoryProtection"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxPopupBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyLinuxPopupBehaviorProtection":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxPopupMalware:FleetElasticDefendIntegrationPolicyPolicyLinuxPopupMalware":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyLinuxPopupMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyLinuxPopupMemoryProtection":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMac:FleetElasticDefendIntegrationPolicyPolicyMac":{"language":{"nodejs":{"requiredOutputs":["behaviorProtection","memoryProtection"]}},"properties":{"behaviorProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyMacBehaviorProtection","description":"macOS behavior protection settings.\n"},"events":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacEvents:FleetElasticDefendIntegrationPolicyPolicyMacEvents","description":"macOS event collection settings.\n"},"logging":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacLogging:FleetElasticDefendIntegrationPolicyPolicyMacLogging","description":"macOS logging settings.\n"},"malware":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacMalware:FleetElasticDefendIntegrationPolicyPolicyMacMalware","description":"macOS malware protection settings.\n"},"memoryProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyMacMemoryProtection","description":"macOS memory protection settings.\n"},"popup":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacPopup:FleetElasticDefendIntegrationPolicyPolicyMacPopup","description":"macOS popup notification settings.\n"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyMacBehaviorProtection":{"language":{"nodejs":{"requiredOutputs":["mode","reputationService","supported"]}},"properties":{"mode":{"description":"Protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"reputationService":{"description":"Whether reputation service is enabled.\n","type":"boolean"},"supported":{"description":"Whether this protection is supported on the platform.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacEvents:FleetElasticDefendIntegrationPolicyPolicyMacEvents":{"properties":{"file":{"description":"Collect file events.\n","type":"boolean"},"network":{"description":"Collect network events.\n","type":"boolean"},"process":{"description":"Collect process events.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacLogging:FleetElasticDefendIntegrationPolicyPolicyMacLogging":{"properties":{"file":{"description":"Log level for file logging. Valid values: `\"info\"`, `\"debug\"`, `\"warning\"`, `\"error\"`, `\"critical\"`.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacMalware:FleetElasticDefendIntegrationPolicyPolicyMacMalware":{"properties":{"blocklist":{"description":"Whether blocklist is enabled.\n","type":"boolean"},"mode":{"description":"Malware protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"notifyUser":{"description":"Whether to notify the user on malware detection.\n","type":"boolean"},"onWriteScan":{"description":"Whether on-write scan is enabled.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyMacMemoryProtection":{"language":{"nodejs":{"requiredOutputs":["mode","supported"]}},"properties":{"mode":{"description":"Protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"supported":{"description":"Whether this protection is supported on the platform.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacPopup:FleetElasticDefendIntegrationPolicyPolicyMacPopup":{"language":{"nodejs":{"requiredOutputs":["behaviorProtection","malware","memoryProtection"]}},"properties":{"behaviorProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacPopupBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyMacPopupBehaviorProtection"},"malware":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacPopupMalware:FleetElasticDefendIntegrationPolicyPolicyMacPopupMalware"},"memoryProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyMacPopupMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyMacPopupMemoryProtection"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacPopupBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyMacPopupBehaviorProtection":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacPopupMalware:FleetElasticDefendIntegrationPolicyPolicyMacPopupMalware":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyMacPopupMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyMacPopupMemoryProtection":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindows:FleetElasticDefendIntegrationPolicyPolicyWindows":{"language":{"nodejs":{"requiredOutputs":["antivirusRegistration","attackSurfaceReduction","behaviorProtection","memoryProtection","popup","ransomware"]}},"properties":{"antivirusRegistration":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsAntivirusRegistration:FleetElasticDefendIntegrationPolicyPolicyWindowsAntivirusRegistration","description":"Windows antivirus registration settings.\n"},"attackSurfaceReduction":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsAttackSurfaceReduction:FleetElasticDefendIntegrationPolicyPolicyWindowsAttackSurfaceReduction","description":"Windows attack surface reduction settings.\n"},"behaviorProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyWindowsBehaviorProtection","description":"Windows behavior protection settings.\n"},"events":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsEvents:FleetElasticDefendIntegrationPolicyPolicyWindowsEvents","description":"Windows event collection settings.\n"},"logging":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsLogging:FleetElasticDefendIntegrationPolicyPolicyWindowsLogging","description":"Windows logging settings.\n"},"malware":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsMalware:FleetElasticDefendIntegrationPolicyPolicyWindowsMalware","description":"Windows malware protection settings.\n"},"memoryProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyWindowsMemoryProtection","description":"Windows memory protection settings.\n"},"popup":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsPopup:FleetElasticDefendIntegrationPolicyPolicyWindowsPopup","description":"Windows popup notification settings.\n"},"ransomware":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsRansomware:FleetElasticDefendIntegrationPolicyPolicyWindowsRansomware","description":"Windows ransomware protection settings.\n"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsAntivirusRegistration:FleetElasticDefendIntegrationPolicyPolicyWindowsAntivirusRegistration":{"language":{"nodejs":{"requiredOutputs":["enabled","mode"]}},"properties":{"enabled":{"description":"Whether antivirus registration is enabled.\n","type":"boolean"},"mode":{"description":"Antivirus registration mode. Valid values: `\"enabled\"`, `\"disabled\"`, `<span pulumi-lang-nodejs=\"\"syncWithMalwarePrevent\"\" pulumi-lang-dotnet=\"\"SyncWithMalwarePrevent\"\" pulumi-lang-go=\"\"syncWithMalwarePrevent\"\" pulumi-lang-python=\"\"sync_with_malware_prevent\"\" pulumi-lang-yaml=\"\"syncWithMalwarePrevent\"\" pulumi-lang-java=\"\"syncWithMalwarePrevent\"\">\"sync_with_malware_prevent\"</span>`.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsAttackSurfaceReduction:FleetElasticDefendIntegrationPolicyPolicyWindowsAttackSurfaceReduction":{"language":{"nodejs":{"requiredOutputs":["credentialHardening"]}},"properties":{"credentialHardening":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsAttackSurfaceReductionCredentialHardening:FleetElasticDefendIntegrationPolicyPolicyWindowsAttackSurfaceReductionCredentialHardening","description":"Credential hardening settings.\n"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsAttackSurfaceReductionCredentialHardening:FleetElasticDefendIntegrationPolicyPolicyWindowsAttackSurfaceReductionCredentialHardening":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Whether credential hardening is enabled.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyWindowsBehaviorProtection":{"language":{"nodejs":{"requiredOutputs":["mode","reputationService","supported"]}},"properties":{"mode":{"description":"Protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"reputationService":{"description":"Whether reputation service is enabled.\n","type":"boolean"},"supported":{"description":"Whether this protection is supported on the platform.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsEvents:FleetElasticDefendIntegrationPolicyPolicyWindowsEvents":{"properties":{"authentication":{"description":"Collect authentication events.\n","type":"boolean"},"dllAndDriverLoad":{"description":"Collect DLL and driver load events.\n","type":"boolean"},"dns":{"description":"Collect DNS events.\n","type":"boolean"},"file":{"description":"Collect file events.\n","type":"boolean"},"network":{"description":"Collect network events.\n","type":"boolean"},"process":{"description":"Collect process events.\n","type":"boolean"},"registry":{"description":"Collect registry events.\n","type":"boolean"},"security":{"description":"Collect security events.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsLogging:FleetElasticDefendIntegrationPolicyPolicyWindowsLogging":{"properties":{"file":{"description":"Log level for file logging. Valid values: `\"info\"`, `\"debug\"`, `\"warning\"`, `\"error\"`, `\"critical\"`.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsMalware:FleetElasticDefendIntegrationPolicyPolicyWindowsMalware":{"properties":{"blocklist":{"description":"Whether blocklist is enabled.\n","type":"boolean"},"mode":{"description":"Malware protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"notifyUser":{"description":"Whether to notify the user on malware detection.\n","type":"boolean"},"onWriteScan":{"description":"Whether on-write scan is enabled.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyWindowsMemoryProtection":{"language":{"nodejs":{"requiredOutputs":["mode","supported"]}},"properties":{"mode":{"description":"Protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"supported":{"description":"Whether this protection is supported on the platform.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsPopup:FleetElasticDefendIntegrationPolicyPolicyWindowsPopup":{"language":{"nodejs":{"requiredOutputs":["behaviorProtection","malware","memoryProtection","ransomware"]}},"properties":{"behaviorProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsPopupBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyWindowsPopupBehaviorProtection"},"malware":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsPopupMalware:FleetElasticDefendIntegrationPolicyPolicyWindowsPopupMalware"},"memoryProtection":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsPopupMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyWindowsPopupMemoryProtection"},"ransomware":{"$ref":"#/types/elasticstack:index%2FFleetElasticDefendIntegrationPolicyPolicyWindowsPopupRansomware:FleetElasticDefendIntegrationPolicyPolicyWindowsPopupRansomware"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsPopupBehaviorProtection:FleetElasticDefendIntegrationPolicyPolicyWindowsPopupBehaviorProtection":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsPopupMalware:FleetElasticDefendIntegrationPolicyPolicyWindowsPopupMalware":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsPopupMemoryProtection:FleetElasticDefendIntegrationPolicyPolicyWindowsPopupMemoryProtection":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsPopupRansomware:FleetElasticDefendIntegrationPolicyPolicyWindowsPopupRansomware":{"language":{"nodejs":{"requiredOutputs":["enabled","message"]}},"properties":{"enabled":{"description":"Whether the popup notification is enabled.\n","type":"boolean"},"message":{"description":"The popup message text.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetElasticDefendIntegrationPolicyPolicyWindowsRansomware:FleetElasticDefendIntegrationPolicyPolicyWindowsRansomware":{"language":{"nodejs":{"requiredOutputs":["mode","supported"]}},"properties":{"mode":{"description":"Protection mode. Valid values: `\"off\"`, `\"detect\"`, `\"prevent\"`.\n","type":"string"},"supported":{"description":"Whether this protection is supported on the platform.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetIntegrationKibanaConnection:FleetIntegrationKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetIntegrationPolicyInputs:FleetIntegrationPolicyInputs":{"language":{"nodejs":{"requiredOutputs":["defaults","enabled"]}},"properties":{"defaults":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputsDefaults:FleetIntegrationPolicyInputsDefaults","description":"Input defaults.\n"},"enabled":{"description":"Enable the input.\n","type":"boolean"},"streams":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputsStreams:FleetIntegrationPolicyInputsStreams"},"description":"Input streams mapped by stream ID.\n","type":"object"},"vars":{"description":"Input-level variables as JSON.\n","secret":true,"type":"string"}},"type":"object"},"elasticstack:index/FleetIntegrationPolicyInputsDefaults:FleetIntegrationPolicyInputsDefaults":{"language":{"nodejs":{"requiredOutputs":["streams","vars"]}},"properties":{"streams":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FFleetIntegrationPolicyInputsDefaultsStreams:FleetIntegrationPolicyInputsDefaultsStreams"},"description":"Stream-level defaults mapped by stream ID.\n","type":"object"},"vars":{"description":"Input-level variable defaults as JSON.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetIntegrationPolicyInputsDefaultsStreams:FleetIntegrationPolicyInputsDefaultsStreams":{"language":{"nodejs":{"requiredOutputs":["enabled","vars"]}},"properties":{"enabled":{"description":"Default enabled state for the stream.\n","type":"boolean"},"vars":{"description":"Stream-level variable defaults as JSON.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetIntegrationPolicyInputsStreams:FleetIntegrationPolicyInputsStreams":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"description":"Enable the stream.\n","type":"boolean"},"vars":{"description":"Stream-level variables as JSON.\n","secret":true,"type":"string"}},"type":"object"},"elasticstack:index/FleetIntegrationPolicyKibanaConnection:FleetIntegrationPolicyKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetOutputKafka:FleetOutputKafka":{"language":{"nodejs":{"requiredOutputs":["brokerTimeout","clientId","compression","compressionLevel","hash","headers","partition","random","requiredAcks","roundRobin","timeout","version"]}},"properties":{"authType":{"description":"Authentication type for Kafka output.\n","type":"string"},"brokerTimeout":{"description":"Kafka broker timeout.\n","type":"number"},"clientId":{"description":"Kafka client ID.\n","type":"string"},"compression":{"description":"Compression type for Kafka output.\n","type":"string"},"compressionLevel":{"description":"Compression level for Kafka output.\n","type":"number"},"connectionType":{"description":"Connection type for Kafka output.\n","type":"string"},"hash":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafkaHash:FleetOutputKafkaHash","description":"Hash configuration for Kafka partition.\n"},"headers":{"description":"Headers for Kafka messages.\n","items":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafkaHeader:FleetOutputKafkaHeader"},"type":"array"},"key":{"description":"Key field for Kafka messages.\n","type":"string"},"partition":{"description":"Partition strategy for Kafka output.\n","type":"string"},"password":{"description":"Password for Kafka authentication.\n","secret":true,"type":"string"},"random":{"$ref":"#/types/elasticstack:index%2FFleetOutputKafkaRandom:FleetOutputKafkaRandom","description":"Random configuration for Kafka partition.\n"},"requiredAcks":{"description":"Number of acknowledgments required for Kafka output.\n","type":"number"},"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":{"description":"Timeout for Kafka output.\n","type":"number"},"topic":{"description":"Kafka topic.\n","type":"string"},"username":{"description":"Username for Kafka authentication.\n","type":"string"},"version":{"description":"Kafka version.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetOutputKafkaHash:FleetOutputKafkaHash":{"properties":{"hash":{"description":"Hash field.\n","type":"string"},"random":{"description":"Use random hash.\n","type":"boolean"}},"type":"object"},"elasticstack:index/FleetOutputKafkaHeader:FleetOutputKafkaHeader":{"properties":{"key":{"description":"Header key.\n","type":"string"},"value":{"description":"Header value.\n","type":"string"}},"required":["key","value"],"type":"object"},"elasticstack:index/FleetOutputKafkaRandom:FleetOutputKafkaRandom":{"properties":{"groupEvents":{"description":"Number of events to group.\n","type":"number"}},"type":"object"},"elasticstack:index/FleetOutputKafkaRoundRobin:FleetOutputKafkaRoundRobin":{"properties":{"groupEvents":{"description":"Number of events to group.\n","type":"number"}},"type":"object"},"elasticstack:index/FleetOutputKafkaSasl:FleetOutputKafkaSasl":{"properties":{"mechanism":{"description":"SASL mechanism.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetOutputKibanaConnection:FleetOutputKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetOutputSsl:FleetOutputSsl":{"properties":{"certificate":{"description":"Client SSL certificate.\n","type":"string"},"certificateAuthorities":{"description":"Server SSL certificate authorities.\n","items":{"type":"string"},"type":"array"},"key":{"description":"Client SSL certificate key.\n","secret":true,"type":"string"},"verificationMode":{"description":"The SSL verification mode. One of <span pulumi-lang-nodejs=\"`certificate`\" pulumi-lang-dotnet=\"`Certificate`\" pulumi-lang-go=\"`certificate`\" pulumi-lang-python=\"`certificate`\" pulumi-lang-yaml=\"`certificate`\" pulumi-lang-java=\"`certificate`\">`certificate`</span>, <span pulumi-lang-nodejs=\"`full`\" pulumi-lang-dotnet=\"`Full`\" pulumi-lang-go=\"`full`\" pulumi-lang-python=\"`full`\" pulumi-lang-yaml=\"`full`\" pulumi-lang-java=\"`full`\">`full`</span>, <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>, <span pulumi-lang-nodejs=\"`strict`\" pulumi-lang-dotnet=\"`Strict`\" pulumi-lang-go=\"`strict`\" pulumi-lang-python=\"`strict`\" pulumi-lang-yaml=\"`strict`\" pulumi-lang-java=\"`strict`\">`strict`</span>.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetProxyKibanaConnection:FleetProxyKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/FleetServerHostKibanaConnection:FleetServerHostKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaActionConnectorKibanaConnection:KibanaActionConnectorKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaAgentbuilderAgentKibanaConnection:KibanaAgentbuilderAgentKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaAgentbuilderSkillKibanaConnection:KibanaAgentbuilderSkillKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaAgentbuilderSkillReferencedContent:KibanaAgentbuilderSkillReferencedContent":{"properties":{"content":{"description":"Content of the reference.\n","type":"string"},"name":{"description":"Name of the referenced content.\n","type":"string"},"relativePath":{"description":"Relative path of the referenced content. Must start with `./` (e.g., `./runbooks/standard.md`). Sent to and received from the API as `relativePath`.\n","type":"string"}},"required":["content","name","relativePath"],"type":"object"},"elasticstack:index/KibanaAgentbuilderToolKibanaConnection:KibanaAgentbuilderToolKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaAgentbuilderWorkflowKibanaConnection:KibanaAgentbuilderWorkflowKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaAlertingRuleAction:KibanaAlertingRuleAction":{"language":{"nodejs":{"requiredOutputs":["group","id","params"]}},"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 <span 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`\">`notify_when`</span> or <span pulumi-lang-nodejs=\"`throttle`\" pulumi-lang-dotnet=\"`Throttle`\" pulumi-lang-go=\"`throttle`\" pulumi-lang-python=\"`throttle`\" pulumi-lang-yaml=\"`throttle`\" pulumi-lang-java=\"`throttle`\">`throttle`</span> are defined at the rule level.\n"},"group":{"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","type":"string"},"id":{"description":"The identifier for the connector saved object.\n","type":"string"},"params":{"description":"The parameters for the action, which are sent to the connector.\n","type":"string"}},"required":["id","params"],"type":"object"},"elasticstack:index/KibanaAlertingRuleActionAlertsFilter:KibanaAlertingRuleActionAlertsFilter":{"properties":{"kql":{"description":"Defines a query filter that determines whether the action runs. Written in Kibana Query Language (KQL).\n","type":"string"},"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":{"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","items":{"type":"number"},"type":"array"},"hoursEnd":{"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","type":"string"},"hoursStart":{"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","type":"string"},"timezone":{"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":"string"}},"type":"object"},"elasticstack:index/KibanaAlertingRuleActionFrequency:KibanaAlertingRuleActionFrequency":{"language":{"nodejs":{"requiredOutputs":["notifyWhen","summary"]}},"properties":{"notifyWhen":{"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","type":"string"},"summary":{"description":"Indicates whether the action is a summary.\n","type":"boolean"},"throttle":{"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 <span 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`\">`notify_when`</span> is `onThrottleInterval`.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaAlertingRuleFlapping:KibanaAlertingRuleFlapping":{"properties":{"enabled":{"description":"Whether the rule may enter the flapping state. When unset, the Kibana default applies. Supported only from Elastic Stack 9.3 onward.\n","type":"boolean"},"lookBackWindow":{"description":"Minimum number of rule runs in which the status change threshold must be met.\n","type":"number"},"statusChangeThreshold":{"description":"Minimum number of times an alert must switch between active and recovered within the look-back window.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaAlertingRuleKibanaConnection:KibanaAlertingRuleKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardAccessControl:KibanaDashboardAccessControl":{"properties":{"accessMode":{"description":"The access mode for the dashboard (e.g., 'write_restricted', 'default').\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardFilter:KibanaDashboardFilter":{"properties":{"filterJson":{"description":"One dashboard saved filter as normalized JSON. Must be a JSON object matching the Kibana dashboard filters union (for example <span pulumi-lang-nodejs=\"`operator`\" pulumi-lang-dotnet=\"`Operator`\" pulumi-lang-go=\"`operator`\" pulumi-lang-python=\"`operator`\" pulumi-lang-yaml=\"`operator`\" pulumi-lang-java=\"`operator`\">`operator`</span>-based filters, groups, DSL, or spatial shapes) described in the dashboards OpenAPI specification—same union as chart-level <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span>.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardKibanaConnection:KibanaDashboardKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardOptions:KibanaDashboardOptions":{"properties":{"autoApplyFilters":{"description":"When true, control filters are applied automatically.\n","type":"boolean"},"hidePanelBorders":{"description":"When true, panel borders are hidden in the dashboard layout.\n","type":"boolean"},"hidePanelTitles":{"description":"Hide the panel titles in the dashboard.\n","type":"boolean"},"syncColors":{"description":"Synchronize colors between related panels in the dashboard.\n","type":"boolean"},"syncCursor":{"description":"Synchronize cursor position between related panels in the dashboard.\n","type":"boolean"},"syncTooltips":{"description":"Synchronize tooltips between related panels in the dashboard.\n","type":"boolean"},"useMargins":{"description":"Show margins between panels in the dashboard layout.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanel:KibanaDashboardPanel":{"language":{"nodejs":{"requiredOutputs":["configJson","grid","id","type"]}},"properties":{"configJson":{"description":"The configuration of the panel as a JSON string. Practitioner-authored panel-level <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span> is valid only when <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> is <span pulumi-lang-nodejs=\"`markdown`\" pulumi-lang-dotnet=\"`Markdown`\" pulumi-lang-go=\"`markdown`\" pulumi-lang-python=\"`markdown`\" pulumi-lang-yaml=\"`markdown`\" pulumi-lang-java=\"`markdown`\">`markdown`</span> or <span pulumi-lang-nodejs=\"`vis`\" pulumi-lang-dotnet=\"`Vis`\" pulumi-lang-go=\"`vis`\" pulumi-lang-python=\"`vis`\" pulumi-lang-yaml=\"`vis`\" pulumi-lang-java=\"`vis`\">`vis`</span>. Typed panel kinds such as <span pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\">`image`</span>, <span pulumi-lang-nodejs=\"`sloAlerts`\" pulumi-lang-dotnet=\"`SloAlerts`\" pulumi-lang-go=\"`sloAlerts`\" pulumi-lang-python=\"`slo_alerts`\" pulumi-lang-yaml=\"`sloAlerts`\" pulumi-lang-java=\"`sloAlerts`\">`slo_alerts`</span>, and <span pulumi-lang-nodejs=\"`discoverSession`\" pulumi-lang-dotnet=\"`DiscoverSession`\" pulumi-lang-go=\"`discoverSession`\" pulumi-lang-python=\"`discover_session`\" pulumi-lang-yaml=\"`discoverSession`\" pulumi-lang-java=\"`discoverSession`\">`discover_session`</span> use their dedicated blocks (<span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>), not panel-level <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>. Mutually exclusive with <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n","type":"string"},"discoverSessionConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfig:KibanaDashboardPanelDiscoverSessionConfig","description":"Configuration for a <span pulumi-lang-nodejs=\"`discoverSession`\" pulumi-lang-dotnet=\"`DiscoverSession`\" pulumi-lang-go=\"`discoverSession`\" pulumi-lang-python=\"`discover_session`\" pulumi-lang-yaml=\"`discoverSession`\" pulumi-lang-java=\"`discoverSession`\">`discover_session`</span> panel (`kbn-dashboard-panel-type-discover_session`). Set exactly one of <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> or <span pulumi-lang-nodejs=\"`byReference`\" pulumi-lang-dotnet=\"`ByReference`\" pulumi-lang-go=\"`byReference`\" pulumi-lang-python=\"`by_reference`\" pulumi-lang-yaml=\"`byReference`\" pulumi-lang-java=\"`byReference`\">`by_reference`</span>. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>.\n"},"esqlControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelEsqlControlConfig:KibanaDashboardPanelEsqlControlConfig","description":"Configuration for an ES|QL control panel. Use this to manage ES|QL variable controls on a dashboard. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"grid":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelGrid:KibanaDashboardPanelGrid","description":"The grid coordinates and dimensions of the panel.\n"},"id":{"description":"The identifier of the panel (API <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span>).\n","type":"string"},"imageConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelImageConfig:KibanaDashboardPanelImageConfig","description":"Configuration for an <span pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\">`image`</span> panel (`kbn-dashboard-panel-type-image`). Required when <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> is <span pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\">`image`</span>. References the Kibana Dashboard API image embeddable <span pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\">`config`</span> shape. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"markdownConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelMarkdownConfig:KibanaDashboardPanelMarkdownConfig","description":"Configuration for a <span pulumi-lang-nodejs=\"`markdown`\" pulumi-lang-dotnet=\"`Markdown`\" pulumi-lang-go=\"`markdown`\" pulumi-lang-python=\"`markdown`\" pulumi-lang-yaml=\"`markdown`\" pulumi-lang-java=\"`markdown`\">`markdown`</span> panel (the Kibana Dashboard API `kbn-dashboard-panel-type-markdown` shape). Set exactly one of <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> (inline <span pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\">`content`</span> with required nested <span pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\">`settings`</span>) or <span pulumi-lang-nodejs=\"`byReference`\" pulumi-lang-dotnet=\"`ByReference`\" pulumi-lang-go=\"`byReference`\" pulumi-lang-python=\"`by_reference`\" pulumi-lang-yaml=\"`byReference`\" pulumi-lang-java=\"`byReference`\">`by_reference`</span> (existing library item via <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>). Presentation fields (<span pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\">`description`</span>, <span pulumi-lang-nodejs=\"`hideTitle`\" pulumi-lang-dotnet=\"`HideTitle`\" pulumi-lang-go=\"`hideTitle`\" pulumi-lang-python=\"`hide_title`\" pulumi-lang-yaml=\"`hideTitle`\" pulumi-lang-java=\"`hideTitle`\">`hide_title`</span>, <span pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\">`title`</span>, <span pulumi-lang-nodejs=\"`hideBorder`\" pulumi-lang-dotnet=\"`HideBorder`\" pulumi-lang-go=\"`hideBorder`\" pulumi-lang-python=\"`hide_border`\" pulumi-lang-yaml=\"`hideBorder`\" pulumi-lang-java=\"`hideBorder`\">`hide_border`</span>) are supported in both branches. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"optionsListControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelOptionsListControlConfig:KibanaDashboardPanelOptionsListControlConfig","description":"Configuration for an options list control panel. Provides a dropdown or multi-select filter based on a field in a data view. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"rangeSliderControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelRangeSliderControlConfig:KibanaDashboardPanelRangeSliderControlConfig","description":"Configuration for a range slider control panel. Provides a min/max range filter tied to a data view field. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"sloAlertsConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloAlertsConfig:KibanaDashboardPanelSloAlertsConfig","description":"Configuration for an <span pulumi-lang-nodejs=\"`sloAlerts`\" pulumi-lang-dotnet=\"`SloAlerts`\" pulumi-lang-go=\"`sloAlerts`\" pulumi-lang-python=\"`slo_alerts`\" pulumi-lang-yaml=\"`sloAlerts`\" pulumi-lang-java=\"`sloAlerts`\">`slo_alerts`</span> panel (`kbn-dashboard-panel-type-slo_alerts`). Required when <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> is <span pulumi-lang-nodejs=\"`sloAlerts`\" pulumi-lang-dotnet=\"`SloAlerts`\" pulumi-lang-go=\"`sloAlerts`\" pulumi-lang-python=\"`slo_alerts`\" pulumi-lang-yaml=\"`sloAlerts`\" pulumi-lang-java=\"`sloAlerts`\">`slo_alerts`</span>. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"sloBurnRateConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloBurnRateConfig:KibanaDashboardPanelSloBurnRateConfig","description":"Configuration for an SLO burn rate panel. Use this for panels that visualize the burn rate of an SLO over a configurable look-back window. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"sloErrorBudgetConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloErrorBudgetConfig:KibanaDashboardPanelSloErrorBudgetConfig","description":"Configuration for an SLO error budget panel. Displays the burn chart of remaining error budget for a specific SLO. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"sloOverviewConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloOverviewConfig:KibanaDashboardPanelSloOverviewConfig","description":"Configuration for an SLO overview panel. Use either <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span> (for a single SLO) or <span pulumi-lang-nodejs=\"`groups`\" pulumi-lang-dotnet=\"`Groups`\" pulumi-lang-go=\"`groups`\" pulumi-lang-python=\"`groups`\" pulumi-lang-yaml=\"`groups`\" pulumi-lang-java=\"`groups`\">`groups`</span> (for grouped SLO overview). Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"syntheticsMonitorsConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsMonitorsConfig:KibanaDashboardPanelSyntheticsMonitorsConfig","description":"Configuration for a Synthetics monitors panel. Displays a table of Elastic Synthetics monitors and their current status. All fields are optional — omit the block entirely for a bare panel with no filtering. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"syntheticsStatsOverviewConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsStatsOverviewConfig:KibanaDashboardPanelSyntheticsStatsOverviewConfig","description":"Configuration for a Synthetics stats overview panel. All fields are optional; an absent or empty block shows statistics for all monitors visible within the space. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"timeSliderControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelTimeSliderControlConfig:KibanaDashboardPanelTimeSliderControlConfig","description":"Configuration for a time slider control panel. Controls the visible time window within the dashboard's global time range. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"type":{"description":"The type of the panel (e.g. 'markdown', 'vis').\n","type":"string"},"visConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfig:KibanaDashboardPanelVisConfig","description":"Configuration for a <span pulumi-lang-nodejs=\"`vis`\" pulumi-lang-dotnet=\"`Vis`\" pulumi-lang-go=\"`vis`\" pulumi-lang-python=\"`vis`\" pulumi-lang-yaml=\"`vis`\" pulumi-lang-java=\"`vis`\">`vis`</span> panel (`type = \"vis\"`). Typed alternative to panel-level <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>: set exactly one of <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> (exactly one of 12 Lens chart kinds) or <span pulumi-lang-nodejs=\"`byReference`\" pulumi-lang-dotnet=\"`ByReference`\" pulumi-lang-go=\"`byReference`\" pulumi-lang-python=\"`by_reference`\" pulumi-lang-yaml=\"`byReference`\" pulumi-lang-java=\"`byReference`\">`by_reference`</span>. With <span pulumi-lang-nodejs=\"`byReference`\" pulumi-lang-dotnet=\"`ByReference`\" pulumi-lang-go=\"`byReference`\" pulumi-lang-python=\"`by_reference`\" pulumi-lang-yaml=\"`byReference`\" pulumi-lang-java=\"`byReference`\">`by_reference`</span>, use structured <span pulumi-lang-nodejs=\"`drilldowns`\" pulumi-lang-dotnet=\"`Drilldowns`\" pulumi-lang-go=\"`drilldowns`\" pulumi-lang-python=\"`drilldowns`\" pulumi-lang-yaml=\"`drilldowns`\" pulumi-lang-java=\"`drilldowns`\">`drilldowns`</span> and optional <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"}},"required":["grid","type"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfig:KibanaDashboardPanelDiscoverSessionConfig":{"properties":{"byReference":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByReference:KibanaDashboardPanelDiscoverSessionConfigByReference","description":"Reference an existing Discover session saved object via <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>. Client-side <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> JSON is not modeled in v1 (see change design). Omit <span pulumi-lang-nodejs=\"`selectedTabId`\" pulumi-lang-dotnet=\"`SelectedTabId`\" pulumi-lang-go=\"`selectedTabId`\" pulumi-lang-python=\"`selected_tab_id`\" pulumi-lang-yaml=\"`selectedTabId`\" pulumi-lang-java=\"`selectedTabId`\">`selected_tab_id`</span> to let Kibana pick the tab; after apply the resolved id is stored in state.\n"},"byValue":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValue:KibanaDashboardPanelDiscoverSessionConfigByValue"},"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Typed URL drilldowns for this panel. The API only supports <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span> with trigger <span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span>; those values are set automatically when writing to Kibana.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigDrilldown:KibanaDashboardPanelDiscoverSessionConfigDrilldown"},"type":"array"},"hideBorder":{"description":"When true, suppresses the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the panel title.\n","type":"boolean"},"title":{"description":"Optional panel title.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByReference:KibanaDashboardPanelDiscoverSessionConfigByReference":{"language":{"nodejs":{"requiredOutputs":["refId","selectedTabId"]}},"properties":{"overrides":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByReferenceOverrides:KibanaDashboardPanelDiscoverSessionConfigByReferenceOverrides","description":"Optional typed presentation overrides applied on top of the referenced session.\n"},"refId":{"description":"Discover session saved object reference id (<span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span> in the API).\n","type":"string"},"selectedTabId":{"description":"Tab id within the referenced Discover session. Omit to let Kibana choose; after apply the API value is reflected here.\n","type":"string"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByReferenceTimeRange:KibanaDashboardPanelDiscoverSessionConfigByReferenceTimeRange","description":"Optional time range for this panel. When omitted, the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> is sent to the API at write time while this attribute stays null in state (REQ-009).\n"}},"required":["refId"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByReferenceOverrides:KibanaDashboardPanelDiscoverSessionConfigByReferenceOverrides":{"properties":{"columnOrders":{"description":"Overrides column order relative to the referenced Discover session.\n","items":{"type":"string"},"type":"array"},"columnSettings":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByReferenceOverridesColumnSettings:KibanaDashboardPanelDiscoverSessionConfigByReferenceOverridesColumnSettings"},"description":"Per-column presentation settings keyed by field name (for example column widths).\n","type":"object"},"density":{"description":"Overrides data grid density.\n","type":"string"},"headerRowHeight":{"description":"Overrides header row height: numbers \"1\"–\"5\" or \"auto\".\n","type":"string"},"rowHeight":{"description":"Overrides data row height: numbers \"1\"–\"20\" or \"auto\".\n","type":"string"},"rowsPerPage":{"description":"Overrides rows per page.\n","type":"number"},"sampleSize":{"description":"Overrides sample size.\n","type":"number"},"sorts":{"description":"Overrides sort configuration relative to the referenced Discover session.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByReferenceOverridesSort:KibanaDashboardPanelDiscoverSessionConfigByReferenceOverridesSort"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByReferenceOverridesColumnSettings:KibanaDashboardPanelDiscoverSessionConfigByReferenceOverridesColumnSettings":{"properties":{"width":{"description":"Optional column width in pixels.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByReferenceOverridesSort:KibanaDashboardPanelDiscoverSessionConfigByReferenceOverridesSort":{"properties":{"direction":{"description":"Sort direction.\n","type":"string"},"name":{"description":"Field name to sort by.\n","type":"string"}},"required":["direction","name"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByReferenceTimeRange:KibanaDashboardPanelDiscoverSessionConfigByReferenceTimeRange":{"properties":{"from":{"description":"Start of the time range (e.g., 'now-15m', '2023-01-01T00:00:00Z').\n","type":"string"},"mode":{"description":"Optional time range mode. When set, must be <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>.\n","type":"string"},"to":{"description":"End of the time range (e.g., 'now', '2023-12-31T23:59:59Z').\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValue:KibanaDashboardPanelDiscoverSessionConfigByValue":{"properties":{"tab":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTab:KibanaDashboardPanelDiscoverSessionConfigByValueTab","description":"Single Discover tab configuration (the API currently allows one tab). Exactly one of <span pulumi-lang-nodejs=\"`dsl`\" pulumi-lang-dotnet=\"`Dsl`\" pulumi-lang-go=\"`dsl`\" pulumi-lang-python=\"`dsl`\" pulumi-lang-yaml=\"`dsl`\" pulumi-lang-java=\"`dsl`\">`dsl`</span> or <span pulumi-lang-nodejs=\"`esql`\" pulumi-lang-dotnet=\"`Esql`\" pulumi-lang-go=\"`esql`\" pulumi-lang-python=\"`esql`\" pulumi-lang-yaml=\"`esql`\" pulumi-lang-java=\"`esql`\">`esql`</span> must be set.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTimeRange:KibanaDashboardPanelDiscoverSessionConfigByValueTimeRange","description":"Optional time range for this panel. When omitted, the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> is sent to the API at write time while this attribute stays null in state (REQ-009).\n"}},"required":["tab"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTab:KibanaDashboardPanelDiscoverSessionConfigByValueTab":{"properties":{"dsl":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTabDsl:KibanaDashboardPanelDiscoverSessionConfigByValueTabDsl","description":"DSL / data view Discover tab.\n"},"esql":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTabEsql:KibanaDashboardPanelDiscoverSessionConfigByValueTabEsql","description":"ES|QL Discover tab.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTabDsl:KibanaDashboardPanelDiscoverSessionConfigByValueTabDsl":{"properties":{"columnOrders":{"description":"Ordered list of field names shown in the Discover grid.\n","items":{"type":"string"},"type":"array"},"columnSettings":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTabDslColumnSettings:KibanaDashboardPanelDiscoverSessionConfigByValueTabDslColumnSettings"},"description":"Per-column presentation settings keyed by field name (for example column widths).\n","type":"object"},"dataSourceJson":{"description":"Normalized JSON for the tab <span pulumi-lang-nodejs=\"`dataSource`\" pulumi-lang-dotnet=\"`DataSource`\" pulumi-lang-go=\"`dataSource`\" pulumi-lang-python=\"`data_source`\" pulumi-lang-yaml=\"`dataSource`\" pulumi-lang-java=\"`dataSource`\">`data_source`</span> field. Author an object that matches the **Kibana Dashboard API** schema for `kbn-dashboard-panel-type-discover_session` tabs: for `tab.dsl`, the polymorphic DSL data-source union (<span pulumi-lang-nodejs=\"`dataViewReference`\" pulumi-lang-dotnet=\"`DataViewReference`\" pulumi-lang-go=\"`dataViewReference`\" pulumi-lang-python=\"`data_view_reference`\" pulumi-lang-yaml=\"`dataViewReference`\" pulumi-lang-java=\"`dataViewReference`\">`data_view_reference`</span>, <span pulumi-lang-nodejs=\"`dataViewSpec`\" pulumi-lang-dotnet=\"`DataViewSpec`\" pulumi-lang-go=\"`dataViewSpec`\" pulumi-lang-python=\"`data_view_spec`\" pulumi-lang-yaml=\"`dataViewSpec`\" pulumi-lang-java=\"`dataViewSpec`\">`data_view_spec`</span>, etc. — see the OpenAPI bundled with the [Kibana REST API reference](https://www.elastic.co/docs/api/doc/kibana)); for `tab.esql`, use the ES|QL data-source shape (`type = \"esql\"` plus query and related fields).\n","type":"string"},"density":{"description":"Data grid density.\n","type":"string"},"filters":{"description":"Dashboard-level saved filter pills (`kbn-dashboard-data.filters` in the Kibana Dashboard API). Each element is one filter in display order. The JSON shape for each <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> matches the dashboard filters discriminated union (including DSL and spatial variants), consistent with per-panel <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> on Lens chart blocks.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTabDslFilter:KibanaDashboardPanelDiscoverSessionConfigByValueTabDslFilter"},"type":"array"},"headerRowHeight":{"description":"Header row height: numbers \"1\"–\"5\" (as decimal strings) or \"auto\".\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTabDslQuery:KibanaDashboardPanelDiscoverSessionConfigByValueTabDslQuery","description":"Dashboard-level query. Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\">`query`</span> object: <span pulumi-lang-nodejs=\"`language`\" pulumi-lang-dotnet=\"`Language`\" pulumi-lang-go=\"`language`\" pulumi-lang-python=\"`language`\" pulumi-lang-yaml=\"`language`\" pulumi-lang-java=\"`language`\">`language`</span> plus exactly one of <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span> (string branch) or <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span> (object branch).\n"},"rowHeight":{"description":"Data row height: numbers \"1\"–\"20\" (as decimal strings) or \"auto\".\n","type":"string"},"rowsPerPage":{"description":"Rows per page in the Discover grid.\n","type":"number"},"sampleSize":{"description":"Sample size (documents) for the Discover grid.\n","type":"number"},"sorts":{"description":"Sort configuration for the Discover grid.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTabDslSort:KibanaDashboardPanelDiscoverSessionConfigByValueTabDslSort"},"type":"array"},"viewMode":{"description":"Discover view mode for the DSL tab: <span pulumi-lang-nodejs=\"`documents`\" pulumi-lang-dotnet=\"`Documents`\" pulumi-lang-go=\"`documents`\" pulumi-lang-python=\"`documents`\" pulumi-lang-yaml=\"`documents`\" pulumi-lang-java=\"`documents`\">`documents`</span> (hits), <span pulumi-lang-nodejs=\"`patterns`\" pulumi-lang-dotnet=\"`Patterns`\" pulumi-lang-go=\"`patterns`\" pulumi-lang-python=\"`patterns`\" pulumi-lang-yaml=\"`patterns`\" pulumi-lang-java=\"`patterns`\">`patterns`</span>, or <span pulumi-lang-nodejs=\"`aggregated`\" pulumi-lang-dotnet=\"`Aggregated`\" pulumi-lang-go=\"`aggregated`\" pulumi-lang-python=\"`aggregated`\" pulumi-lang-yaml=\"`aggregated`\" pulumi-lang-java=\"`aggregated`\">`aggregated`</span> (field statistics). Matches the Kibana Dashboard API enum values.\n","type":"string"}},"required":["dataSourceJson","query"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTabDslColumnSettings:KibanaDashboardPanelDiscoverSessionConfigByValueTabDslColumnSettings":{"properties":{"width":{"description":"Optional column width in pixels.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTabDslFilter:KibanaDashboardPanelDiscoverSessionConfigByValueTabDslFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTabDslQuery:KibanaDashboardPanelDiscoverSessionConfigByValueTabDslQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTabDslSort:KibanaDashboardPanelDiscoverSessionConfigByValueTabDslSort":{"properties":{"direction":{"description":"Sort direction.\n","type":"string"},"name":{"description":"Field name to sort by.\n","type":"string"}},"required":["direction","name"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTabEsql:KibanaDashboardPanelDiscoverSessionConfigByValueTabEsql":{"properties":{"columnOrders":{"description":"Ordered list of field names shown in the Discover grid.\n","items":{"type":"string"},"type":"array"},"columnSettings":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTabEsqlColumnSettings:KibanaDashboardPanelDiscoverSessionConfigByValueTabEsqlColumnSettings"},"description":"Per-column presentation settings keyed by field name (for example column widths).\n","type":"object"},"dataSourceJson":{"description":"Normalized JSON for the tab <span pulumi-lang-nodejs=\"`dataSource`\" pulumi-lang-dotnet=\"`DataSource`\" pulumi-lang-go=\"`dataSource`\" pulumi-lang-python=\"`data_source`\" pulumi-lang-yaml=\"`dataSource`\" pulumi-lang-java=\"`dataSource`\">`data_source`</span> field. Author an object that matches the **Kibana Dashboard API** schema for `kbn-dashboard-panel-type-discover_session` tabs: for `tab.dsl`, the polymorphic DSL data-source union (<span pulumi-lang-nodejs=\"`dataViewReference`\" pulumi-lang-dotnet=\"`DataViewReference`\" pulumi-lang-go=\"`dataViewReference`\" pulumi-lang-python=\"`data_view_reference`\" pulumi-lang-yaml=\"`dataViewReference`\" pulumi-lang-java=\"`dataViewReference`\">`data_view_reference`</span>, <span pulumi-lang-nodejs=\"`dataViewSpec`\" pulumi-lang-dotnet=\"`DataViewSpec`\" pulumi-lang-go=\"`dataViewSpec`\" pulumi-lang-python=\"`data_view_spec`\" pulumi-lang-yaml=\"`dataViewSpec`\" pulumi-lang-java=\"`dataViewSpec`\">`data_view_spec`</span>, etc. — see the OpenAPI bundled with the [Kibana REST API reference](https://www.elastic.co/docs/api/doc/kibana)); for `tab.esql`, use the ES|QL data-source shape (`type = \"esql\"` plus query and related fields).\n","type":"string"},"density":{"description":"Data grid density.\n","type":"string"},"headerRowHeight":{"description":"Header row height: numbers \"1\"–\"5\" (as decimal strings) or \"auto\".\n","type":"string"},"rowHeight":{"description":"Data row height: numbers \"1\"–\"20\" (as decimal strings) or \"auto\".\n","type":"string"},"sorts":{"description":"Sort configuration for the Discover grid.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelDiscoverSessionConfigByValueTabEsqlSort:KibanaDashboardPanelDiscoverSessionConfigByValueTabEsqlSort"},"type":"array"}},"required":["dataSourceJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTabEsqlColumnSettings:KibanaDashboardPanelDiscoverSessionConfigByValueTabEsqlColumnSettings":{"properties":{"width":{"description":"Optional column width in pixels.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTabEsqlSort:KibanaDashboardPanelDiscoverSessionConfigByValueTabEsqlSort":{"properties":{"direction":{"description":"Sort direction.\n","type":"string"},"name":{"description":"Field name to sort by.\n","type":"string"}},"required":["direction","name"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigByValueTimeRange:KibanaDashboardPanelDiscoverSessionConfigByValueTimeRange":{"properties":{"from":{"description":"Start of the time range (e.g., 'now-15m', '2023-01-01T00:00:00Z').\n","type":"string"},"mode":{"description":"Optional time range mode. When set, must be <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>.\n","type":"string"},"to":{"description":"End of the time range (e.g., 'now', '2023-12-31T23:59:59Z').\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelDiscoverSessionConfigDrilldown:KibanaDashboardPanelDiscoverSessionConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded.\n","type":"boolean"},"label":{"description":"The display label for the drilldown link.\n","type":"string"},"openInNewTab":{"description":"When true, the drilldown URL opens in a new browser tab.\n","type":"boolean"},"url":{"description":"The URL template for the drilldown. Variables are documented at https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelEsqlControlConfig:KibanaDashboardPanelEsqlControlConfig":{"properties":{"availableOptions":{"description":"Pre-populated list of available options shown before the query executes.\n","items":{"type":"string"},"type":"array"},"controlType":{"description":"The control type. Allowed values: `STATIC_VALUES`, `VALUES_FROM_QUERY`.\n","type":"string"},"displaySettings":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelEsqlControlConfigDisplaySettings:KibanaDashboardPanelEsqlControlConfigDisplaySettings","description":"Display configuration for the control widget.\n"},"esqlQuery":{"description":"The ES|QL query used to populate the control's options.\n","type":"string"},"selectedOptions":{"description":"List of currently selected option values for the control.\n","items":{"type":"string"},"type":"array"},"singleSelect":{"description":"When true, restricts the control to single-value selection.\n","type":"boolean"},"title":{"description":"A human-readable title displayed above the control widget.\n","type":"string"},"variableName":{"description":"The ES|QL variable name that this control binds to.\n","type":"string"},"variableType":{"description":"The type of ES|QL variable. Allowed values: <span pulumi-lang-nodejs=\"`fields`\" pulumi-lang-dotnet=\"`Fields`\" pulumi-lang-go=\"`fields`\" pulumi-lang-python=\"`fields`\" pulumi-lang-yaml=\"`fields`\" pulumi-lang-java=\"`fields`\">`fields`</span>, <span pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\">`values`</span>, <span pulumi-lang-nodejs=\"`functions`\" pulumi-lang-dotnet=\"`Functions`\" pulumi-lang-go=\"`functions`\" pulumi-lang-python=\"`functions`\" pulumi-lang-yaml=\"`functions`\" pulumi-lang-java=\"`functions`\">`functions`</span>, <span pulumi-lang-nodejs=\"`timeLiteral`\" pulumi-lang-dotnet=\"`TimeLiteral`\" pulumi-lang-go=\"`timeLiteral`\" pulumi-lang-python=\"`time_literal`\" pulumi-lang-yaml=\"`timeLiteral`\" pulumi-lang-java=\"`timeLiteral`\">`time_literal`</span>, <span pulumi-lang-nodejs=\"`multiValues`\" pulumi-lang-dotnet=\"`MultiValues`\" pulumi-lang-go=\"`multiValues`\" pulumi-lang-python=\"`multi_values`\" pulumi-lang-yaml=\"`multiValues`\" pulumi-lang-java=\"`multiValues`\">`multi_values`</span>.\n","type":"string"}},"required":["controlType","esqlQuery","selectedOptions","variableName","variableType"],"type":"object"},"elasticstack:index/KibanaDashboardPanelEsqlControlConfigDisplaySettings:KibanaDashboardPanelEsqlControlConfigDisplaySettings":{"properties":{"hideActionBar":{"description":"Whether to hide the action bar on the control.\n","type":"boolean"},"hideExclude":{"description":"Whether to hide the exclude option.\n","type":"boolean"},"hideExists":{"description":"Whether to hide the exists filter option.\n","type":"boolean"},"hideSort":{"description":"Whether to hide the sort option.\n","type":"boolean"},"placeholder":{"description":"Placeholder text shown when no option is selected.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelGrid:KibanaDashboardPanelGrid":{"properties":{"h":{"description":"The height.\n","type":"number"},"w":{"description":"The width.\n","type":"number"},"x":{"description":"The X coordinate.\n","type":"number"},"y":{"description":"The Y coordinate.\n","type":"number"}},"required":["x","y"],"type":"object"},"elasticstack:index/KibanaDashboardPanelImageConfig:KibanaDashboardPanelImageConfig":{"properties":{"altText":{"description":"Accessible alternate text for the image.\n","type":"string"},"backgroundColor":{"description":"Background color behind the image (CSS color string).\n","type":"string"},"description":{"description":"A short description of the dashboard.\n","type":"string"},"drilldowns":{"description":"Optional drilldown actions for the image panel (max 100 entries). Each element sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span> or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>, matching the Kibana `kbn-dashboard-panel-type-image` `config.drilldowns` discriminated union.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelImageConfigDrilldown:KibanaDashboardPanelImageConfigDrilldown"},"type":"array"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"objectFit":{"type":"string"},"src":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelImageConfigSrc:KibanaDashboardPanelImageConfigSrc","description":"Image source for the panel. Set exactly one nested branch: <span pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\">`file`</span> (uploaded Kibana file id) or <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span> (external image URL). Matches the Kibana Dashboard API `kbn-dashboard-panel-type-image` `config.image_config.src` union.\n"},"title":{"description":"A human-readable title for the dashboard.\n","type":"string"}},"required":["src"],"type":"object"},"elasticstack:index/KibanaDashboardPanelImageConfigDrilldown:KibanaDashboardPanelImageConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelImageConfigDrilldownDashboardDrilldown:KibanaDashboardPanelImageConfigDrilldownDashboardDrilldown","description":"Open another dashboard when the image is clicked. Mutually exclusive with <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span> in the same entry.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelImageConfigDrilldownUrlDrilldown:KibanaDashboardPanelImageConfigDrilldownUrlDrilldown","description":"URL drilldown entry. Mutually exclusive with <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span> in the same list element.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelImageConfigDrilldownDashboardDrilldown:KibanaDashboardPanelImageConfigDrilldownDashboardDrilldown":{"properties":{"dashboardId":{"description":"Target dashboard saved object id.\n","type":"string"},"label":{"description":"Label shown for this drilldown.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab. Omit for API default (typically <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n","type":"boolean"},"trigger":{"description":"Dashboard drilldowns on image panels only support <span pulumi-lang-nodejs=\"`onClickImage`\" pulumi-lang-dotnet=\"`OnClickImage`\" pulumi-lang-go=\"`onClickImage`\" pulumi-lang-python=\"`on_click_image`\" pulumi-lang-yaml=\"`onClickImage`\" pulumi-lang-java=\"`onClickImage`\">`on_click_image`</span> (see Kibana `kbn-dashboard-panel-type-image` drilldown schema).\n","type":"string"},"useFilters":{"description":"When true, passes the current dashboard filters to the opened dashboard. Omit for API default (typically <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n","type":"boolean"},"useTimeRange":{"description":"When true, passes the current time range to the opened dashboard. Omit for API default (typically <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n","type":"boolean"}},"required":["dashboardId","label","trigger"],"type":"object"},"elasticstack:index/KibanaDashboardPanelImageConfigDrilldownUrlDrilldown:KibanaDashboardPanelImageConfigDrilldownUrlDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded. Omit to use the API default; unset stays null when the API echoes the default (REQ-009).\n","type":"boolean"},"label":{"description":"Display label shown in the drilldown menu.\n","type":"string"},"openInNewTab":{"description":"When true, opens in a new browser tab. Omit to use the API default; unset stays null when the API echoes the default (REQ-009).\n","type":"boolean"},"trigger":{"description":"When this drilldown runs. Allowed values: <span pulumi-lang-nodejs=\"`onClickImage`\" pulumi-lang-dotnet=\"`OnClickImage`\" pulumi-lang-go=\"`onClickImage`\" pulumi-lang-python=\"`on_click_image`\" pulumi-lang-yaml=\"`onClickImage`\" pulumi-lang-java=\"`onClickImage`\">`on_click_image`</span>, <span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span> (Kibana image panel URL drilldown triggers).\n","type":"string"},"url":{"description":"Templated URL for the drilldown. Variables are documented in the [Kibana drilldown URL template variables](https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable) section of the Elastic docs.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelImageConfigSrc:KibanaDashboardPanelImageConfigSrc":{"properties":{"file":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelImageConfigSrcFile:KibanaDashboardPanelImageConfigSrcFile","description":"Use an uploaded file as the image source. Mutually exclusive with <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span> inside <span pulumi-lang-nodejs=\"`src`\" pulumi-lang-dotnet=\"`Src`\" pulumi-lang-go=\"`src`\" pulumi-lang-python=\"`src`\" pulumi-lang-yaml=\"`src`\" pulumi-lang-java=\"`src`\">`src`</span>.\n"},"url":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelImageConfigSrcUrl:KibanaDashboardPanelImageConfigSrcUrl","description":"Use an external URL as the image source. Mutually exclusive with <span pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\">`file`</span> inside <span pulumi-lang-nodejs=\"`src`\" pulumi-lang-dotnet=\"`Src`\" pulumi-lang-go=\"`src`\" pulumi-lang-python=\"`src`\" pulumi-lang-yaml=\"`src`\" pulumi-lang-java=\"`src`\">`src`</span>.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelImageConfigSrcFile:KibanaDashboardPanelImageConfigSrcFile":{"properties":{"fileId":{"description":"Kibana file identifier for the uploaded image.\n","type":"string"}},"required":["fileId"],"type":"object"},"elasticstack:index/KibanaDashboardPanelImageConfigSrcUrl:KibanaDashboardPanelImageConfigSrcUrl":{"properties":{"url":{"description":"HTTPS or HTTP URL of the image.\n","type":"string"}},"required":["url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelMarkdownConfig:KibanaDashboardPanelMarkdownConfig":{"properties":{"byReference":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelMarkdownConfigByReference:KibanaDashboardPanelMarkdownConfigByReference","description":"Reference an existing markdown library item via <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>. Optional <span pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\">`description`</span>, <span pulumi-lang-nodejs=\"`hideTitle`\" pulumi-lang-dotnet=\"`HideTitle`\" pulumi-lang-go=\"`hideTitle`\" pulumi-lang-python=\"`hide_title`\" pulumi-lang-yaml=\"`hideTitle`\" pulumi-lang-java=\"`hideTitle`\">`hide_title`</span>, <span pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\">`title`</span>, and <span pulumi-lang-nodejs=\"`hideBorder`\" pulumi-lang-dotnet=\"`HideBorder`\" pulumi-lang-go=\"`hideBorder`\" pulumi-lang-python=\"`hide_border`\" pulumi-lang-yaml=\"`hideBorder`\" pulumi-lang-java=\"`hideBorder`\">`hide_border`</span>.\n"},"byValue":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelMarkdownConfigByValue:KibanaDashboardPanelMarkdownConfigByValue","description":"Inline markdown: required <span pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\">`content`</span> and nested <span pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\">`settings`</span> (API <span pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\">`settings`</span> object). Optional <span pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\">`description`</span>, <span pulumi-lang-nodejs=\"`hideTitle`\" pulumi-lang-dotnet=\"`HideTitle`\" pulumi-lang-go=\"`hideTitle`\" pulumi-lang-python=\"`hide_title`\" pulumi-lang-yaml=\"`hideTitle`\" pulumi-lang-java=\"`hideTitle`\">`hide_title`</span>, <span pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\">`title`</span>, and <span pulumi-lang-nodejs=\"`hideBorder`\" pulumi-lang-dotnet=\"`HideBorder`\" pulumi-lang-go=\"`hideBorder`\" pulumi-lang-python=\"`hide_border`\" pulumi-lang-yaml=\"`hideBorder`\" pulumi-lang-java=\"`hideBorder`\">`hide_border`</span>.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelMarkdownConfigByReference:KibanaDashboardPanelMarkdownConfigByReference":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"refId":{"description":"Unique identifier of the markdown library item (API <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>). The provider does not verify the item exists at plan time.\n","type":"string"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["refId"],"type":"object"},"elasticstack:index/KibanaDashboardPanelMarkdownConfigByValue:KibanaDashboardPanelMarkdownConfigByValue":{"properties":{"content":{"description":"Markdown source for the panel body (API <span pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\">`content`</span>).\n","type":"string"},"description":{"description":"Optional panel description.\n","type":"string"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"settings":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelMarkdownConfigByValueSettings:KibanaDashboardPanelMarkdownConfigByValueSettings","description":"Required settings object for by-value markdown. <span pulumi-lang-nodejs=\"`openLinksInNewTab`\" pulumi-lang-dotnet=\"`OpenLinksInNewTab`\" pulumi-lang-go=\"`openLinksInNewTab`\" pulumi-lang-python=\"`open_links_in_new_tab`\" pulumi-lang-yaml=\"`openLinksInNewTab`\" pulumi-lang-java=\"`openLinksInNewTab`\">`open_links_in_new_tab`</span> is optional; when unset, Kibana applies its default (<span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>).\n"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["content","settings"],"type":"object"},"elasticstack:index/KibanaDashboardPanelMarkdownConfigByValueSettings:KibanaDashboardPanelMarkdownConfigByValueSettings":{"properties":{"openLinksInNewTab":{"description":"When true, links in the markdown open in a new tab. When omitted, Kibana defaults to true.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelOptionsListControlConfig:KibanaDashboardPanelOptionsListControlConfig":{"properties":{"dataViewId":{"description":"The ID of the data view that the control is tied to.\n","type":"string"},"displaySettings":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelOptionsListControlConfigDisplaySettings:KibanaDashboardPanelOptionsListControlConfigDisplaySettings","description":"Display preferences for the control widget.\n"},"exclude":{"description":"When true, selected options are used as an exclusion filter rather than an inclusion filter.\n","type":"boolean"},"existsSelected":{"description":"When true, the control filters for documents where the field exists.\n","type":"boolean"},"fieldName":{"description":"The name of the field in the data view that the control is tied to.\n","type":"string"},"ignoreValidations":{"description":"Whether the control skips field-level validation against the data view.\n","type":"boolean"},"runPastTimeout":{"description":"When true, the control continues to show results even when the underlying query times out.\n","type":"boolean"},"searchTechnique":{"description":"The technique used to match suggestions. Must be one of <span pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\">`prefix`</span>, <span pulumi-lang-nodejs=\"`wildcard`\" pulumi-lang-dotnet=\"`Wildcard`\" pulumi-lang-go=\"`wildcard`\" pulumi-lang-python=\"`wildcard`\" pulumi-lang-yaml=\"`wildcard`\" pulumi-lang-java=\"`wildcard`\">`wildcard`</span>, or <span pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\">`exact`</span> when set.\n","type":"string"},"selectedOptions":{"description":"The initially or persistently selected option values. All values are represented as strings.\n","items":{"type":"string"},"type":"array"},"singleSelect":{"description":"When true, only one option may be selected at a time.\n","type":"boolean"},"sort":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelOptionsListControlConfigSort:KibanaDashboardPanelOptionsListControlConfigSort","description":"Default sort configuration for the suggestion list.\n"},"title":{"description":"Human-readable label displayed above the control.\n","type":"string"},"useGlobalFilters":{"description":"Whether the control applies the dashboard's global filters to its own query.\n","type":"boolean"}},"required":["dataViewId","fieldName"],"type":"object"},"elasticstack:index/KibanaDashboardPanelOptionsListControlConfigDisplaySettings:KibanaDashboardPanelOptionsListControlConfigDisplaySettings":{"properties":{"hideActionBar":{"description":"When true, hides the action bar on the control.\n","type":"boolean"},"hideExclude":{"description":"When true, hides the exclude toggle.\n","type":"boolean"},"hideExists":{"description":"When true, hides the exists filter option.\n","type":"boolean"},"hideSort":{"description":"When true, hides the sort control.\n","type":"boolean"},"placeholder":{"description":"Placeholder text shown when no option is selected.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelOptionsListControlConfigSort:KibanaDashboardPanelOptionsListControlConfigSort":{"properties":{"by":{"description":"The field or criterion to sort by. Must be one of `_count` or `_key`.\n","type":"string"},"direction":{"description":"The sort direction. Must be one of <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span> or <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.\n","type":"string"}},"required":["by","direction"],"type":"object"},"elasticstack:index/KibanaDashboardPanelRangeSliderControlConfig:KibanaDashboardPanelRangeSliderControlConfig":{"properties":{"dataViewId":{"description":"The ID of the data view that the control is tied to.\n","type":"string"},"fieldName":{"description":"The name of the field in the data view that the control is tied to.\n","type":"string"},"ignoreValidations":{"description":"Whether to suppress validation errors during intermediate states.\n","type":"boolean"},"step":{"description":"The step size for the range slider. Stored as float32 to match the Kibana API type and avoid refresh drift.\n","type":"number"},"title":{"description":"A human-readable title for the control.\n","type":"string"},"useGlobalFilters":{"description":"Whether the control respects dashboard-level filters.\n","type":"boolean"},"values":{"description":"Initial range as a list of exactly 2 strings: [min, max].\n","items":{"type":"string"},"type":"array"}},"required":["dataViewId","fieldName"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloAlertsConfig:KibanaDashboardPanelSloAlertsConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Optional URL drilldown links (at most 100). The embeddable fixes <span pulumi-lang-nodejs=\"`trigger`\" pulumi-lang-dotnet=\"`Trigger`\" pulumi-lang-go=\"`trigger`\" pulumi-lang-python=\"`trigger`\" pulumi-lang-yaml=\"`trigger`\" pulumi-lang-java=\"`trigger`\">`trigger`</span> to <span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span> and <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> to <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span> when writing to the Kibana API.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloAlertsConfigDrilldown:KibanaDashboardPanelSloAlertsConfigDrilldown"},"type":"array"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"slos":{"description":"SLO entries whose alerts this panel displays (at least one, at most 100). Each entry references an SLO by <span pulumi-lang-nodejs=\"`sloId`\" pulumi-lang-dotnet=\"`SloId`\" pulumi-lang-go=\"`sloId`\" pulumi-lang-python=\"`slo_id`\" pulumi-lang-yaml=\"`sloId`\" pulumi-lang-java=\"`sloId`\">`slo_id`</span>; set <span pulumi-lang-nodejs=\"`sloInstanceId`\" pulumi-lang-dotnet=\"`SloInstanceId`\" pulumi-lang-go=\"`sloInstanceId`\" pulumi-lang-python=\"`slo_instance_id`\" pulumi-lang-yaml=\"`sloInstanceId`\" pulumi-lang-java=\"`sloInstanceId`\">`slo_instance_id`</span> only when the SLO is grouped and you need a specific instance.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloAlertsConfigSlo:KibanaDashboardPanelSloAlertsConfigSlo"},"type":"array"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["slos"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloAlertsConfigDrilldown:KibanaDashboardPanelSloAlertsConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded. Omit to use the API default.\n","type":"boolean"},"label":{"description":"Display label shown in the drilldown menu.\n","type":"string"},"openInNewTab":{"description":"When true, the URL opens in a new browser tab. Omit to use the API default.\n","type":"boolean"},"url":{"description":"Templated URL for the drilldown.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloAlertsConfigSlo:KibanaDashboardPanelSloAlertsConfigSlo":{"properties":{"sloId":{"description":"Identifier of the SLO to include.\n","type":"string"},"sloInstanceId":{"description":"SLO instance ID when the SLO uses grouping. Omit for all instances (API default `\"*\"`). Unset values stay null when the API echoes that default (REQ-009).\n","type":"string"}},"required":["sloId"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloBurnRateConfig:KibanaDashboardPanelSloBurnRateConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Optional list of URL drilldowns attached to the panel.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloBurnRateConfigDrilldown:KibanaDashboardPanelSloBurnRateConfigDrilldown"},"type":"array"},"duration":{"description":"Duration for the burn rate chart in the format `[value][unit]`, where unit is <span pulumi-lang-nodejs=\"`m`\" pulumi-lang-dotnet=\"`M`\" pulumi-lang-go=\"`m`\" pulumi-lang-python=\"`m`\" pulumi-lang-yaml=\"`m`\" pulumi-lang-java=\"`m`\">`m`</span> (minutes), <span pulumi-lang-nodejs=\"`h`\" pulumi-lang-dotnet=\"`H`\" pulumi-lang-go=\"`h`\" pulumi-lang-python=\"`h`\" pulumi-lang-yaml=\"`h`\" pulumi-lang-java=\"`h`\">`h`</span> (hours), or <span pulumi-lang-nodejs=\"`d`\" pulumi-lang-dotnet=\"`D`\" pulumi-lang-go=\"`d`\" pulumi-lang-python=\"`d`\" pulumi-lang-yaml=\"`d`\" pulumi-lang-java=\"`d`\">`d`</span> (days). For example: <span pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\">`5m`</span>, <span pulumi-lang-nodejs=\"`3h`\" pulumi-lang-dotnet=\"`3h`\" pulumi-lang-go=\"`3h`\" pulumi-lang-python=\"`3h`\" pulumi-lang-yaml=\"`3h`\" pulumi-lang-java=\"`3h`\">`3h`</span>, <span pulumi-lang-nodejs=\"`6d`\" pulumi-lang-dotnet=\"`6d`\" pulumi-lang-go=\"`6d`\" pulumi-lang-python=\"`6d`\" pulumi-lang-yaml=\"`6d`\" pulumi-lang-java=\"`6d`\">`6d`</span>.\n","type":"string"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"sloId":{"description":"The ID of the SLO to display the burn rate for.\n","type":"string"},"sloInstanceId":{"description":"ID of the SLO instance. Set when the SLO uses <span pulumi-lang-nodejs=\"`groupBy`\" pulumi-lang-dotnet=\"`GroupBy`\" pulumi-lang-go=\"`groupBy`\" pulumi-lang-python=\"`group_by`\" pulumi-lang-yaml=\"`groupBy`\" pulumi-lang-java=\"`groupBy`\">`group_by`</span>; identifies which instance to show. Omit to show all instances (API default `\"*\"`).\n","type":"string"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["duration","sloId"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloBurnRateConfigDrilldown:KibanaDashboardPanelSloBurnRateConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded. Omit to use the API default.\n","type":"boolean"},"label":{"description":"Display label shown in the drilldown menu.\n","type":"string"},"openInNewTab":{"description":"When true, the URL opens in a new browser tab. Omit to use the API default.\n","type":"boolean"},"url":{"description":"Templated URL for the drilldown.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloErrorBudgetConfig:KibanaDashboardPanelSloErrorBudgetConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"URL drilldowns to configure on the panel.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloErrorBudgetConfigDrilldown:KibanaDashboardPanelSloErrorBudgetConfigDrilldown"},"type":"array"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"sloId":{"description":"The ID of the SLO to display the error budget for.\n","type":"string"},"sloInstanceId":{"description":"ID of the SLO instance. Set when the SLO uses group_by; identifies which instance to show. Defaults to `*` (all instances) when omitted.\n","type":"string"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["sloId"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloErrorBudgetConfigDrilldown:KibanaDashboardPanelSloErrorBudgetConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is escaped using percent encoding. Defaults to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> when omitted.\n","type":"boolean"},"label":{"description":"The label displayed for the drilldown.\n","type":"string"},"openInNewTab":{"description":"When true, the drilldown URL opens in a new browser tab. Defaults to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> when omitted.\n","type":"boolean"},"url":{"description":"Templated URL. Variables documented at https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloOverviewConfig:KibanaDashboardPanelSloOverviewConfig":{"properties":{"groups":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloOverviewConfigGroups:KibanaDashboardPanelSloOverviewConfigGroups","description":"Configuration for a grouped SLO overview panel. Mutually exclusive with <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span>.\n"},"single":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloOverviewConfigSingle:KibanaDashboardPanelSloOverviewConfigSingle","description":"Configuration for a single-SLO overview panel. Mutually exclusive with <span pulumi-lang-nodejs=\"`groups`\" pulumi-lang-dotnet=\"`Groups`\" pulumi-lang-go=\"`groups`\" pulumi-lang-python=\"`groups`\" pulumi-lang-yaml=\"`groups`\" pulumi-lang-java=\"`groups`\">`groups`</span>.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelSloOverviewConfigGroups:KibanaDashboardPanelSloOverviewConfigGroups":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"URL drilldowns attached to the panel. The trigger (<span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span>) and type (<span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>) are set automatically.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloOverviewConfigGroupsDrilldown:KibanaDashboardPanelSloOverviewConfigGroupsDrilldown"},"type":"array"},"groupFilters":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloOverviewConfigGroupsGroupFilters:KibanaDashboardPanelSloOverviewConfigGroupsGroupFilters","description":"Optional filters for grouped SLO overview mode.\n"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelSloOverviewConfigGroupsDrilldown:KibanaDashboardPanelSloOverviewConfigGroupsDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded.\n","type":"boolean"},"label":{"description":"The display label for the drilldown link.\n","type":"string"},"openInNewTab":{"description":"When true, the drilldown URL opens in a new browser tab.\n","type":"boolean"},"url":{"description":"The URL template for the drilldown. Variables are documented at https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloOverviewConfigGroupsGroupFilters:KibanaDashboardPanelSloOverviewConfigGroupsGroupFilters":{"properties":{"filtersJson":{"description":"AS-code filter array as a JSON string. Accepts the polymorphic filter schema (condition, group, DSL, spatial).\n","type":"string"},"groupBy":{"description":"Group SLOs by this field. Valid values are `slo.tags`, <span pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\">`status`</span>, `slo.indicator.type`, `_index`.\n","type":"string"},"groups":{"description":"List of group values to include (maximum 100).\n","items":{"type":"string"},"type":"array"},"kqlQuery":{"description":"KQL query string to filter the SLOs shown in the group overview.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelSloOverviewConfigSingle:KibanaDashboardPanelSloOverviewConfigSingle":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"URL drilldowns attached to the panel. The trigger (<span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span>) and type (<span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>) are set automatically.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSloOverviewConfigSingleDrilldown:KibanaDashboardPanelSloOverviewConfigSingleDrilldown"},"type":"array"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"remoteName":{"description":"The name of the remote cluster where the SLO is defined.\n","type":"string"},"sloId":{"description":"The unique identifier of the SLO to display.\n","type":"string"},"sloInstanceId":{"description":"The SLO instance ID. Set when the SLO uses group_by; identifies which instance to display. Defaults to `*` (all instances) when omitted.\n","type":"string"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["sloId"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSloOverviewConfigSingleDrilldown:KibanaDashboardPanelSloOverviewConfigSingleDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded.\n","type":"boolean"},"label":{"description":"The display label for the drilldown link.\n","type":"string"},"openInNewTab":{"description":"When true, the drilldown URL opens in a new browser tab.\n","type":"boolean"},"url":{"description":"The URL template for the drilldown. Variables are documented at https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsMonitorsConfig:KibanaDashboardPanelSyntheticsMonitorsConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"filters":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsMonitorsConfigFilters:KibanaDashboardPanelSyntheticsMonitorsConfigFilters","description":"Optional filter configuration for the Synthetics monitors panel. Omit to show all monitors.\n"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"},"view":{"description":"View mode for the panel. Valid values are `cardView` and `compactView`.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsMonitorsConfigFilters:KibanaDashboardPanelSyntheticsMonitorsConfigFilters":{"properties":{"locations":{"description":"Filter by monitor locations. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (location ID).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsMonitorsConfigFiltersLocation:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersLocation"},"type":"array"},"monitorIds":{"description":"Filter by monitor IDs. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (monitor ID). The Kibana API accepts up to 5000 items.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsMonitorsConfigFiltersMonitorId:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersMonitorId"},"type":"array"},"monitorTypes":{"description":"Filter by monitor types. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (monitor type, e.g. <span pulumi-lang-nodejs=\"`browser`\" pulumi-lang-dotnet=\"`Browser`\" pulumi-lang-go=\"`browser`\" pulumi-lang-python=\"`browser`\" pulumi-lang-yaml=\"`browser`\" pulumi-lang-java=\"`browser`\">`browser`</span>, <span pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\">`http`</span>, <span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>, <span pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\">`icmp`</span>).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsMonitorsConfigFiltersMonitorType:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersMonitorType"},"type":"array"},"projects":{"description":"Filter by project. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (project ID).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsMonitorsConfigFiltersProject:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersProject"},"type":"array"},"tags":{"description":"Filter by tags. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (tag).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsMonitorsConfigFiltersTag:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersTag"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsMonitorsConfigFiltersLocation:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersLocation":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsMonitorsConfigFiltersMonitorId:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersMonitorId":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsMonitorsConfigFiltersMonitorType:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersMonitorType":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsMonitorsConfigFiltersProject:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersProject":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsMonitorsConfigFiltersTag:KibanaDashboardPanelSyntheticsMonitorsConfigFiltersTag":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsStatsOverviewConfig:KibanaDashboardPanelSyntheticsStatsOverviewConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Optional list of URL drilldown actions attached to the panel. The API allows up to 100 drilldowns per panel.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsStatsOverviewConfigDrilldown:KibanaDashboardPanelSyntheticsStatsOverviewConfigDrilldown"},"type":"array"},"filters":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsStatsOverviewConfigFilters:KibanaDashboardPanelSyntheticsStatsOverviewConfigFilters","description":"Optional Synthetics monitor filter constraints. Each filter category accepts a list of `{ label, value }` objects. Omit the block or individual categories to apply no filtering for those dimensions.\n"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsStatsOverviewConfigDrilldown:KibanaDashboardPanelSyntheticsStatsOverviewConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded. Omit to use the API default.\n","type":"boolean"},"label":{"description":"Display label shown in the drilldown menu.\n","type":"string"},"openInNewTab":{"description":"When true, the URL opens in a new browser tab. Omit to use the API default.\n","type":"boolean"},"url":{"description":"Templated URL for the drilldown.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsStatsOverviewConfigFilters:KibanaDashboardPanelSyntheticsStatsOverviewConfigFilters":{"properties":{"locations":{"description":"Filter by monitor location.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersLocation:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersLocation"},"type":"array"},"monitorIds":{"description":"Filter by monitor ID. The API accepts up to 5000 entries.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersMonitorId:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersMonitorId"},"type":"array"},"monitorTypes":{"description":"Filter by monitor type (e.g. <span pulumi-lang-nodejs=\"`browser`\" pulumi-lang-dotnet=\"`Browser`\" pulumi-lang-go=\"`browser`\" pulumi-lang-python=\"`browser`\" pulumi-lang-yaml=\"`browser`\" pulumi-lang-java=\"`browser`\">`browser`</span>, <span pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\">`http`</span>).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersMonitorType:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersMonitorType"},"type":"array"},"projects":{"description":"Filter by Synthetics project.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersProject:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersProject"},"type":"array"},"tags":{"description":"Filter by monitor tag.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersTag:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersTag"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersLocation:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersLocation":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersMonitorId:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersMonitorId":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersMonitorType:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersMonitorType":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersProject:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersProject":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersTag:KibanaDashboardPanelSyntheticsStatsOverviewConfigFiltersTag":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardPanelTimeSliderControlConfig:KibanaDashboardPanelTimeSliderControlConfig":{"properties":{"endPercentageOfTimeRange":{"description":"End of the visible time window as a fraction of the dashboard global range (0.0–1.0). Float32 in state matches the Kibana API and avoids refresh drift.\n","type":"number"},"isAnchored":{"description":"Whether the start of the time window is anchored (fixed), so only the end slides.\n","type":"boolean"},"startPercentageOfTimeRange":{"description":"Start of the visible time window as a fraction of the dashboard global range (0.0–1.0). Float32 in state matches the Kibana API and avoids refresh drift.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfig:KibanaDashboardPanelVisConfig":{"properties":{"byReference":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByReference:KibanaDashboardPanelVisConfigByReference","description":"By-reference <span pulumi-lang-nodejs=\"`vis`\" pulumi-lang-dotnet=\"`Vis`\" pulumi-lang-go=\"`vis`\" pulumi-lang-python=\"`vis`\" pulumi-lang-yaml=\"`vis`\" pulumi-lang-java=\"`vis`\">`vis`</span> configuration: structured <span pulumi-lang-nodejs=\"`drilldowns`\" pulumi-lang-dotnet=\"`Drilldowns`\" pulumi-lang-go=\"`drilldowns`\" pulumi-lang-python=\"`drilldowns`\" pulumi-lang-yaml=\"`drilldowns`\" pulumi-lang-java=\"`drilldowns`\">`drilldowns`</span>, <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>, optional <span pulumi-lang-nodejs=\"`referencesJson`\" pulumi-lang-dotnet=\"`ReferencesJson`\" pulumi-lang-go=\"`referencesJson`\" pulumi-lang-python=\"`references_json`\" pulumi-lang-yaml=\"`referencesJson`\" pulumi-lang-java=\"`referencesJson`\">`references_json`</span>, and optional <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>.\n"},"byValue":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValue:KibanaDashboardPanelVisConfigByValue","description":"Inline by-value Lens visualization configuration for `type = \"vis\"` panels (<span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>). Exactly one typed chart kind must be set (no raw JSON here — use panel-level <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span> for that).\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByReference:KibanaDashboardPanelVisConfigByReference":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Structured dashboard, Discover, or URL drilldown entries for by-reference panels — shared by `vis_config.by_reference` (<span pulumi-lang-nodejs=\"`vis`\" pulumi-lang-dotnet=\"`Vis`\" pulumi-lang-go=\"`vis`\" pulumi-lang-python=\"`vis`\" pulumi-lang-yaml=\"`vis`\" pulumi-lang-java=\"`vis`\">`vis`</span> panels). Each element must contain exactly one of <span pulumi-lang-nodejs=\"`dashboard`\" pulumi-lang-dotnet=\"`Dashboard`\" pulumi-lang-go=\"`dashboard`\" pulumi-lang-python=\"`dashboard`\" pulumi-lang-yaml=\"`dashboard`\" pulumi-lang-java=\"`dashboard`\">`dashboard`</span>, <span pulumi-lang-nodejs=\"`discover`\" pulumi-lang-dotnet=\"`Discover`\" pulumi-lang-go=\"`discover`\" pulumi-lang-python=\"`discover`\" pulumi-lang-yaml=\"`discover`\" pulumi-lang-java=\"`discover`\">`discover`</span>, or <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span>; the provider sets API <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> and (for dashboard/discover) <span pulumi-lang-nodejs=\"`trigger`\" pulumi-lang-dotnet=\"`Trigger`\" pulumi-lang-go=\"`trigger`\" pulumi-lang-python=\"`trigger`\" pulumi-lang-yaml=\"`trigger`\" pulumi-lang-java=\"`trigger`\">`trigger`</span> automatically.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByReferenceDrilldown:KibanaDashboardPanelVisConfigByReferenceDrilldown"},"type":"array"},"hideBorder":{"description":"When true, suppresses the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the panel title.\n","type":"boolean"},"refId":{"description":"Reference name in the API <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span> field. When <span pulumi-lang-nodejs=\"`referencesJson`\" pulumi-lang-dotnet=\"`ReferencesJson`\" pulumi-lang-go=\"`referencesJson`\" pulumi-lang-python=\"`references_json`\" pulumi-lang-yaml=\"`referencesJson`\" pulumi-lang-java=\"`referencesJson`\">`references_json`</span> is set, <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span> typically should match a <span pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\">`name`</span> in that list so the link resolves as expected.\n","type":"string"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list (for example wiring a <span pulumi-lang-nodejs=\"`lens`\" pulumi-lang-dotnet=\"`Lens`\" pulumi-lang-go=\"`lens`\" pulumi-lang-python=\"`lens`\" pulumi-lang-yaml=\"`lens`\" pulumi-lang-java=\"`lens`\">`lens`</span> saved object to <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>).\n","type":"string"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByReferenceTimeRange:KibanaDashboardPanelVisConfigByReferenceTimeRange","description":"Optional time range for the by-reference panel config (`vis_config.by_reference`). Omitted from the API payload when unset.\n"},"title":{"description":"Optional panel title.\n","type":"string"}},"required":["refId"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByReferenceDrilldown:KibanaDashboardPanelVisConfigByReferenceDrilldown":{"properties":{"dashboard":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByReferenceDrilldownDashboard:KibanaDashboardPanelVisConfigByReferenceDrilldownDashboard","description":"Open another dashboard (<span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>). <span pulumi-lang-nodejs=\"`dashboardId`\" pulumi-lang-dotnet=\"`DashboardId`\" pulumi-lang-go=\"`dashboardId`\" pulumi-lang-python=\"`dashboard_id`\" pulumi-lang-yaml=\"`dashboardId`\" pulumi-lang-java=\"`dashboardId`\">`dashboard_id`</span> and <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> are required; remaining fields mirror optional API knobs.\n"},"discover":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByReferenceDrilldownDiscover:KibanaDashboardPanelVisConfigByReferenceDrilldownDiscover","description":"Open in Discover (<span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>). Requires <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span>.\n"},"url":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByReferenceDrilldownUrl:KibanaDashboardPanelVisConfigByReferenceDrilldownUrl","description":"Custom URL drilldown (<span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>). Requires <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span>, <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span>, and <span pulumi-lang-nodejs=\"`trigger`\" pulumi-lang-dotnet=\"`Trigger`\" pulumi-lang-go=\"`trigger`\" pulumi-lang-python=\"`trigger`\" pulumi-lang-yaml=\"`trigger`\" pulumi-lang-java=\"`trigger`\">`trigger`</span> (one of <span pulumi-lang-nodejs=\"`onClickRow`\" pulumi-lang-dotnet=\"`OnClickRow`\" pulumi-lang-go=\"`onClickRow`\" pulumi-lang-python=\"`on_click_row`\" pulumi-lang-yaml=\"`onClickRow`\" pulumi-lang-java=\"`onClickRow`\">`on_click_row`</span>, <span pulumi-lang-nodejs=\"`onClickValue`\" pulumi-lang-dotnet=\"`OnClickValue`\" pulumi-lang-go=\"`onClickValue`\" pulumi-lang-python=\"`on_click_value`\" pulumi-lang-yaml=\"`onClickValue`\" pulumi-lang-java=\"`onClickValue`\">`on_click_value`</span>, <span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span>, <span pulumi-lang-nodejs=\"`onSelectRange`\" pulumi-lang-dotnet=\"`OnSelectRange`\" pulumi-lang-go=\"`onSelectRange`\" pulumi-lang-python=\"`on_select_range`\" pulumi-lang-yaml=\"`onSelectRange`\" pulumi-lang-java=\"`onSelectRange`\">`on_select_range`</span>). The Kibana dashboard API rejects URL drilldowns without <span pulumi-lang-nodejs=\"`trigger`\" pulumi-lang-dotnet=\"`Trigger`\" pulumi-lang-go=\"`trigger`\" pulumi-lang-python=\"`trigger`\" pulumi-lang-yaml=\"`trigger`\" pulumi-lang-java=\"`trigger`\">`trigger`</span>.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByReferenceDrilldownDashboard:KibanaDashboardPanelVisConfigByReferenceDrilldownDashboard":{"properties":{"dashboardId":{"description":"Target dashboard ID.\n","type":"string"},"label":{"description":"Display label.\n","type":"string"},"openInNewTab":{"description":"Open in a new browser tab when set.\n","type":"boolean"},"useFilters":{"description":"Pass filters to the target dashboard when set.\n","type":"boolean"},"useTimeRange":{"description":"Pass the current time range to the target dashboard when set.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByReferenceDrilldownDiscover:KibanaDashboardPanelVisConfigByReferenceDrilldownDiscover":{"properties":{"label":{"description":"Display label.\n","type":"string"},"openInNewTab":{"description":"Open in a new browser tab when set.\n","type":"boolean"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByReferenceDrilldownUrl:KibanaDashboardPanelVisConfigByReferenceDrilldownUrl":{"properties":{"encodeUrl":{"description":"Escape the URL via percent-encoding when set.\n","type":"boolean"},"label":{"description":"Display label.\n","type":"string"},"openInNewTab":{"description":"Open in a new browser tab when set.\n","type":"boolean"},"trigger":{"description":"Trigger that activates the drilldown. Required; the Kibana dashboard API rejects URL drilldowns when this field is omitted.\n","type":"string"},"url":{"description":"URL template with variables documented in Kibana URL drilldown documentation.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByReferenceTimeRange:KibanaDashboardPanelVisConfigByReferenceTimeRange":{"properties":{"from":{"description":"Start of the time range (e.g., 'now-15m', '2023-01-01T00:00:00Z').\n","type":"string"},"mode":{"description":"Optional time range mode. When set, must be <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>.\n","type":"string"},"to":{"description":"End of the time range (e.g., 'now', '2023-12-31T23:59:59Z').\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValue:KibanaDashboardPanelVisConfigByValue":{"properties":{"datatableConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfig:KibanaDashboardPanelVisConfigByValueDatatableConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.datatable_config`.\n"},"gaugeConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfig:KibanaDashboardPanelVisConfigByValueGaugeConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.gauge_config`.\n"},"heatmapConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfig:KibanaDashboardPanelVisConfigByValueHeatmapConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.heatmap_config`.\n"},"legacyMetricConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueLegacyMetricConfig:KibanaDashboardPanelVisConfigByValueLegacyMetricConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.legacy_metric_config`.\n"},"metricChartConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfig:KibanaDashboardPanelVisConfigByValueMetricChartConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.metric_chart_config`.\n"},"mosaicConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfig:KibanaDashboardPanelVisConfigByValueMosaicConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.mosaic_config`.\n"},"pieChartConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfig:KibanaDashboardPanelVisConfigByValuePieChartConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.pie_chart_config`.\n"},"regionMapConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueRegionMapConfig:KibanaDashboardPanelVisConfigByValueRegionMapConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.region_map_config`.\n"},"tagcloudConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfig:KibanaDashboardPanelVisConfigByValueTagcloudConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.tagcloud_config`.\n"},"treemapConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfig:KibanaDashboardPanelVisConfigByValueTreemapConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.treemap_config`.\n"},"waffleConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfig:KibanaDashboardPanelVisConfigByValueWaffleConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.waffle_config`.\n"},"xyChartConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfig:KibanaDashboardPanelVisConfigByValueXyChartConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.xy_chart_config`.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfig:KibanaDashboardPanelVisConfigByValueDatatableConfig":{"properties":{"esql":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsql:KibanaDashboardPanelVisConfigByValueDatatableConfigEsql","description":"Datatable configuration for ES|QL queries.\n"},"noEsql":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsql:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsql","description":"Datatable configuration for standard (non-ES|QL) queries.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsql:KibanaDashboardPanelVisConfigByValueDatatableConfigEsql":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metrics","sampling","styling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For ES|QL, this specifies the ES|QL query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlFilter:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metrics":{"description":"Array of metric configurations as JSON. Each entry defines a datatable metric column.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlMetric"},"type":"array"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"rows":{"description":"Array of row configurations as JSON. Each entry defines a row split operation.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlRow:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlRow"},"type":"array"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"splitMetricsBies":{"description":"Array of split-metrics configurations as JSON. Each entry defines a split operation for metric columns.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlSplitMetricsBy:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlSplitMetricsBy"},"type":"array"},"styling":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStyling:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStyling","description":"Datatable styling and display configuration.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlTimeRange:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metrics","styling"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlFilter:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlMetric":{"properties":{"configJson":{"description":"Metric configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlRow:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlRow":{"properties":{"configJson":{"description":"Row configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlSplitMetricsBy:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlSplitMetricsBy":{"properties":{"configJson":{"description":"Split metrics configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStyling:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStyling":{"properties":{"density":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensity:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensity","description":"Density configuration for the datatable.\n"},"paging":{"description":"Enables pagination and sets the number of rows to display per page.\n","type":"number"},"sortByJson":{"description":"Sort configuration as JSON. Only one column can be sorted at a time.\n","type":"string"}},"required":["density"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensity:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensity":{"properties":{"height":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeight:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeight","description":"Header and value height configuration.\n"},"mode":{"description":"Density mode. Valid values: 'compact', 'default', 'expanded'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeight:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeight":{"properties":{"header":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightHeader:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightHeader","description":"Header height configuration.\n"},"value":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightValue:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightValue","description":"Value height configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightHeader:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightHeader":{"properties":{"maxLines":{"description":"Maximum number of lines to use before header is truncated (for custom header height).\n","type":"number"},"type":{"description":"Header height type. Valid values: 'auto', 'custom'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightValue:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightValue":{"properties":{"lines":{"description":"Number of lines to display per table body cell (for custom value height).\n","type":"number"},"type":{"description":"Value height type. Valid values: 'auto', 'custom'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlTimeRange:KibanaDashboardPanelVisConfigByValueDatatableConfigEsqlTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsql:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsql":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metrics","query","sampling","styling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For standard datatables, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlFilter:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metrics":{"description":"Array of metric configurations as JSON. Each entry defines a datatable metric column.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlMetric:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlMetric"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlQuery:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlQuery","description":"Query configuration for filtering data.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"rows":{"description":"Array of row configurations as JSON. Each entry defines a row split operation.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlRow:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlRow"},"type":"array"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"splitMetricsBies":{"description":"Array of split-metrics configurations as JSON. Each entry defines a split operation for metric columns.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlSplitMetricsBy:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlSplitMetricsBy"},"type":"array"},"styling":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStyling:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStyling","description":"Datatable styling and display configuration.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlTimeRange:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metrics","query","styling"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlFilter:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlMetric:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlMetric":{"properties":{"configJson":{"description":"Metric configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlQuery:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlRow:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlRow":{"properties":{"configJson":{"description":"Row configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlSplitMetricsBy:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlSplitMetricsBy":{"properties":{"configJson":{"description":"Split metrics configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStyling:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStyling":{"properties":{"density":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensity:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensity","description":"Density configuration for the datatable.\n"},"paging":{"description":"Enables pagination and sets the number of rows to display per page.\n","type":"number"},"sortByJson":{"description":"Sort configuration as JSON. Only one column can be sorted at a time.\n","type":"string"}},"required":["density"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensity:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensity":{"properties":{"height":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeight:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeight","description":"Header and value height configuration.\n"},"mode":{"description":"Density mode. Valid values: 'compact', 'default', 'expanded'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeight:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeight":{"properties":{"header":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightHeader:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightHeader","description":"Header height configuration.\n"},"value":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightValue:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightValue","description":"Value height configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightHeader:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightHeader":{"properties":{"maxLines":{"description":"Maximum number of lines to use before header is truncated (for custom header height).\n","type":"number"},"type":{"description":"Header height type. Valid values: 'auto', 'custom'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightValue:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightValue":{"properties":{"lines":{"description":"Number of lines to display per table body cell (for custom value height).\n","type":"number"},"type":{"description":"Value height type. Valid values: 'auto', 'custom'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlTimeRange:KibanaDashboardPanelVisConfigByValueDatatableConfigNoEsqlTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfig:KibanaDashboardPanelVisConfigByValueGaugeConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","sampling","styling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For standard layers, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigDrilldown:KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldown"},"type":"array"},"esqlMetric":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetric","description":"Typed metric column for ES|QL gauges. Mutually exclusive with <span pulumi-lang-nodejs=\"`metricJson`\" pulumi-lang-dotnet=\"`MetricJson`\" pulumi-lang-go=\"`metricJson`\" pulumi-lang-python=\"`metric_json`\" pulumi-lang-yaml=\"`metricJson`\" pulumi-lang-java=\"`metricJson`\">`metric_json`</span>.\n"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigFilter:KibanaDashboardPanelVisConfigByValueGaugeConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metricJson":{"description":"Metric configuration as JSON. Supports metric operations such as count, unique count, min, max, average, median, standard deviation, sum, last value, percentile, percentile ranks, or formula. Required for non-ES|QL gauges; mutually exclusive with <span pulumi-lang-nodejs=\"`esqlMetric`\" pulumi-lang-dotnet=\"`EsqlMetric`\" pulumi-lang-go=\"`esqlMetric`\" pulumi-lang-python=\"`esql_metric`\" pulumi-lang-yaml=\"`esqlMetric`\" pulumi-lang-java=\"`esqlMetric`\">`esql_metric`</span>.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigQuery:KibanaDashboardPanelVisConfigByValueGaugeConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL gauges; omit for ES|QL mode.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"styling":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigStyling:KibanaDashboardPanelVisConfigByValueGaugeConfigStyling","description":"Gauge styling configuration.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigTimeRange:KibanaDashboardPanelVisConfigByValueGaugeConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","styling"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldown:KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueGaugeConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetric":{"properties":{"colorJson":{"description":"Gauge fill color configuration as JSON (`colorByValue`, `noColor`, or `autoColor` union).\n","type":"string"},"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"goal":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricGoal:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricGoal","description":"Goal column reference.\n"},"label":{"description":"Optional label for the metric.\n","type":"string"},"max":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricMax:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricMax","description":"Max column reference.\n"},"min":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricMin:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricMin","description":"Min column reference.\n"},"subtitle":{"description":"Subtitle text rendered below the gauge value.\n","type":"string"},"ticks":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricTicks:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricTicks","description":"Tick configuration.\n"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricTitle:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricTitle","description":"Title configuration.\n"}},"required":["column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricGoal:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricGoal":{"properties":{"column":{"description":"ES|QL column name.\n","type":"string"},"label":{"description":"Optional label for the operation.\n","type":"string"}},"required":["column"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricMax:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricMax":{"properties":{"column":{"description":"ES|QL column name.\n","type":"string"},"label":{"description":"Optional label for the operation.\n","type":"string"}},"required":["column"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricMin:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricMin":{"properties":{"column":{"description":"ES|QL column name.\n","type":"string"},"label":{"description":"Optional label for the operation.\n","type":"string"}},"required":["column"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricTicks:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricTicks":{"properties":{"mode":{"description":"Tick placement mode.\n","type":"string"},"visible":{"description":"Whether tick marks are displayed.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricTitle:KibanaDashboardPanelVisConfigByValueGaugeConfigEsqlMetricTitle":{"properties":{"text":{"description":"Title text.\n","type":"string"},"visible":{"description":"Whether the title is displayed.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigFilter:KibanaDashboardPanelVisConfigByValueGaugeConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigQuery:KibanaDashboardPanelVisConfigByValueGaugeConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigStyling:KibanaDashboardPanelVisConfigByValueGaugeConfigStyling":{"properties":{"shapeJson":{"description":"Gauge shape configuration as JSON. Supports bullet and circular gauges.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueGaugeConfigTimeRange:KibanaDashboardPanelVisConfigByValueGaugeConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfig:KibanaDashboardPanelVisConfigByValueHeatmapConfig":{"language":{"nodejs":{"requiredOutputs":["axis","dataSourceJson","ignoreGlobalFilters","legend","metricJson","sampling","styling","xAxisJson"]}},"properties":{"axis":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigAxis:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxis","description":"Axis configuration for X and Y axes.\n"},"dataSourceJson":{"description":"Dataset configuration as JSON. For standard heatmaps, this specifies the data view or index; for ES|QL, this specifies the ES|QL query dataset.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldown:KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigFilter:KibanaDashboardPanelVisConfigByValueHeatmapConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigLegend:KibanaDashboardPanelVisConfigByValueHeatmapConfigLegend","description":"Legend configuration for the heatmap.\n"},"metricJson":{"description":"Metric configuration as JSON. For non-ES|QL, this can be a field metric, pipeline metric, or formula. For ES|QL, this is the metric column/operation/color configuration.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigQuery:KibanaDashboardPanelVisConfigByValueHeatmapConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL heatmaps.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"styling":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigStyling:KibanaDashboardPanelVisConfigByValueHeatmapConfigStyling","description":"Heatmap styling configuration.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigTimeRange:KibanaDashboardPanelVisConfigByValueHeatmapConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"},"xAxisJson":{"description":"Breakdown dimension configuration for the X axis as JSON. This specifies the operation (e.g., <span pulumi-lang-nodejs=\"`terms`\" pulumi-lang-dotnet=\"`Terms`\" pulumi-lang-go=\"`terms`\" pulumi-lang-python=\"`terms`\" pulumi-lang-yaml=\"`terms`\" pulumi-lang-java=\"`terms`\">`terms`</span>, <span pulumi-lang-nodejs=\"`dateHistogram`\" pulumi-lang-dotnet=\"`DateHistogram`\" pulumi-lang-go=\"`dateHistogram`\" pulumi-lang-python=\"`date_histogram`\" pulumi-lang-yaml=\"`dateHistogram`\" pulumi-lang-java=\"`dateHistogram`\">`date_histogram`</span>, <span pulumi-lang-nodejs=\"`histogram`\" pulumi-lang-dotnet=\"`Histogram`\" pulumi-lang-go=\"`histogram`\" pulumi-lang-python=\"`histogram`\" pulumi-lang-yaml=\"`histogram`\" pulumi-lang-java=\"`histogram`\">`histogram`</span>, <span pulumi-lang-nodejs=\"`range`\" pulumi-lang-dotnet=\"`Range`\" pulumi-lang-go=\"`range`\" pulumi-lang-python=\"`range`\" pulumi-lang-yaml=\"`range`\" pulumi-lang-java=\"`range`\">`range`</span>, <span pulumi-lang-nodejs=\"`filters`\" pulumi-lang-dotnet=\"`Filters`\" pulumi-lang-go=\"`filters`\" pulumi-lang-python=\"`filters`\" pulumi-lang-yaml=\"`filters`\" pulumi-lang-java=\"`filters`\">`filters`</span>) and its parameters.\n","type":"string"},"yAxisJson":{"description":"Breakdown dimension configuration for the Y axis as JSON. When omitted, the heatmap renders without a Y breakdown.\n","type":"string"}},"required":["axis","dataSourceJson","legend","metricJson","styling","xAxisJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigAxis:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxis":{"properties":{"x":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigAxisX:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisX","description":"X-axis configuration.\n"},"y":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigAxisY:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisY","description":"Y-axis configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisX:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisX":{"properties":{"labels":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigAxisXLabels:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisXLabels","description":"X-axis label configuration.\n"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigAxisXTitle:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisXTitle","description":"Axis title configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisXLabels:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisXLabels":{"properties":{"orientation":{"description":"Orientation of the axis labels.\n","type":"string"},"visible":{"description":"Whether to show axis labels.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisXTitle:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisXTitle":{"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisY:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisY":{"properties":{"labels":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigAxisYLabels:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisYLabels","description":"Y-axis label configuration.\n"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigAxisYTitle:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisYTitle","description":"Axis title configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisYLabels:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisYLabels":{"properties":{"visible":{"description":"Whether to show axis labels.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisYTitle:KibanaDashboardPanelVisConfigByValueHeatmapConfigAxisYTitle":{"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldown:KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueHeatmapConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigFilter:KibanaDashboardPanelVisConfigByValueHeatmapConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigLegend:KibanaDashboardPanelVisConfigByValueHeatmapConfigLegend":{"properties":{"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visibility":{"description":"Legend visibility. Valid values are <span pulumi-lang-nodejs=\"`visible`\" pulumi-lang-dotnet=\"`Visible`\" pulumi-lang-go=\"`visible`\" pulumi-lang-python=\"`visible`\" pulumi-lang-yaml=\"`visible`\" pulumi-lang-java=\"`visible`\">`visible`</span> or <span pulumi-lang-nodejs=\"`hidden`\" pulumi-lang-dotnet=\"`Hidden`\" pulumi-lang-go=\"`hidden`\" pulumi-lang-python=\"`hidden`\" pulumi-lang-yaml=\"`hidden`\" pulumi-lang-java=\"`hidden`\">`hidden`</span>.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigQuery:KibanaDashboardPanelVisConfigByValueHeatmapConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigStyling:KibanaDashboardPanelVisConfigByValueHeatmapConfigStyling":{"properties":{"cells":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigStylingCells:KibanaDashboardPanelVisConfigByValueHeatmapConfigStylingCells","description":"Cells configuration for the heatmap.\n"}},"required":["cells"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigStylingCells:KibanaDashboardPanelVisConfigByValueHeatmapConfigStylingCells":{"properties":{"labels":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueHeatmapConfigStylingCellsLabels:KibanaDashboardPanelVisConfigByValueHeatmapConfigStylingCellsLabels","description":"Cell label configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigStylingCellsLabels:KibanaDashboardPanelVisConfigByValueHeatmapConfigStylingCellsLabels":{"properties":{"visible":{"description":"Whether to show cell labels.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueHeatmapConfigTimeRange:KibanaDashboardPanelVisConfigByValueHeatmapConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueLegacyMetricConfig:KibanaDashboardPanelVisConfigByValueLegacyMetricConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metricJson","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. Use `dataView` or <span pulumi-lang-nodejs=\"`index`\" pulumi-lang-dotnet=\"`Index`\" pulumi-lang-go=\"`index`\" pulumi-lang-python=\"`index`\" pulumi-lang-yaml=\"`index`\" pulumi-lang-java=\"`index`\">`index`</span> for standard data sources, and <span pulumi-lang-nodejs=\"`esql`\" pulumi-lang-dotnet=\"`Esql`\" pulumi-lang-go=\"`esql`\" pulumi-lang-python=\"`esql`\" pulumi-lang-yaml=\"`esql`\" pulumi-lang-java=\"`esql`\">`esql`</span> or <span pulumi-lang-nodejs=\"`table`\" pulumi-lang-dotnet=\"`Table`\" pulumi-lang-go=\"`table`\" pulumi-lang-python=\"`table`\" pulumi-lang-yaml=\"`table`\" pulumi-lang-java=\"`table`\">`table`</span> for ES|QL sources.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldown:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueLegacyMetricConfigFilter:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metricJson":{"description":"Metric configuration as JSON. For standard datasets, use a metric operation or formula. For ES|QL datasets, include format, operation, column, and color configuration.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueLegacyMetricConfigQuery:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL datasets.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueLegacyMetricConfigTimeRange:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metricJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldown:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueLegacyMetricConfigFilter:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueLegacyMetricConfigQuery:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueLegacyMetricConfigTimeRange:KibanaDashboardPanelVisConfigByValueLegacyMetricConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfig:KibanaDashboardPanelVisConfigByValueMetricChartConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metrics","sampling"]}},"properties":{"breakdownByJson":{"description":"Breakdown configuration as JSON. Groups metrics by a dimension. Can use operations like date histogram, terms, histogram, range, filters, or for ES|QL datasets, value operations with columns. Includes optional columns count and<span pulumi-lang-nodejs=\" collapseBy \" pulumi-lang-dotnet=\" CollapseBy \" pulumi-lang-go=\" collapseBy \" pulumi-lang-python=\" collapse_by \" pulumi-lang-yaml=\" collapseBy \" pulumi-lang-java=\" collapseBy \"> collapse_by </span>configuration.\n","type":"string"},"dataSourceJson":{"description":"Dataset configuration as JSON. Can be a data view dataset (`type: 'dataview'`), index dataset (`type: 'index'`), ES|QL dataset (`type: 'esql'`), or table ES|QL dataset (`type: 'tableESQLDatasetType`).\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldown:KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfigFilter:KibanaDashboardPanelVisConfigByValueMetricChartConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metrics":{"description":"Array of metrics to display (1-2 items). Each metric can be a primary metric (displays prominently) or secondary metric (displays as comparison). Metrics can use field operations (count, unique count, min, max, avg, median, std dev, sum, last value, percentile, percentile ranks), pipeline operations (differences, moving average, cumulative sum, counter rate), formula operations, or for ES|QL datasets, column-based value operations.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfigMetric:KibanaDashboardPanelVisConfigByValueMetricChartConfigMetric"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfigQuery:KibanaDashboardPanelVisConfigByValueMetricChartConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL datasets.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfigTimeRange:KibanaDashboardPanelVisConfigByValueMetricChartConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metrics"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldown:KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueMetricChartConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfigFilter:KibanaDashboardPanelVisConfigByValueMetricChartConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfigMetric:KibanaDashboardPanelVisConfigByValueMetricChartConfigMetric":{"properties":{"configJson":{"description":"Metric configuration as JSON. For primary metrics: includes type ('primary'), operation, format, alignments, icon, and optional fields like sub*label, fit, color, apply*color*to, and background*chart. For secondary metrics: includes type ('secondary'), operation, format, and optional fields like label, prefix, compare, and color.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfigQuery:KibanaDashboardPanelVisConfigByValueMetricChartConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMetricChartConfigTimeRange:KibanaDashboardPanelVisConfigByValueMetricChartConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfig:KibanaDashboardPanelVisConfigByValueMosaicConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","groupBreakdownByJson","ignoreGlobalFilters","legend","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For non-ES|QL, this specifies the data view or index; for ES|QL, this specifies the ES|QL query dataset.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigDrilldown:KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldown"},"type":"array"},"esqlGroupBies":{"description":"Breakdown columns for ES|QL mosaics. Mutually exclusive with <span pulumi-lang-nodejs=\"`groupByJson`\" pulumi-lang-dotnet=\"`GroupByJson`\" pulumi-lang-go=\"`groupByJson`\" pulumi-lang-python=\"`group_by_json`\" pulumi-lang-yaml=\"`groupByJson`\" pulumi-lang-java=\"`groupByJson`\">`group_by_json`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigEsqlGroupBy:KibanaDashboardPanelVisConfigByValueMosaicConfigEsqlGroupBy"},"type":"array"},"esqlMetrics":{"description":"Metric columns for ES|QL mosaics (exactly 1). Mutually exclusive with <span pulumi-lang-nodejs=\"`metricsJson`\" pulumi-lang-dotnet=\"`MetricsJson`\" pulumi-lang-go=\"`metricsJson`\" pulumi-lang-python=\"`metrics_json`\" pulumi-lang-yaml=\"`metricsJson`\" pulumi-lang-java=\"`metricsJson`\">`metrics_json`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueMosaicConfigEsqlMetric"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigFilter:KibanaDashboardPanelVisConfigByValueMosaicConfigFilter"},"type":"array"},"groupBreakdownByJson":{"description":"Array of secondary breakdown dimensions as JSON (minimum 1). Mosaic charts require both group*by and group*breakdown_by. For non-ES|QL, each item can be date histogram, terms, histogram, range, or filters operations; for ES|QL, each item is the column/operation/color configuration.\n","type":"string"},"groupByJson":{"description":"Array of primary breakdown dimensions as JSON (minimum 1). For non-ES|QL, each item can be date histogram, terms, histogram, range, or filters operations; for ES|QL, each item is the column/operation/color configuration.\n","type":"string"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigLegend:KibanaDashboardPanelVisConfigByValueMosaicConfigLegend","description":"Legend configuration for the mosaic chart.\n"},"metricsJson":{"description":"Array of metric configurations as JSON (exactly 1 required). For non-ES|QL, each item can be a field metric, pipeline metric, or formula; for ES|QL, each item is the column/operation/color/format configuration.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigQuery:KibanaDashboardPanelVisConfigByValueMosaicConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL partition charts.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigTimeRange:KibanaDashboardPanelVisConfigByValueMosaicConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"},"valueDisplay":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigValueDisplay:KibanaDashboardPanelVisConfigByValueMosaicConfigValueDisplay","description":"Configuration for displaying values in chart cells.\n"}},"required":["dataSourceJson","groupBreakdownByJson","legend"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldown:KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueMosaicConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigEsqlGroupBy:KibanaDashboardPanelVisConfigByValueMosaicConfigEsqlGroupBy":{"properties":{"collapseBy":{"description":"Collapse function when multiple rows map to the same bucket.\n","type":"string"},"colorJson":{"description":"Color mapping as JSON (`colorMapping` union).\n","type":"string"},"column":{"description":"ES|QL column for the breakdown.\n","type":"string"},"formatJson":{"description":"Column format as JSON (e.g. `{\"type\":\"number\"}`). Defaults to numeric format when omitted.\n","type":"string"},"label":{"description":"Optional label for the group-by column.\n","type":"string"}},"required":["collapseBy","colorJson","column"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueMosaicConfigEsqlMetric":{"properties":{"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the metric.\n","type":"string"}},"required":["column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigFilter:KibanaDashboardPanelVisConfigByValueMosaicConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigLegend:KibanaDashboardPanelVisConfigByValueMosaicConfigLegend":{"properties":{"nested":{"description":"Show nested legend with hierarchical breakdown levels.\n","type":"boolean"},"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visible":{"description":"Legend visibility: auto, visible, or hidden.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigQuery:KibanaDashboardPanelVisConfigByValueMosaicConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigTimeRange:KibanaDashboardPanelVisConfigByValueMosaicConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueMosaicConfigValueDisplay:KibanaDashboardPanelVisConfigByValueMosaicConfigValueDisplay":{"properties":{"mode":{"description":"Value display mode: hidden, absolute, or percentage.\n","type":"string"},"percentDecimals":{"description":"Decimal places for percentage display (0-10).\n","type":"number"}},"required":["mode"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfig:KibanaDashboardPanelVisConfigByValuePieChartConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","legend","metrics","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For standard layers, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"donutHole":{"description":"Donut hole size: none (pie), s, m, or l.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigDrilldown:KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigFilter:KibanaDashboardPanelVisConfigByValuePieChartConfigFilter"},"type":"array"},"groupBies":{"description":"Array of breakdown dimensions (minimum 1).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigGroupBy:KibanaDashboardPanelVisConfigByValuePieChartConfigGroupBy"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"labelPosition":{"description":"Position of slice labels: hidden, inside, or outside.\n","type":"string"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigLegend:KibanaDashboardPanelVisConfigByValuePieChartConfigLegend"},"metrics":{"description":"Array of metric configurations (minimum 1).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigMetric:KibanaDashboardPanelVisConfigByValuePieChartConfigMetric"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigQuery:KibanaDashboardPanelVisConfigByValuePieChartConfigQuery","description":"Query configuration for filtering data.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigTimeRange:KibanaDashboardPanelVisConfigByValuePieChartConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metrics"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldown:KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValuePieChartConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigFilter:KibanaDashboardPanelVisConfigByValuePieChartConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigGroupBy:KibanaDashboardPanelVisConfigByValuePieChartConfigGroupBy":{"properties":{"configJson":{"description":"Group by configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigLegend:KibanaDashboardPanelVisConfigByValuePieChartConfigLegend":{"properties":{"nested":{"description":"Show nested legend with hierarchical breakdown levels.\n","type":"boolean"},"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visible":{"description":"Legend visibility: auto, visible, or hidden.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigMetric:KibanaDashboardPanelVisConfigByValuePieChartConfigMetric":{"properties":{"configJson":{"description":"Metric configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigQuery:KibanaDashboardPanelVisConfigByValuePieChartConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValuePieChartConfigTimeRange:KibanaDashboardPanelVisConfigByValuePieChartConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueRegionMapConfig:KibanaDashboardPanelVisConfigByValueRegionMapConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metricJson","regionJson","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For ES|QL, this specifies the ES|QL query. For standard layers, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldown:KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueRegionMapConfigFilter:KibanaDashboardPanelVisConfigByValueRegionMapConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metricJson":{"description":"Metric configuration as JSON. For ES|QL, this defines the metric column and format. For standard mode, this defines the metric operation or formula.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueRegionMapConfigQuery:KibanaDashboardPanelVisConfigByValueRegionMapConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL region map configurations.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"regionJson":{"description":"Region configuration as JSON. For ES|QL, this defines the region column and EMS join. For standard mode, this defines the bucket operation (terms, histogram, range, filters) and optional EMS settings.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueRegionMapConfigTimeRange:KibanaDashboardPanelVisConfigByValueRegionMapConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metricJson","regionJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldown:KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueRegionMapConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueRegionMapConfigFilter:KibanaDashboardPanelVisConfigByValueRegionMapConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueRegionMapConfigQuery:KibanaDashboardPanelVisConfigByValueRegionMapConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueRegionMapConfigTimeRange:KibanaDashboardPanelVisConfigByValueRegionMapConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfig:KibanaDashboardPanelVisConfigByValueTagcloudConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For standard layers, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldown:KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldown"},"type":"array"},"esqlMetric":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueTagcloudConfigEsqlMetric","description":"Typed metric column for ES|QL tagclouds. Mutually exclusive with <span pulumi-lang-nodejs=\"`metricJson`\" pulumi-lang-dotnet=\"`MetricJson`\" pulumi-lang-go=\"`metricJson`\" pulumi-lang-python=\"`metric_json`\" pulumi-lang-yaml=\"`metricJson`\" pulumi-lang-java=\"`metricJson`\">`metric_json`</span>.\n"},"esqlTagBy":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigEsqlTagBy:KibanaDashboardPanelVisConfigByValueTagcloudConfigEsqlTagBy","description":"Typed tag-by column for ES|QL tagclouds. Mutually exclusive with <span pulumi-lang-nodejs=\"`tagByJson`\" pulumi-lang-dotnet=\"`TagByJson`\" pulumi-lang-go=\"`tagByJson`\" pulumi-lang-python=\"`tag_by_json`\" pulumi-lang-yaml=\"`tagByJson`\" pulumi-lang-java=\"`tagByJson`\">`tag_by_json`</span>.\n"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigFilter:KibanaDashboardPanelVisConfigByValueTagcloudConfigFilter"},"type":"array"},"fontSize":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigFontSize:KibanaDashboardPanelVisConfigByValueTagcloudConfigFontSize","description":"Minimum and maximum font size for the tags.\n"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metricJson":{"description":"Metric configuration as JSON. Can be a field metric operation (count, unique count, min, max, avg, median, std dev, sum, last value, percentile, percentile ranks), a pipeline operation (differences, moving average, cumulative sum, counter rate), or a formula operation. Required for non-ES|QL tagclouds; mutually exclusive with <span pulumi-lang-nodejs=\"`esqlMetric`\" pulumi-lang-dotnet=\"`EsqlMetric`\" pulumi-lang-go=\"`esqlMetric`\" pulumi-lang-python=\"`esql_metric`\" pulumi-lang-yaml=\"`esqlMetric`\" pulumi-lang-java=\"`esqlMetric`\">`esql_metric`</span>.\n","type":"string"},"orientation":{"description":"Orientation of the tagcloud. Valid values: 'horizontal', 'vertical', 'angled'.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigQuery:KibanaDashboardPanelVisConfigByValueTagcloudConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL tagclouds; omit for ES|QL mode.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"tagByJson":{"description":"Tag grouping configuration as JSON. Can be a date histogram, terms, histogram, range, or filters operation. This determines how tags are grouped and displayed. Required for non-ES|QL tagclouds; mutually exclusive with <span pulumi-lang-nodejs=\"`esqlTagBy`\" pulumi-lang-dotnet=\"`EsqlTagBy`\" pulumi-lang-go=\"`esqlTagBy`\" pulumi-lang-python=\"`esql_tag_by`\" pulumi-lang-yaml=\"`esqlTagBy`\" pulumi-lang-java=\"`esqlTagBy`\">`esql_tag_by`</span>.\n","type":"string"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigTimeRange:KibanaDashboardPanelVisConfigByValueTagcloudConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldown:KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueTagcloudConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueTagcloudConfigEsqlMetric":{"properties":{"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the metric.\n","type":"string"}},"required":["column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigEsqlTagBy:KibanaDashboardPanelVisConfigByValueTagcloudConfigEsqlTagBy":{"properties":{"colorJson":{"description":"Color mapping as JSON (`colorMapping` union).\n","type":"string"},"column":{"description":"ES|QL column for the tag dimension.\n","type":"string"},"formatJson":{"description":"Column format as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the tag-by column.\n","type":"string"}},"required":["colorJson","column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigFilter:KibanaDashboardPanelVisConfigByValueTagcloudConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigFontSize:KibanaDashboardPanelVisConfigByValueTagcloudConfigFontSize":{"properties":{"max":{"description":"Maximum font size (default: 72, maximum: 120).\n","type":"number"},"min":{"description":"Minimum font size (default: 18, minimum: 1).\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigQuery:KibanaDashboardPanelVisConfigByValueTagcloudConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTagcloudConfigTimeRange:KibanaDashboardPanelVisConfigByValueTagcloudConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfig:KibanaDashboardPanelVisConfigByValueTreemapConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","legend","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For non-ES|QL, this specifies the data view or index; for ES|QL, this specifies the ES|QL query dataset.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigDrilldown:KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldown"},"type":"array"},"esqlGroupBies":{"description":"Breakdown columns for ES|QL treemaps. Mutually exclusive with <span pulumi-lang-nodejs=\"`groupByJson`\" pulumi-lang-dotnet=\"`GroupByJson`\" pulumi-lang-go=\"`groupByJson`\" pulumi-lang-python=\"`group_by_json`\" pulumi-lang-yaml=\"`groupByJson`\" pulumi-lang-java=\"`groupByJson`\">`group_by_json`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigEsqlGroupBy:KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlGroupBy"},"type":"array"},"esqlMetrics":{"description":"Metric columns for ES|QL treemaps. Mutually exclusive with <span pulumi-lang-nodejs=\"`metricsJson`\" pulumi-lang-dotnet=\"`MetricsJson`\" pulumi-lang-go=\"`metricsJson`\" pulumi-lang-python=\"`metrics_json`\" pulumi-lang-yaml=\"`metricsJson`\" pulumi-lang-java=\"`metricsJson`\">`metrics_json`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlMetric"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigFilter:KibanaDashboardPanelVisConfigByValueTreemapConfigFilter"},"type":"array"},"groupByJson":{"description":"Array of breakdown dimensions as JSON (minimum 1). For non-ES|QL, each item can be date histogram, terms, histogram, range, or filters operations; for ES|QL, each item is the column/operation/color configuration.\n","type":"string"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigLegend:KibanaDashboardPanelVisConfigByValueTreemapConfigLegend","description":"Legend configuration for the treemap chart.\n"},"metricsJson":{"description":"Array of metric configurations as JSON (minimum 1). For non-ES|QL, each item can be a field metric, pipeline metric, or formula; for ES|QL, each item is the column/operation/color/format configuration.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigQuery:KibanaDashboardPanelVisConfigByValueTreemapConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL partition charts.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigTimeRange:KibanaDashboardPanelVisConfigByValueTreemapConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"},"valueDisplay":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigValueDisplay:KibanaDashboardPanelVisConfigByValueTreemapConfigValueDisplay","description":"Configuration for displaying values in chart cells.\n"}},"required":["dataSourceJson","legend"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldown:KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueTreemapConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlGroupBy:KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlGroupBy":{"properties":{"collapseBy":{"description":"Collapse function when multiple rows map to the same bucket.\n","type":"string"},"colorJson":{"description":"Color mapping as JSON (`colorMapping` union).\n","type":"string"},"column":{"description":"ES|QL column for the breakdown.\n","type":"string"},"formatJson":{"description":"Column format as JSON (e.g. `{\"type\":\"number\"}`). Defaults to numeric format when omitted.\n","type":"string"},"label":{"description":"Optional label for the group-by column.\n","type":"string"}},"required":["collapseBy","colorJson","column"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlMetric":{"properties":{"color":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueTreemapConfigEsqlMetricColor:KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlMetricColor","description":"Static color for the metric.\n"},"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the metric.\n","type":"string"}},"required":["color","column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlMetricColor:KibanaDashboardPanelVisConfigByValueTreemapConfigEsqlMetricColor":{"properties":{"color":{"description":"Color value (e.g. hex).\n","type":"string"},"type":{"description":"Color type; use <span pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\">`static`</span> for partition chart ES|QL metrics.\n","type":"string"}},"required":["color","type"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigFilter:KibanaDashboardPanelVisConfigByValueTreemapConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigLegend:KibanaDashboardPanelVisConfigByValueTreemapConfigLegend":{"properties":{"nested":{"description":"Show nested legend with hierarchical breakdown levels.\n","type":"boolean"},"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visible":{"description":"Legend visibility: auto, visible, or hidden.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigQuery:KibanaDashboardPanelVisConfigByValueTreemapConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigTimeRange:KibanaDashboardPanelVisConfigByValueTreemapConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueTreemapConfigValueDisplay:KibanaDashboardPanelVisConfigByValueTreemapConfigValueDisplay":{"properties":{"mode":{"description":"Value display mode: hidden, absolute, or percentage.\n","type":"string"},"percentDecimals":{"description":"Decimal places for percentage display (0-10).\n","type":"number"}},"required":["mode"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfig:KibanaDashboardPanelVisConfigByValueWaffleConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","legend","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For non-ES|QL, this specifies the data view or index; for ES|QL, this specifies the ES|QL query dataset.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigDrilldown:KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldown"},"type":"array"},"esqlGroupBies":{"description":"Breakdown columns for ES|QL waffles. Mutually exclusive with <span pulumi-lang-nodejs=\"`groupBy`\" pulumi-lang-dotnet=\"`GroupBy`\" pulumi-lang-go=\"`groupBy`\" pulumi-lang-python=\"`group_by`\" pulumi-lang-yaml=\"`groupBy`\" pulumi-lang-java=\"`groupBy`\">`group_by`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigEsqlGroupBy:KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlGroupBy"},"type":"array"},"esqlMetrics":{"description":"Metric columns for ES|QL waffles (minimum 1). Mutually exclusive with <span pulumi-lang-nodejs=\"`metrics`\" pulumi-lang-dotnet=\"`Metrics`\" pulumi-lang-go=\"`metrics`\" pulumi-lang-python=\"`metrics`\" pulumi-lang-yaml=\"`metrics`\" pulumi-lang-java=\"`metrics`\">`metrics`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlMetric"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigFilter:KibanaDashboardPanelVisConfigByValueWaffleConfigFilter"},"type":"array"},"groupBies":{"description":"Breakdown dimensions for non-ES|QL waffles. Each <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span> is a JSON object (terms, date*histogram, etc.) matching the Kibana Lens waffle schema.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigGroupBy:KibanaDashboardPanelVisConfigByValueWaffleConfigGroupBy"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigLegend:KibanaDashboardPanelVisConfigByValueWaffleConfigLegend","description":"Legend configuration for the waffle chart.\n"},"metrics":{"description":"Metric configurations for non-ES|QL waffles (minimum 1). Each <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span> is a JSON object (e.g. count, sum, or formula) matching the Kibana Lens waffle schema.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigMetric:KibanaDashboardPanelVisConfigByValueWaffleConfigMetric"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigQuery:KibanaDashboardPanelVisConfigByValueWaffleConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL partition charts.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigTimeRange:KibanaDashboardPanelVisConfigByValueWaffleConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"},"valueDisplay":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigValueDisplay:KibanaDashboardPanelVisConfigByValueWaffleConfigValueDisplay","description":"Configuration for displaying values in chart cells.\n"}},"required":["dataSourceJson","legend"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldown:KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueWaffleConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlGroupBy:KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlGroupBy":{"properties":{"collapseBy":{"description":"Collapse function when multiple rows map to the same bucket.\n","type":"string"},"colorJson":{"description":"Color mapping as JSON (`colorMapping` union).\n","type":"string"},"column":{"description":"ES|QL column for the breakdown.\n","type":"string"},"formatJson":{"description":"Column format as JSON (e.g. `{\"type\":\"number\"}`). Defaults to numeric format when omitted.\n","type":"string"},"label":{"description":"Optional label for the group-by column.\n","type":"string"}},"required":["collapseBy","colorJson","column"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlMetric:KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlMetric":{"properties":{"color":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueWaffleConfigEsqlMetricColor:KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlMetricColor","description":"Static color for the metric.\n"},"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the metric.\n","type":"string"}},"required":["color","column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlMetricColor:KibanaDashboardPanelVisConfigByValueWaffleConfigEsqlMetricColor":{"properties":{"color":{"description":"Color value (e.g. hex).\n","type":"string"},"type":{"description":"Color type; use <span pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\">`static`</span> for partition chart ES|QL metrics.\n","type":"string"}},"required":["color","type"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigFilter:KibanaDashboardPanelVisConfigByValueWaffleConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigGroupBy:KibanaDashboardPanelVisConfigByValueWaffleConfigGroupBy":{"properties":{"configJson":{"description":"Group-by operation as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigLegend:KibanaDashboardPanelVisConfigByValueWaffleConfigLegend":{"properties":{"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"values":{"description":"Legend value display modes. For example <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> shows raw metric values in the legend.\n","items":{"type":"string"},"type":"array"},"visible":{"description":"Legend visibility: auto, visible, or hidden.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigMetric:KibanaDashboardPanelVisConfigByValueWaffleConfigMetric":{"properties":{"configJson":{"description":"Metric operation as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigQuery:KibanaDashboardPanelVisConfigByValueWaffleConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigTimeRange:KibanaDashboardPanelVisConfigByValueWaffleConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueWaffleConfigValueDisplay:KibanaDashboardPanelVisConfigByValueWaffleConfigValueDisplay":{"properties":{"mode":{"description":"Value display mode: hidden, absolute, or percentage.\n","type":"string"},"percentDecimals":{"description":"Decimal places for percentage display (0-10).\n","type":"number"}},"required":["mode"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfig:KibanaDashboardPanelVisConfigByValueXyChartConfig":{"properties":{"axis":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigAxis:KibanaDashboardPanelVisConfigByValueXyChartConfigAxis","description":"Axis configuration for X, Y, and secondary Y axes.\n"},"decorations":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigDecorations:KibanaDashboardPanelVisConfigByValueXyChartConfigDecorations","description":"Visual enhancements and styling options for the chart.\n"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigDrilldown:KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigFilter:KibanaDashboardPanelVisConfigByValueXyChartConfigFilter"},"type":"array"},"fitting":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigFitting:KibanaDashboardPanelVisConfigByValueXyChartConfigFitting","description":"Missing data interpolation configuration. Only valid fitting types are applied per chart type.\n"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"layers":{"description":"Chart layers configuration. Minimum 1 layer required. Each layer can be a data layer or reference line layer.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigLayer:KibanaDashboardPanelVisConfigByValueXyChartConfigLayer"},"type":"array"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigLegend:KibanaDashboardPanelVisConfigByValueXyChartConfigLegend","description":"Legend configuration for the XY chart.\n"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigQuery:KibanaDashboardPanelVisConfigByValueXyChartConfigQuery","description":"Query configuration for filtering data.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigTimeRange:KibanaDashboardPanelVisConfigByValueXyChartConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["axis","decorations","fitting","layers","legend"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigAxis:KibanaDashboardPanelVisConfigByValueXyChartConfigAxis":{"properties":{"x":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigAxisX:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisX","description":"X-axis (horizontal) configuration.\n"},"y":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigAxisY:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY","description":"Primary Y-axis configuration with scale and bounds.\n"},"y2":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigAxisY2:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY2","description":"Secondary Y-axis configuration with scale and bounds.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigAxisX:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisX":{"language":{"nodejs":{"requiredOutputs":["domainJson","grid","labelOrientation","ticks"]}},"properties":{"domainJson":{"description":"Axis domain configuration as JSON. Can be 'fit' mode or 'custom' mode with min, max, and optional fit flags.\n","type":"string"},"grid":{"description":"Whether to show grid lines for this axis.\n","type":"boolean"},"labelOrientation":{"description":"Orientation of the axis labels.\n","type":"string"},"scale":{"description":"X-axis scale: linear (numeric), ordinal (categorical), or temporal (dates).\n","type":"string"},"ticks":{"description":"Whether to show tick marks on the axis.\n","type":"boolean"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigAxisXTitle:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisXTitle","description":"Axis title configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigAxisXTitle:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisXTitle":{"language":{"nodejs":{"requiredOutputs":["visible"]}},"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY2:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY2":{"language":{"nodejs":{"requiredOutputs":["domainJson","scale"]}},"properties":{"domainJson":{"description":"Y-axis domain configuration as JSON. Can be 'fit' mode or 'custom' mode with min, max, and optional fit flags.\n","type":"string"},"grid":{"description":"Whether to show grid lines for this axis.\n","type":"boolean"},"labelOrientation":{"description":"Orientation of the axis labels.\n","type":"string"},"scale":{"description":"Y-axis scale type for data transformation.\n","type":"string"},"ticks":{"description":"Whether to show tick marks on the axis.\n","type":"boolean"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigAxisY2Title:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY2Title","description":"Axis title configuration.\n"}},"required":["domainJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY2Title:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY2Title":{"language":{"nodejs":{"requiredOutputs":["visible"]}},"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisY":{"language":{"nodejs":{"requiredOutputs":["domainJson","scale"]}},"properties":{"domainJson":{"description":"Y-axis domain configuration as JSON. Can be 'fit' mode or 'custom' mode with min, max, and optional fit flags.\n","type":"string"},"grid":{"description":"Whether to show grid lines for this axis.\n","type":"boolean"},"labelOrientation":{"description":"Orientation of the axis labels.\n","type":"string"},"scale":{"description":"Y-axis scale type for data transformation.\n","type":"string"},"ticks":{"description":"Whether to show tick marks on the axis.\n","type":"boolean"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigAxisYTitle:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisYTitle","description":"Axis title configuration.\n"}},"required":["domainJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigAxisYTitle:KibanaDashboardPanelVisConfigByValueXyChartConfigAxisYTitle":{"language":{"nodejs":{"requiredOutputs":["visible"]}},"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigDecorations:KibanaDashboardPanelVisConfigByValueXyChartConfigDecorations":{"language":{"nodejs":{"requiredOutputs":["fillOpacity"]}},"properties":{"fillOpacity":{"description":"Area chart fill opacity (0-1 typical, max 2 for legacy).\n","type":"number"},"lineInterpolation":{"description":"Line interpolation method.\n","type":"string"},"minimumBarHeight":{"description":"Minimum bar height in pixels.\n","type":"number"},"pointVisibility":{"description":"Show data points on lines. Valid values are: auto, always, never.\n","type":"string"},"showCurrentTimeMarker":{"description":"Show current time marker line.\n","type":"boolean"},"showEndZones":{"description":"Show end zones for partial buckets.\n","type":"boolean"},"showValueLabels":{"description":"Display value labels on data points.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldown:KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownDashboardDrilldown:KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownDiscoverDrilldown:KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownUrlDrilldown:KibanaDashboardPanelVisConfigByValueXyChartConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigFilter:KibanaDashboardPanelVisConfigByValueXyChartConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigFitting:KibanaDashboardPanelVisConfigByValueXyChartConfigFitting":{"properties":{"dotted":{"description":"Show fitted values as dotted lines.\n","type":"boolean"},"endValue":{"description":"How to handle the end value for fitting.\n","type":"string"},"type":{"description":"Fitting function type for missing data.\n","type":"string"}},"required":["type"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigLayer:KibanaDashboardPanelVisConfigByValueXyChartConfigLayer":{"properties":{"dataLayer":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigLayerDataLayer:KibanaDashboardPanelVisConfigByValueXyChartConfigLayerDataLayer","description":"Configuration for data layers (area, line, bar charts). Mutually exclusive with <span pulumi-lang-nodejs=\"`referenceLineLayer`\" pulumi-lang-dotnet=\"`ReferenceLineLayer`\" pulumi-lang-go=\"`referenceLineLayer`\" pulumi-lang-python=\"`reference_line_layer`\" pulumi-lang-yaml=\"`referenceLineLayer`\" pulumi-lang-java=\"`referenceLineLayer`\">`reference_line_layer`</span>.\n"},"referenceLineLayer":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigLayerReferenceLineLayer:KibanaDashboardPanelVisConfigByValueXyChartConfigLayerReferenceLineLayer","description":"Configuration for reference line layers. Mutually exclusive with <span pulumi-lang-nodejs=\"`dataLayer`\" pulumi-lang-dotnet=\"`DataLayer`\" pulumi-lang-go=\"`dataLayer`\" pulumi-lang-python=\"`data_layer`\" pulumi-lang-yaml=\"`dataLayer`\" pulumi-lang-java=\"`dataLayer`\">`data_layer`</span>.\n"},"type":{"description":"The type of layer. Valid values: 'area', 'line', 'bar', 'horizontal*bar', 'reference*lines' for NoESQL layers; 'area*chart', 'line*chart', 'bar*chart', 'horizontal*bar*chart', 'reference*lines' for ESQL layers.\n","type":"string"}},"required":["type"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigLayerDataLayer:KibanaDashboardPanelVisConfigByValueXyChartConfigLayerDataLayer":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","sampling","ys"]}},"properties":{"breakdownByJson":{"description":"Split series configuration as JSON. For ES|QL: column, operation, optional collapse_by, and color mapping. For standard: field, operation, and optional parameters.\n","type":"string"},"dataSourceJson":{"description":"Dataset configuration as JSON. For ES|QL layers, this specifies the ES|QL query. For standard layers, this specifies the data view and query.\n","type":"string"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this layer. Default is false.\n","type":"boolean"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"xJson":{"description":"X-axis configuration as JSON. For ES|QL: column and operation. For standard: field, operation, and optional parameters.\n","type":"string"},"ys":{"description":"Array of Y-axis metrics. Each entry defines a metric to display on the Y-axis.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigLayerDataLayerY:KibanaDashboardPanelVisConfigByValueXyChartConfigLayerDataLayerY"},"type":"array"}},"required":["dataSourceJson","ys"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigLayerDataLayerY:KibanaDashboardPanelVisConfigByValueXyChartConfigLayerDataLayerY":{"properties":{"configJson":{"description":"Y-axis metric configuration as JSON. For ES|QL: axis, color, column, and operation. For standard: axis, color, and metric definition.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigLayerReferenceLineLayer:KibanaDashboardPanelVisConfigByValueXyChartConfigLayerReferenceLineLayer":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","sampling","thresholds"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For ES|QL layers, this specifies the ES|QL query. For standard layers, this specifies the data view and query.\n","type":"string"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this layer. Default is false.\n","type":"boolean"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"thresholds":{"description":"Array of reference line thresholds.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPanelVisConfigByValueXyChartConfigLayerReferenceLineLayerThreshold:KibanaDashboardPanelVisConfigByValueXyChartConfigLayerReferenceLineLayerThreshold"},"type":"array"}},"required":["dataSourceJson","thresholds"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigLayerReferenceLineLayerThreshold:KibanaDashboardPanelVisConfigByValueXyChartConfigLayerReferenceLineLayerThreshold":{"properties":{"axis":{"description":"Which axis the reference line applies to. Valid values: 'left', 'right'.\n","type":"string"},"colorJson":{"description":"Color for the reference line. Can be a static color string or dynamic color configuration as JSON.\n","type":"string"},"column":{"description":"Column to use (for ES|QL layers).\n","type":"string"},"fill":{"description":"Fill direction for reference line. Valid values: 'none', 'above', 'below'.\n","type":"string"},"icon":{"description":"Icon to display on the reference line. Valid values: 'alert', 'asterisk', 'bell', 'bolt', 'bug', 'circle', 'editorComment', 'flag', 'heart', 'mapMarker', 'pinFilled', 'starEmpty', 'starFilled', 'tag', 'triangle'.\n","type":"string"},"operation":{"description":"Operation to apply (for ES|QL: aggregation function; for standard: metric calculation type).\n","type":"string"},"strokeDash":{"description":"Line style. Valid values: 'solid', 'dashed', 'dotted'.\n","type":"string"},"strokeWidth":{"description":"Line width in pixels.\n","type":"number"},"text":{"description":"Text display option for the reference line. Valid values include: 'auto', 'name', 'none', 'label'.\n","type":"string"},"valueJson":{"description":"Metric configuration as JSON (for standard layers). Defines the calculation for the threshold value.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigLegend:KibanaDashboardPanelVisConfigByValueXyChartConfigLegend":{"language":{"nodejs":{"requiredOutputs":["inside","position","size","visibility"]}},"properties":{"alignment":{"description":"Legend alignment when positioned inside the chart. Valid when 'inside' is true.\n","type":"string"},"columns":{"description":"Number of legend columns when positioned inside the chart (1-5). Valid when 'inside' is true.\n","type":"number"},"inside":{"description":"Position legend inside the chart. When true, use 'columns' and 'alignment'. When false or omitted, use 'position' and 'size'.\n","type":"boolean"},"position":{"description":"Legend position when positioned outside the chart. Valid when 'inside' is false or omitted.\n","type":"string"},"size":{"description":"Legend size when positioned outside the chart. Valid for left/right outside legends. Values use the Kibana API enum: auto, s, m, l, xl.\n","type":"string"},"statistics":{"description":"Statistics to display in legend (maximum 17).\n","items":{"type":"string"},"type":"array"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visibility":{"description":"Legend visibility (auto, visible, hidden).\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigQuery:KibanaDashboardPanelVisConfigByValueXyChartConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardPanelVisConfigByValueXyChartConfigTimeRange:KibanaDashboardPanelVisConfigByValueXyChartConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardPinnedPanel:KibanaDashboardPinnedPanel":{"properties":{"esqlControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanelEsqlControlConfig:KibanaDashboardPinnedPanelEsqlControlConfig","description":"These blocks apply to the dashboard pinned control bar rather than an in-grid panel. Attribute definitions match the corresponding `panels[]` control configs for the same block names.\n"},"optionsListControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanelOptionsListControlConfig:KibanaDashboardPinnedPanelOptionsListControlConfig","description":"These blocks apply to the dashboard pinned control bar rather than an in-grid panel. Attribute definitions match the corresponding `panels[]` control configs for the same block names.\n\nConfiguration for an options list control. Provides a dropdown or multi-select filter based on a field in a data view. Mutually exclusive with <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>.\n"},"rangeSliderControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanelRangeSliderControlConfig:KibanaDashboardPinnedPanelRangeSliderControlConfig","description":"These blocks apply to the dashboard pinned control bar rather than an in-grid panel. Attribute definitions match the corresponding `panels[]` control configs for the same block names.\n\nConfiguration for a range slider control. Provides a min/max range filter tied to a data view field. Mutually exclusive with <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>.\n"},"timeSliderControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanelTimeSliderControlConfig:KibanaDashboardPinnedPanelTimeSliderControlConfig","description":"These blocks apply to the dashboard pinned control bar rather than an in-grid panel. Attribute definitions match the corresponding `panels[]` control configs for the same block names.\n\nConfiguration for a time slider control. Controls the visible time window within the dashboard's global time range. Mutually exclusive with <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>.\n"},"type":{"description":"Panel type discriminator for this pinned control entry. Must match exactly one of the four typed `*_control_config` blocks on the same object (for example <span pulumi-lang-nodejs=\"`optionsListControl`\" pulumi-lang-dotnet=\"`OptionsListControl`\" pulumi-lang-go=\"`optionsListControl`\" pulumi-lang-python=\"`options_list_control`\" pulumi-lang-yaml=\"`optionsListControl`\" pulumi-lang-java=\"`optionsListControl`\">`options_list_control`</span> with <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>).\n","type":"string"}},"required":["type"],"type":"object"},"elasticstack:index/KibanaDashboardPinnedPanelEsqlControlConfig:KibanaDashboardPinnedPanelEsqlControlConfig":{"properties":{"availableOptions":{"description":"Pre-populated list of available options shown before the query executes.\n","items":{"type":"string"},"type":"array"},"controlType":{"description":"The control type. Allowed values: `STATIC_VALUES`, `VALUES_FROM_QUERY`.\n","type":"string"},"displaySettings":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanelEsqlControlConfigDisplaySettings:KibanaDashboardPinnedPanelEsqlControlConfigDisplaySettings","description":"Display configuration for the control widget.\n"},"esqlQuery":{"description":"The ES|QL query used to populate the control's options.\n","type":"string"},"selectedOptions":{"description":"List of currently selected option values for the control.\n","items":{"type":"string"},"type":"array"},"singleSelect":{"description":"When true, restricts the control to single-value selection.\n","type":"boolean"},"title":{"description":"A human-readable title displayed above the control widget.\n","type":"string"},"variableName":{"description":"The ES|QL variable name that this control binds to.\n","type":"string"},"variableType":{"description":"The type of ES|QL variable. Allowed values: <span pulumi-lang-nodejs=\"`fields`\" pulumi-lang-dotnet=\"`Fields`\" pulumi-lang-go=\"`fields`\" pulumi-lang-python=\"`fields`\" pulumi-lang-yaml=\"`fields`\" pulumi-lang-java=\"`fields`\">`fields`</span>, <span pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\">`values`</span>, <span pulumi-lang-nodejs=\"`functions`\" pulumi-lang-dotnet=\"`Functions`\" pulumi-lang-go=\"`functions`\" pulumi-lang-python=\"`functions`\" pulumi-lang-yaml=\"`functions`\" pulumi-lang-java=\"`functions`\">`functions`</span>, <span pulumi-lang-nodejs=\"`timeLiteral`\" pulumi-lang-dotnet=\"`TimeLiteral`\" pulumi-lang-go=\"`timeLiteral`\" pulumi-lang-python=\"`time_literal`\" pulumi-lang-yaml=\"`timeLiteral`\" pulumi-lang-java=\"`timeLiteral`\">`time_literal`</span>, <span pulumi-lang-nodejs=\"`multiValues`\" pulumi-lang-dotnet=\"`MultiValues`\" pulumi-lang-go=\"`multiValues`\" pulumi-lang-python=\"`multi_values`\" pulumi-lang-yaml=\"`multiValues`\" pulumi-lang-java=\"`multiValues`\">`multi_values`</span>.\n","type":"string"}},"required":["controlType","esqlQuery","selectedOptions","variableName","variableType"],"type":"object"},"elasticstack:index/KibanaDashboardPinnedPanelEsqlControlConfigDisplaySettings:KibanaDashboardPinnedPanelEsqlControlConfigDisplaySettings":{"properties":{"hideActionBar":{"description":"Whether to hide the action bar on the control.\n","type":"boolean"},"hideExclude":{"description":"Whether to hide the exclude option.\n","type":"boolean"},"hideExists":{"description":"Whether to hide the exists filter option.\n","type":"boolean"},"hideSort":{"description":"Whether to hide the sort option.\n","type":"boolean"},"placeholder":{"description":"Placeholder text shown when no option is selected.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPinnedPanelOptionsListControlConfig:KibanaDashboardPinnedPanelOptionsListControlConfig":{"properties":{"dataViewId":{"description":"The ID of the data view that the control is tied to.\n","type":"string"},"displaySettings":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanelOptionsListControlConfigDisplaySettings:KibanaDashboardPinnedPanelOptionsListControlConfigDisplaySettings","description":"Display preferences for the control widget.\n"},"exclude":{"description":"When true, selected options are used as an exclusion filter rather than an inclusion filter.\n","type":"boolean"},"existsSelected":{"description":"When true, the control filters for documents where the field exists.\n","type":"boolean"},"fieldName":{"description":"The name of the field in the data view that the control is tied to.\n","type":"string"},"ignoreValidations":{"description":"Whether the control skips field-level validation against the data view.\n","type":"boolean"},"runPastTimeout":{"description":"When true, the control continues to show results even when the underlying query times out.\n","type":"boolean"},"searchTechnique":{"description":"The technique used to match suggestions. Must be one of <span pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\">`prefix`</span>, <span pulumi-lang-nodejs=\"`wildcard`\" pulumi-lang-dotnet=\"`Wildcard`\" pulumi-lang-go=\"`wildcard`\" pulumi-lang-python=\"`wildcard`\" pulumi-lang-yaml=\"`wildcard`\" pulumi-lang-java=\"`wildcard`\">`wildcard`</span>, or <span pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\">`exact`</span> when set.\n","type":"string"},"selectedOptions":{"description":"The initially or persistently selected option values. All values are represented as strings.\n","items":{"type":"string"},"type":"array"},"singleSelect":{"description":"When true, only one option may be selected at a time.\n","type":"boolean"},"sort":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardPinnedPanelOptionsListControlConfigSort:KibanaDashboardPinnedPanelOptionsListControlConfigSort","description":"Default sort configuration for the suggestion list.\n"},"title":{"description":"Human-readable label displayed above the control.\n","type":"string"},"useGlobalFilters":{"description":"Whether the control applies the dashboard's global filters to its own query.\n","type":"boolean"}},"required":["dataViewId","fieldName"],"type":"object"},"elasticstack:index/KibanaDashboardPinnedPanelOptionsListControlConfigDisplaySettings:KibanaDashboardPinnedPanelOptionsListControlConfigDisplaySettings":{"properties":{"hideActionBar":{"description":"When true, hides the action bar on the control.\n","type":"boolean"},"hideExclude":{"description":"When true, hides the exclude toggle.\n","type":"boolean"},"hideExists":{"description":"When true, hides the exists filter option.\n","type":"boolean"},"hideSort":{"description":"When true, hides the sort control.\n","type":"boolean"},"placeholder":{"description":"Placeholder text shown when no option is selected.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardPinnedPanelOptionsListControlConfigSort:KibanaDashboardPinnedPanelOptionsListControlConfigSort":{"properties":{"by":{"description":"The field or criterion to sort by. Must be one of `_count` or `_key`.\n","type":"string"},"direction":{"description":"The sort direction. Must be one of <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span> or <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.\n","type":"string"}},"required":["by","direction"],"type":"object"},"elasticstack:index/KibanaDashboardPinnedPanelRangeSliderControlConfig:KibanaDashboardPinnedPanelRangeSliderControlConfig":{"properties":{"dataViewId":{"description":"The ID of the data view that the control is tied to.\n","type":"string"},"fieldName":{"description":"The name of the field in the data view that the control is tied to.\n","type":"string"},"ignoreValidations":{"description":"Whether to suppress validation errors during intermediate states.\n","type":"boolean"},"step":{"description":"The step size for the range slider. Stored as float32 to match the Kibana API type and avoid refresh drift.\n","type":"number"},"title":{"description":"A human-readable title for the control.\n","type":"string"},"useGlobalFilters":{"description":"Whether the control respects dashboard-level filters.\n","type":"boolean"},"values":{"description":"Initial range as a list of exactly 2 strings: [min, max].\n","items":{"type":"string"},"type":"array"}},"required":["dataViewId","fieldName"],"type":"object"},"elasticstack:index/KibanaDashboardPinnedPanelTimeSliderControlConfig:KibanaDashboardPinnedPanelTimeSliderControlConfig":{"properties":{"endPercentageOfTimeRange":{"description":"End of the visible time window as a fraction of the dashboard global range (0.0–1.0). Float32 in state matches the Kibana API and avoids refresh drift.\n","type":"number"},"isAnchored":{"description":"Whether the start of the time window is anchored (fixed), so only the end slides.\n","type":"boolean"},"startPercentageOfTimeRange":{"description":"Start of the visible time window as a fraction of the dashboard global range (0.0–1.0). Float32 in state matches the Kibana API and avoids refresh drift.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardQuery:KibanaDashboardQuery":{"properties":{"json":{"description":"Query as normalized JSON for the object branch of the API union. Exactly one of <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span> or <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span> must be set.\n","type":"string"},"language":{"description":"Query language (<span pulumi-lang-nodejs=\"`kql`\" pulumi-lang-dotnet=\"`Kql`\" pulumi-lang-go=\"`kql`\" pulumi-lang-python=\"`kql`\" pulumi-lang-yaml=\"`kql`\" pulumi-lang-java=\"`kql`\">`kql`</span> or <span pulumi-lang-nodejs=\"`lucene`\" pulumi-lang-dotnet=\"`Lucene`\" pulumi-lang-go=\"`lucene`\" pulumi-lang-python=\"`lucene`\" pulumi-lang-yaml=\"`lucene`\" pulumi-lang-java=\"`lucene`\">`lucene`</span>).\n","type":"string"},"text":{"description":"Query string for KQL or Lucene. Exactly one of <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span> or <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span> must be set.\n","type":"string"}},"required":["language"],"type":"object"},"elasticstack:index/KibanaDashboardRefreshInterval:KibanaDashboardRefreshInterval":{"properties":{"pause":{"description":"When true, auto-refresh is paused.\n","type":"boolean"},"value":{"description":"Refresh interval in milliseconds when not paused.\n","type":"number"}},"required":["pause","value"],"type":"object"},"elasticstack:index/KibanaDashboardSection:KibanaDashboardSection":{"language":{"nodejs":{"requiredOutputs":["grid","id","title"]}},"properties":{"collapsed":{"description":"The collapsed state of the section.\n","type":"boolean"},"grid":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionGrid:KibanaDashboardSectionGrid","description":"The grid coordinates of the section.\n"},"id":{"description":"The identifier of the section (API <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span>).\n","type":"string"},"panels":{"description":"The panels to display in the section.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanel:KibanaDashboardSectionPanel"},"type":"array"},"title":{"description":"The title of the section.\n","type":"string"}},"required":["grid","title"],"type":"object"},"elasticstack:index/KibanaDashboardSectionGrid:KibanaDashboardSectionGrid":{"properties":{"y":{"description":"The Y coordinate.\n","type":"number"}},"required":["y"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanel:KibanaDashboardSectionPanel":{"language":{"nodejs":{"requiredOutputs":["configJson","grid","id","type"]}},"properties":{"configJson":{"description":"The configuration of the panel as a JSON string. Practitioner-authored panel-level <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span> is valid only when <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> is <span pulumi-lang-nodejs=\"`markdown`\" pulumi-lang-dotnet=\"`Markdown`\" pulumi-lang-go=\"`markdown`\" pulumi-lang-python=\"`markdown`\" pulumi-lang-yaml=\"`markdown`\" pulumi-lang-java=\"`markdown`\">`markdown`</span> or <span pulumi-lang-nodejs=\"`vis`\" pulumi-lang-dotnet=\"`Vis`\" pulumi-lang-go=\"`vis`\" pulumi-lang-python=\"`vis`\" pulumi-lang-yaml=\"`vis`\" pulumi-lang-java=\"`vis`\">`vis`</span>. Typed panel kinds such as <span pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\">`image`</span>, <span pulumi-lang-nodejs=\"`sloAlerts`\" pulumi-lang-dotnet=\"`SloAlerts`\" pulumi-lang-go=\"`sloAlerts`\" pulumi-lang-python=\"`slo_alerts`\" pulumi-lang-yaml=\"`sloAlerts`\" pulumi-lang-java=\"`sloAlerts`\">`slo_alerts`</span>, and <span pulumi-lang-nodejs=\"`discoverSession`\" pulumi-lang-dotnet=\"`DiscoverSession`\" pulumi-lang-go=\"`discoverSession`\" pulumi-lang-python=\"`discover_session`\" pulumi-lang-yaml=\"`discoverSession`\" pulumi-lang-java=\"`discoverSession`\">`discover_session`</span> use their dedicated blocks (<span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>), not panel-level <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>. Mutually exclusive with <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n","type":"string"},"discoverSessionConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfig:KibanaDashboardSectionPanelDiscoverSessionConfig","description":"Configuration for a <span pulumi-lang-nodejs=\"`discoverSession`\" pulumi-lang-dotnet=\"`DiscoverSession`\" pulumi-lang-go=\"`discoverSession`\" pulumi-lang-python=\"`discover_session`\" pulumi-lang-yaml=\"`discoverSession`\" pulumi-lang-java=\"`discoverSession`\">`discover_session`</span> panel (`kbn-dashboard-panel-type-discover_session`). Set exactly one of <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> or <span pulumi-lang-nodejs=\"`byReference`\" pulumi-lang-dotnet=\"`ByReference`\" pulumi-lang-go=\"`byReference`\" pulumi-lang-python=\"`by_reference`\" pulumi-lang-yaml=\"`byReference`\" pulumi-lang-java=\"`byReference`\">`by_reference`</span>. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>.\n"},"esqlControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelEsqlControlConfig:KibanaDashboardSectionPanelEsqlControlConfig","description":"Configuration for an ES|QL control panel. Use this to manage ES|QL variable controls on a dashboard. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"grid":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelGrid:KibanaDashboardSectionPanelGrid","description":"The grid coordinates and dimensions of the panel.\n"},"id":{"description":"The identifier of the panel (API <span pulumi-lang-nodejs=\"`id`\" pulumi-lang-dotnet=\"`Id`\" pulumi-lang-go=\"`id`\" pulumi-lang-python=\"`id`\" pulumi-lang-yaml=\"`id`\" pulumi-lang-java=\"`id`\">`id`</span>).\n","type":"string"},"imageConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelImageConfig:KibanaDashboardSectionPanelImageConfig","description":"Configuration for an <span pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\">`image`</span> panel (`kbn-dashboard-panel-type-image`). Required when <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> is <span pulumi-lang-nodejs=\"`image`\" pulumi-lang-dotnet=\"`Image`\" pulumi-lang-go=\"`image`\" pulumi-lang-python=\"`image`\" pulumi-lang-yaml=\"`image`\" pulumi-lang-java=\"`image`\">`image`</span>. References the Kibana Dashboard API image embeddable <span pulumi-lang-nodejs=\"`config`\" pulumi-lang-dotnet=\"`Config`\" pulumi-lang-go=\"`config`\" pulumi-lang-python=\"`config`\" pulumi-lang-yaml=\"`config`\" pulumi-lang-java=\"`config`\">`config`</span> shape. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"markdownConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelMarkdownConfig:KibanaDashboardSectionPanelMarkdownConfig","description":"Configuration for a <span pulumi-lang-nodejs=\"`markdown`\" pulumi-lang-dotnet=\"`Markdown`\" pulumi-lang-go=\"`markdown`\" pulumi-lang-python=\"`markdown`\" pulumi-lang-yaml=\"`markdown`\" pulumi-lang-java=\"`markdown`\">`markdown`</span> panel (the Kibana Dashboard API `kbn-dashboard-panel-type-markdown` shape). Set exactly one of <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> (inline <span pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\">`content`</span> with required nested <span pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\">`settings`</span>) or <span pulumi-lang-nodejs=\"`byReference`\" pulumi-lang-dotnet=\"`ByReference`\" pulumi-lang-go=\"`byReference`\" pulumi-lang-python=\"`by_reference`\" pulumi-lang-yaml=\"`byReference`\" pulumi-lang-java=\"`byReference`\">`by_reference`</span> (existing library item via <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>). Presentation fields (<span pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\">`description`</span>, <span pulumi-lang-nodejs=\"`hideTitle`\" pulumi-lang-dotnet=\"`HideTitle`\" pulumi-lang-go=\"`hideTitle`\" pulumi-lang-python=\"`hide_title`\" pulumi-lang-yaml=\"`hideTitle`\" pulumi-lang-java=\"`hideTitle`\">`hide_title`</span>, <span pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\">`title`</span>, <span pulumi-lang-nodejs=\"`hideBorder`\" pulumi-lang-dotnet=\"`HideBorder`\" pulumi-lang-go=\"`hideBorder`\" pulumi-lang-python=\"`hide_border`\" pulumi-lang-yaml=\"`hideBorder`\" pulumi-lang-java=\"`hideBorder`\">`hide_border`</span>) are supported in both branches. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"optionsListControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelOptionsListControlConfig:KibanaDashboardSectionPanelOptionsListControlConfig","description":"Configuration for an options list control panel. Provides a dropdown or multi-select filter based on a field in a data view. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"rangeSliderControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelRangeSliderControlConfig:KibanaDashboardSectionPanelRangeSliderControlConfig","description":"Configuration for a range slider control panel. Provides a min/max range filter tied to a data view field. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"sloAlertsConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloAlertsConfig:KibanaDashboardSectionPanelSloAlertsConfig","description":"Configuration for an <span pulumi-lang-nodejs=\"`sloAlerts`\" pulumi-lang-dotnet=\"`SloAlerts`\" pulumi-lang-go=\"`sloAlerts`\" pulumi-lang-python=\"`slo_alerts`\" pulumi-lang-yaml=\"`sloAlerts`\" pulumi-lang-java=\"`sloAlerts`\">`slo_alerts`</span> panel (`kbn-dashboard-panel-type-slo_alerts`). Required when <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> is <span pulumi-lang-nodejs=\"`sloAlerts`\" pulumi-lang-dotnet=\"`SloAlerts`\" pulumi-lang-go=\"`sloAlerts`\" pulumi-lang-python=\"`slo_alerts`\" pulumi-lang-yaml=\"`sloAlerts`\" pulumi-lang-java=\"`sloAlerts`\">`slo_alerts`</span>. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"sloBurnRateConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloBurnRateConfig:KibanaDashboardSectionPanelSloBurnRateConfig","description":"Configuration for an SLO burn rate panel. Use this for panels that visualize the burn rate of an SLO over a configurable look-back window. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"sloErrorBudgetConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloErrorBudgetConfig:KibanaDashboardSectionPanelSloErrorBudgetConfig","description":"Configuration for an SLO error budget panel. Displays the burn chart of remaining error budget for a specific SLO. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"sloOverviewConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloOverviewConfig:KibanaDashboardSectionPanelSloOverviewConfig","description":"Configuration for an SLO overview panel. Use either <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span> (for a single SLO) or <span pulumi-lang-nodejs=\"`groups`\" pulumi-lang-dotnet=\"`Groups`\" pulumi-lang-go=\"`groups`\" pulumi-lang-python=\"`groups`\" pulumi-lang-yaml=\"`groups`\" pulumi-lang-java=\"`groups`\">`groups`</span> (for grouped SLO overview). Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"syntheticsMonitorsConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsMonitorsConfig:KibanaDashboardSectionPanelSyntheticsMonitorsConfig","description":"Configuration for a Synthetics monitors panel. Displays a table of Elastic Synthetics monitors and their current status. All fields are optional — omit the block entirely for a bare panel with no filtering. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"syntheticsStatsOverviewConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsStatsOverviewConfig:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfig","description":"Configuration for a Synthetics stats overview panel. All fields are optional; an absent or empty block shows statistics for all monitors visible within the space. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"timeSliderControlConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelTimeSliderControlConfig:KibanaDashboardSectionPanelTimeSliderControlConfig","description":"Configuration for a time slider control panel. Controls the visible time window within the dashboard's global time range. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"},"type":{"description":"The type of the panel (e.g. 'markdown', 'vis').\n","type":"string"},"visConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfig:KibanaDashboardSectionPanelVisConfig","description":"Configuration for a <span pulumi-lang-nodejs=\"`vis`\" pulumi-lang-dotnet=\"`Vis`\" pulumi-lang-go=\"`vis`\" pulumi-lang-python=\"`vis`\" pulumi-lang-yaml=\"`vis`\" pulumi-lang-java=\"`vis`\">`vis`</span> panel (`type = \"vis\"`). Typed alternative to panel-level <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>: set exactly one of <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> (exactly one of 12 Lens chart kinds) or <span pulumi-lang-nodejs=\"`byReference`\" pulumi-lang-dotnet=\"`ByReference`\" pulumi-lang-go=\"`byReference`\" pulumi-lang-python=\"`by_reference`\" pulumi-lang-yaml=\"`byReference`\" pulumi-lang-java=\"`byReference`\">`by_reference`</span>. With <span pulumi-lang-nodejs=\"`byReference`\" pulumi-lang-dotnet=\"`ByReference`\" pulumi-lang-go=\"`byReference`\" pulumi-lang-python=\"`by_reference`\" pulumi-lang-yaml=\"`byReference`\" pulumi-lang-java=\"`byReference`\">`by_reference`</span>, use structured <span pulumi-lang-nodejs=\"`drilldowns`\" pulumi-lang-dotnet=\"`Drilldowns`\" pulumi-lang-go=\"`drilldowns`\" pulumi-lang-python=\"`drilldowns`\" pulumi-lang-yaml=\"`drilldowns`\" pulumi-lang-java=\"`drilldowns`\">`drilldowns`</span> and optional <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. Mutually exclusive with <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span>, <span pulumi-lang-nodejs=\"`sloBurnRateConfig`\" pulumi-lang-dotnet=\"`SloBurnRateConfig`\" pulumi-lang-go=\"`sloBurnRateConfig`\" pulumi-lang-python=\"`slo_burn_rate_config`\" pulumi-lang-yaml=\"`sloBurnRateConfig`\" pulumi-lang-java=\"`sloBurnRateConfig`\">`slo_burn_rate_config`</span>, <span pulumi-lang-nodejs=\"`sloErrorBudgetConfig`\" pulumi-lang-dotnet=\"`SloErrorBudgetConfig`\" pulumi-lang-go=\"`sloErrorBudgetConfig`\" pulumi-lang-python=\"`slo_error_budget_config`\" pulumi-lang-yaml=\"`sloErrorBudgetConfig`\" pulumi-lang-java=\"`sloErrorBudgetConfig`\">`slo_error_budget_config`</span>, <span pulumi-lang-nodejs=\"`sloOverviewConfig`\" pulumi-lang-dotnet=\"`SloOverviewConfig`\" pulumi-lang-go=\"`sloOverviewConfig`\" pulumi-lang-python=\"`slo_overview_config`\" pulumi-lang-yaml=\"`sloOverviewConfig`\" pulumi-lang-java=\"`sloOverviewConfig`\">`slo_overview_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsMonitorsConfig`\" pulumi-lang-dotnet=\"`SyntheticsMonitorsConfig`\" pulumi-lang-go=\"`syntheticsMonitorsConfig`\" pulumi-lang-python=\"`synthetics_monitors_config`\" pulumi-lang-yaml=\"`syntheticsMonitorsConfig`\" pulumi-lang-java=\"`syntheticsMonitorsConfig`\">`synthetics_monitors_config`</span>, <span pulumi-lang-nodejs=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-dotnet=\"`SyntheticsStatsOverviewConfig`\" pulumi-lang-go=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-python=\"`synthetics_stats_overview_config`\" pulumi-lang-yaml=\"`syntheticsStatsOverviewConfig`\" pulumi-lang-java=\"`syntheticsStatsOverviewConfig`\">`synthetics_stats_overview_config`</span>, <span pulumi-lang-nodejs=\"`timeSliderControlConfig`\" pulumi-lang-dotnet=\"`TimeSliderControlConfig`\" pulumi-lang-go=\"`timeSliderControlConfig`\" pulumi-lang-python=\"`time_slider_control_config`\" pulumi-lang-yaml=\"`timeSliderControlConfig`\" pulumi-lang-java=\"`timeSliderControlConfig`\">`time_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`optionsListControlConfig`\" pulumi-lang-dotnet=\"`OptionsListControlConfig`\" pulumi-lang-go=\"`optionsListControlConfig`\" pulumi-lang-python=\"`options_list_control_config`\" pulumi-lang-yaml=\"`optionsListControlConfig`\" pulumi-lang-java=\"`optionsListControlConfig`\">`options_list_control_config`</span>, <span pulumi-lang-nodejs=\"`rangeSliderControlConfig`\" pulumi-lang-dotnet=\"`RangeSliderControlConfig`\" pulumi-lang-go=\"`rangeSliderControlConfig`\" pulumi-lang-python=\"`range_slider_control_config`\" pulumi-lang-yaml=\"`rangeSliderControlConfig`\" pulumi-lang-java=\"`rangeSliderControlConfig`\">`range_slider_control_config`</span>, <span pulumi-lang-nodejs=\"`esqlControlConfig`\" pulumi-lang-dotnet=\"`EsqlControlConfig`\" pulumi-lang-go=\"`esqlControlConfig`\" pulumi-lang-python=\"`esql_control_config`\" pulumi-lang-yaml=\"`esqlControlConfig`\" pulumi-lang-java=\"`esqlControlConfig`\">`esql_control_config`</span>, <span pulumi-lang-nodejs=\"`markdownConfig`\" pulumi-lang-dotnet=\"`MarkdownConfig`\" pulumi-lang-go=\"`markdownConfig`\" pulumi-lang-python=\"`markdown_config`\" pulumi-lang-yaml=\"`markdownConfig`\" pulumi-lang-java=\"`markdownConfig`\">`markdown_config`</span>, <span pulumi-lang-nodejs=\"`imageConfig`\" pulumi-lang-dotnet=\"`ImageConfig`\" pulumi-lang-go=\"`imageConfig`\" pulumi-lang-python=\"`image_config`\" pulumi-lang-yaml=\"`imageConfig`\" pulumi-lang-java=\"`imageConfig`\">`image_config`</span>, <span pulumi-lang-nodejs=\"`sloAlertsConfig`\" pulumi-lang-dotnet=\"`SloAlertsConfig`\" pulumi-lang-go=\"`sloAlertsConfig`\" pulumi-lang-python=\"`slo_alerts_config`\" pulumi-lang-yaml=\"`sloAlertsConfig`\" pulumi-lang-java=\"`sloAlertsConfig`\">`slo_alerts_config`</span>, <span pulumi-lang-nodejs=\"`discoverSessionConfig`\" pulumi-lang-dotnet=\"`DiscoverSessionConfig`\" pulumi-lang-go=\"`discoverSessionConfig`\" pulumi-lang-python=\"`discover_session_config`\" pulumi-lang-yaml=\"`discoverSessionConfig`\" pulumi-lang-java=\"`discoverSessionConfig`\">`discover_session_config`</span>.\n"}},"required":["grid","type"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfig:KibanaDashboardSectionPanelDiscoverSessionConfig":{"properties":{"byReference":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByReference:KibanaDashboardSectionPanelDiscoverSessionConfigByReference","description":"Reference an existing Discover session saved object via <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>. Client-side <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> JSON is not modeled in v1 (see change design). Omit <span pulumi-lang-nodejs=\"`selectedTabId`\" pulumi-lang-dotnet=\"`SelectedTabId`\" pulumi-lang-go=\"`selectedTabId`\" pulumi-lang-python=\"`selected_tab_id`\" pulumi-lang-yaml=\"`selectedTabId`\" pulumi-lang-java=\"`selectedTabId`\">`selected_tab_id`</span> to let Kibana pick the tab; after apply the resolved id is stored in state.\n"},"byValue":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValue:KibanaDashboardSectionPanelDiscoverSessionConfigByValue"},"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Typed URL drilldowns for this panel. The API only supports <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span> with trigger <span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span>; those values are set automatically when writing to Kibana.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigDrilldown:KibanaDashboardSectionPanelDiscoverSessionConfigDrilldown"},"type":"array"},"hideBorder":{"description":"When true, suppresses the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the panel title.\n","type":"boolean"},"title":{"description":"Optional panel title.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByReference:KibanaDashboardSectionPanelDiscoverSessionConfigByReference":{"language":{"nodejs":{"requiredOutputs":["refId","selectedTabId"]}},"properties":{"overrides":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverrides:KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverrides","description":"Optional typed presentation overrides applied on top of the referenced session.\n"},"refId":{"description":"Discover session saved object reference id (<span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span> in the API).\n","type":"string"},"selectedTabId":{"description":"Tab id within the referenced Discover session. Omit to let Kibana choose; after apply the API value is reflected here.\n","type":"string"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByReferenceTimeRange:KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceTimeRange","description":"Optional time range for this panel. When omitted, the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> is sent to the API at write time while this attribute stays null in state (REQ-009).\n"}},"required":["refId"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverrides:KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverrides":{"properties":{"columnOrders":{"description":"Overrides column order relative to the referenced Discover session.\n","items":{"type":"string"},"type":"array"},"columnSettings":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverridesColumnSettings:KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverridesColumnSettings"},"description":"Per-column presentation settings keyed by field name (for example column widths).\n","type":"object"},"density":{"description":"Overrides data grid density.\n","type":"string"},"headerRowHeight":{"description":"Overrides header row height: numbers \"1\"–\"5\" or \"auto\".\n","type":"string"},"rowHeight":{"description":"Overrides data row height: numbers \"1\"–\"20\" or \"auto\".\n","type":"string"},"rowsPerPage":{"description":"Overrides rows per page.\n","type":"number"},"sampleSize":{"description":"Overrides sample size.\n","type":"number"},"sorts":{"description":"Overrides sort configuration relative to the referenced Discover session.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverridesSort:KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverridesSort"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverridesColumnSettings:KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverridesColumnSettings":{"properties":{"width":{"description":"Optional column width in pixels.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverridesSort:KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceOverridesSort":{"properties":{"direction":{"description":"Sort direction.\n","type":"string"},"name":{"description":"Field name to sort by.\n","type":"string"}},"required":["direction","name"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceTimeRange:KibanaDashboardSectionPanelDiscoverSessionConfigByReferenceTimeRange":{"properties":{"from":{"description":"Start of the time range (e.g., 'now-15m', '2023-01-01T00:00:00Z').\n","type":"string"},"mode":{"description":"Optional time range mode. When set, must be <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>.\n","type":"string"},"to":{"description":"End of the time range (e.g., 'now', '2023-12-31T23:59:59Z').\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValue:KibanaDashboardSectionPanelDiscoverSessionConfigByValue":{"properties":{"tab":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTab:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTab","description":"Single Discover tab configuration (the API currently allows one tab). Exactly one of <span pulumi-lang-nodejs=\"`dsl`\" pulumi-lang-dotnet=\"`Dsl`\" pulumi-lang-go=\"`dsl`\" pulumi-lang-python=\"`dsl`\" pulumi-lang-yaml=\"`dsl`\" pulumi-lang-java=\"`dsl`\">`dsl`</span> or <span pulumi-lang-nodejs=\"`esql`\" pulumi-lang-dotnet=\"`Esql`\" pulumi-lang-go=\"`esql`\" pulumi-lang-python=\"`esql`\" pulumi-lang-yaml=\"`esql`\" pulumi-lang-java=\"`esql`\">`esql`</span> must be set.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTimeRange:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTimeRange","description":"Optional time range for this panel. When omitted, the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> is sent to the API at write time while this attribute stays null in state (REQ-009).\n"}},"required":["tab"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTab:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTab":{"properties":{"dsl":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDsl:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDsl","description":"DSL / data view Discover tab.\n"},"esql":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsql:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsql","description":"ES|QL Discover tab.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDsl:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDsl":{"properties":{"columnOrders":{"description":"Ordered list of field names shown in the Discover grid.\n","items":{"type":"string"},"type":"array"},"columnSettings":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslColumnSettings:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslColumnSettings"},"description":"Per-column presentation settings keyed by field name (for example column widths).\n","type":"object"},"dataSourceJson":{"description":"Normalized JSON for the tab <span pulumi-lang-nodejs=\"`dataSource`\" pulumi-lang-dotnet=\"`DataSource`\" pulumi-lang-go=\"`dataSource`\" pulumi-lang-python=\"`data_source`\" pulumi-lang-yaml=\"`dataSource`\" pulumi-lang-java=\"`dataSource`\">`data_source`</span> field. Author an object that matches the **Kibana Dashboard API** schema for `kbn-dashboard-panel-type-discover_session` tabs: for `tab.dsl`, the polymorphic DSL data-source union (<span pulumi-lang-nodejs=\"`dataViewReference`\" pulumi-lang-dotnet=\"`DataViewReference`\" pulumi-lang-go=\"`dataViewReference`\" pulumi-lang-python=\"`data_view_reference`\" pulumi-lang-yaml=\"`dataViewReference`\" pulumi-lang-java=\"`dataViewReference`\">`data_view_reference`</span>, <span pulumi-lang-nodejs=\"`dataViewSpec`\" pulumi-lang-dotnet=\"`DataViewSpec`\" pulumi-lang-go=\"`dataViewSpec`\" pulumi-lang-python=\"`data_view_spec`\" pulumi-lang-yaml=\"`dataViewSpec`\" pulumi-lang-java=\"`dataViewSpec`\">`data_view_spec`</span>, etc. — see the OpenAPI bundled with the [Kibana REST API reference](https://www.elastic.co/docs/api/doc/kibana)); for `tab.esql`, use the ES|QL data-source shape (`type = \"esql\"` plus query and related fields).\n","type":"string"},"density":{"description":"Data grid density.\n","type":"string"},"filters":{"description":"Dashboard-level saved filter pills (`kbn-dashboard-data.filters` in the Kibana Dashboard API). Each element is one filter in display order. The JSON shape for each <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> matches the dashboard filters discriminated union (including DSL and spatial variants), consistent with per-panel <span pulumi-lang-nodejs=\"`filterJson`\" pulumi-lang-dotnet=\"`FilterJson`\" pulumi-lang-go=\"`filterJson`\" pulumi-lang-python=\"`filter_json`\" pulumi-lang-yaml=\"`filterJson`\" pulumi-lang-java=\"`filterJson`\">`filter_json`</span> on Lens chart blocks.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslFilter:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslFilter"},"type":"array"},"headerRowHeight":{"description":"Header row height: numbers \"1\"–\"5\" (as decimal strings) or \"auto\".\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslQuery:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslQuery","description":"Dashboard-level query. Aligns with the Kibana Dashboard API <span pulumi-lang-nodejs=\"`query`\" pulumi-lang-dotnet=\"`Query`\" pulumi-lang-go=\"`query`\" pulumi-lang-python=\"`query`\" pulumi-lang-yaml=\"`query`\" pulumi-lang-java=\"`query`\">`query`</span> object: <span pulumi-lang-nodejs=\"`language`\" pulumi-lang-dotnet=\"`Language`\" pulumi-lang-go=\"`language`\" pulumi-lang-python=\"`language`\" pulumi-lang-yaml=\"`language`\" pulumi-lang-java=\"`language`\">`language`</span> plus exactly one of <span pulumi-lang-nodejs=\"`text`\" pulumi-lang-dotnet=\"`Text`\" pulumi-lang-go=\"`text`\" pulumi-lang-python=\"`text`\" pulumi-lang-yaml=\"`text`\" pulumi-lang-java=\"`text`\">`text`</span> (string branch) or <span pulumi-lang-nodejs=\"`json`\" pulumi-lang-dotnet=\"`Json`\" pulumi-lang-go=\"`json`\" pulumi-lang-python=\"`json`\" pulumi-lang-yaml=\"`json`\" pulumi-lang-java=\"`json`\">`json`</span> (object branch).\n"},"rowHeight":{"description":"Data row height: numbers \"1\"–\"20\" (as decimal strings) or \"auto\".\n","type":"string"},"rowsPerPage":{"description":"Rows per page in the Discover grid.\n","type":"number"},"sampleSize":{"description":"Sample size (documents) for the Discover grid.\n","type":"number"},"sorts":{"description":"Sort configuration for the Discover grid.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslSort:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslSort"},"type":"array"},"viewMode":{"description":"Discover view mode for the DSL tab: <span pulumi-lang-nodejs=\"`documents`\" pulumi-lang-dotnet=\"`Documents`\" pulumi-lang-go=\"`documents`\" pulumi-lang-python=\"`documents`\" pulumi-lang-yaml=\"`documents`\" pulumi-lang-java=\"`documents`\">`documents`</span> (hits), <span pulumi-lang-nodejs=\"`patterns`\" pulumi-lang-dotnet=\"`Patterns`\" pulumi-lang-go=\"`patterns`\" pulumi-lang-python=\"`patterns`\" pulumi-lang-yaml=\"`patterns`\" pulumi-lang-java=\"`patterns`\">`patterns`</span>, or <span pulumi-lang-nodejs=\"`aggregated`\" pulumi-lang-dotnet=\"`Aggregated`\" pulumi-lang-go=\"`aggregated`\" pulumi-lang-python=\"`aggregated`\" pulumi-lang-yaml=\"`aggregated`\" pulumi-lang-java=\"`aggregated`\">`aggregated`</span> (field statistics). Matches the Kibana Dashboard API enum values.\n","type":"string"}},"required":["dataSourceJson","query"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslColumnSettings:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslColumnSettings":{"properties":{"width":{"description":"Optional column width in pixels.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslFilter:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslQuery:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslSort:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabDslSort":{"properties":{"direction":{"description":"Sort direction.\n","type":"string"},"name":{"description":"Field name to sort by.\n","type":"string"}},"required":["direction","name"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsql:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsql":{"properties":{"columnOrders":{"description":"Ordered list of field names shown in the Discover grid.\n","items":{"type":"string"},"type":"array"},"columnSettings":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsqlColumnSettings:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsqlColumnSettings"},"description":"Per-column presentation settings keyed by field name (for example column widths).\n","type":"object"},"dataSourceJson":{"description":"Normalized JSON for the tab <span pulumi-lang-nodejs=\"`dataSource`\" pulumi-lang-dotnet=\"`DataSource`\" pulumi-lang-go=\"`dataSource`\" pulumi-lang-python=\"`data_source`\" pulumi-lang-yaml=\"`dataSource`\" pulumi-lang-java=\"`dataSource`\">`data_source`</span> field. Author an object that matches the **Kibana Dashboard API** schema for `kbn-dashboard-panel-type-discover_session` tabs: for `tab.dsl`, the polymorphic DSL data-source union (<span pulumi-lang-nodejs=\"`dataViewReference`\" pulumi-lang-dotnet=\"`DataViewReference`\" pulumi-lang-go=\"`dataViewReference`\" pulumi-lang-python=\"`data_view_reference`\" pulumi-lang-yaml=\"`dataViewReference`\" pulumi-lang-java=\"`dataViewReference`\">`data_view_reference`</span>, <span pulumi-lang-nodejs=\"`dataViewSpec`\" pulumi-lang-dotnet=\"`DataViewSpec`\" pulumi-lang-go=\"`dataViewSpec`\" pulumi-lang-python=\"`data_view_spec`\" pulumi-lang-yaml=\"`dataViewSpec`\" pulumi-lang-java=\"`dataViewSpec`\">`data_view_spec`</span>, etc. — see the OpenAPI bundled with the [Kibana REST API reference](https://www.elastic.co/docs/api/doc/kibana)); for `tab.esql`, use the ES|QL data-source shape (`type = \"esql\"` plus query and related fields).\n","type":"string"},"density":{"description":"Data grid density.\n","type":"string"},"headerRowHeight":{"description":"Header row height: numbers \"1\"–\"5\" (as decimal strings) or \"auto\".\n","type":"string"},"rowHeight":{"description":"Data row height: numbers \"1\"–\"20\" (as decimal strings) or \"auto\".\n","type":"string"},"sorts":{"description":"Sort configuration for the Discover grid.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsqlSort:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsqlSort"},"type":"array"}},"required":["dataSourceJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsqlColumnSettings:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsqlColumnSettings":{"properties":{"width":{"description":"Optional column width in pixels.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsqlSort:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTabEsqlSort":{"properties":{"direction":{"description":"Sort direction.\n","type":"string"},"name":{"description":"Field name to sort by.\n","type":"string"}},"required":["direction","name"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigByValueTimeRange:KibanaDashboardSectionPanelDiscoverSessionConfigByValueTimeRange":{"properties":{"from":{"description":"Start of the time range (e.g., 'now-15m', '2023-01-01T00:00:00Z').\n","type":"string"},"mode":{"description":"Optional time range mode. When set, must be <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>.\n","type":"string"},"to":{"description":"End of the time range (e.g., 'now', '2023-12-31T23:59:59Z').\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelDiscoverSessionConfigDrilldown:KibanaDashboardSectionPanelDiscoverSessionConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded.\n","type":"boolean"},"label":{"description":"The display label for the drilldown link.\n","type":"string"},"openInNewTab":{"description":"When true, the drilldown URL opens in a new browser tab.\n","type":"boolean"},"url":{"description":"The URL template for the drilldown. Variables are documented at https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelEsqlControlConfig:KibanaDashboardSectionPanelEsqlControlConfig":{"properties":{"availableOptions":{"description":"Pre-populated list of available options shown before the query executes.\n","items":{"type":"string"},"type":"array"},"controlType":{"description":"The control type. Allowed values: `STATIC_VALUES`, `VALUES_FROM_QUERY`.\n","type":"string"},"displaySettings":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelEsqlControlConfigDisplaySettings:KibanaDashboardSectionPanelEsqlControlConfigDisplaySettings","description":"Display configuration for the control widget.\n"},"esqlQuery":{"description":"The ES|QL query used to populate the control's options.\n","type":"string"},"selectedOptions":{"description":"List of currently selected option values for the control.\n","items":{"type":"string"},"type":"array"},"singleSelect":{"description":"When true, restricts the control to single-value selection.\n","type":"boolean"},"title":{"description":"A human-readable title displayed above the control widget.\n","type":"string"},"variableName":{"description":"The ES|QL variable name that this control binds to.\n","type":"string"},"variableType":{"description":"The type of ES|QL variable. Allowed values: <span pulumi-lang-nodejs=\"`fields`\" pulumi-lang-dotnet=\"`Fields`\" pulumi-lang-go=\"`fields`\" pulumi-lang-python=\"`fields`\" pulumi-lang-yaml=\"`fields`\" pulumi-lang-java=\"`fields`\">`fields`</span>, <span pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\">`values`</span>, <span pulumi-lang-nodejs=\"`functions`\" pulumi-lang-dotnet=\"`Functions`\" pulumi-lang-go=\"`functions`\" pulumi-lang-python=\"`functions`\" pulumi-lang-yaml=\"`functions`\" pulumi-lang-java=\"`functions`\">`functions`</span>, <span pulumi-lang-nodejs=\"`timeLiteral`\" pulumi-lang-dotnet=\"`TimeLiteral`\" pulumi-lang-go=\"`timeLiteral`\" pulumi-lang-python=\"`time_literal`\" pulumi-lang-yaml=\"`timeLiteral`\" pulumi-lang-java=\"`timeLiteral`\">`time_literal`</span>, <span pulumi-lang-nodejs=\"`multiValues`\" pulumi-lang-dotnet=\"`MultiValues`\" pulumi-lang-go=\"`multiValues`\" pulumi-lang-python=\"`multi_values`\" pulumi-lang-yaml=\"`multiValues`\" pulumi-lang-java=\"`multiValues`\">`multi_values`</span>.\n","type":"string"}},"required":["controlType","esqlQuery","selectedOptions","variableName","variableType"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelEsqlControlConfigDisplaySettings:KibanaDashboardSectionPanelEsqlControlConfigDisplaySettings":{"properties":{"hideActionBar":{"description":"Whether to hide the action bar on the control.\n","type":"boolean"},"hideExclude":{"description":"Whether to hide the exclude option.\n","type":"boolean"},"hideExists":{"description":"Whether to hide the exists filter option.\n","type":"boolean"},"hideSort":{"description":"Whether to hide the sort option.\n","type":"boolean"},"placeholder":{"description":"Placeholder text shown when no option is selected.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelGrid:KibanaDashboardSectionPanelGrid":{"properties":{"h":{"description":"The height.\n","type":"number"},"w":{"description":"The width.\n","type":"number"},"x":{"description":"The X coordinate.\n","type":"number"},"y":{"description":"The Y coordinate.\n","type":"number"}},"required":["x","y"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelImageConfig:KibanaDashboardSectionPanelImageConfig":{"properties":{"altText":{"description":"Accessible alternate text for the image.\n","type":"string"},"backgroundColor":{"description":"Background color behind the image (CSS color string).\n","type":"string"},"description":{"description":"A short description of the dashboard.\n","type":"string"},"drilldowns":{"description":"Optional drilldown actions for the image panel (max 100 entries). Each element sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span> or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>, matching the Kibana `kbn-dashboard-panel-type-image` `config.drilldowns` discriminated union.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelImageConfigDrilldown:KibanaDashboardSectionPanelImageConfigDrilldown"},"type":"array"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"objectFit":{"type":"string"},"src":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelImageConfigSrc:KibanaDashboardSectionPanelImageConfigSrc","description":"Image source for the panel. Set exactly one nested branch: <span pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\">`file`</span> (uploaded Kibana file id) or <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span> (external image URL). Matches the Kibana Dashboard API `kbn-dashboard-panel-type-image` `config.image_config.src` union.\n"},"title":{"description":"A human-readable title for the dashboard.\n","type":"string"}},"required":["src"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelImageConfigDrilldown:KibanaDashboardSectionPanelImageConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelImageConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelImageConfigDrilldownDashboardDrilldown","description":"Open another dashboard when the image is clicked. Mutually exclusive with <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span> in the same entry.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelImageConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelImageConfigDrilldownUrlDrilldown","description":"URL drilldown entry. Mutually exclusive with <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span> in the same list element.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelImageConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelImageConfigDrilldownDashboardDrilldown":{"properties":{"dashboardId":{"description":"Target dashboard saved object id.\n","type":"string"},"label":{"description":"Label shown for this drilldown.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab. Omit for API default (typically <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n","type":"boolean"},"trigger":{"description":"Dashboard drilldowns on image panels only support <span pulumi-lang-nodejs=\"`onClickImage`\" pulumi-lang-dotnet=\"`OnClickImage`\" pulumi-lang-go=\"`onClickImage`\" pulumi-lang-python=\"`on_click_image`\" pulumi-lang-yaml=\"`onClickImage`\" pulumi-lang-java=\"`onClickImage`\">`on_click_image`</span> (see Kibana `kbn-dashboard-panel-type-image` drilldown schema).\n","type":"string"},"useFilters":{"description":"When true, passes the current dashboard filters to the opened dashboard. Omit for API default (typically <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n","type":"boolean"},"useTimeRange":{"description":"When true, passes the current time range to the opened dashboard. Omit for API default (typically <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>).\n","type":"boolean"}},"required":["dashboardId","label","trigger"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelImageConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelImageConfigDrilldownUrlDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded. Omit to use the API default; unset stays null when the API echoes the default (REQ-009).\n","type":"boolean"},"label":{"description":"Display label shown in the drilldown menu.\n","type":"string"},"openInNewTab":{"description":"When true, opens in a new browser tab. Omit to use the API default; unset stays null when the API echoes the default (REQ-009).\n","type":"boolean"},"trigger":{"description":"When this drilldown runs. Allowed values: <span pulumi-lang-nodejs=\"`onClickImage`\" pulumi-lang-dotnet=\"`OnClickImage`\" pulumi-lang-go=\"`onClickImage`\" pulumi-lang-python=\"`on_click_image`\" pulumi-lang-yaml=\"`onClickImage`\" pulumi-lang-java=\"`onClickImage`\">`on_click_image`</span>, <span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span> (Kibana image panel URL drilldown triggers).\n","type":"string"},"url":{"description":"Templated URL for the drilldown. Variables are documented in the [Kibana drilldown URL template variables](https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable) section of the Elastic docs.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelImageConfigSrc:KibanaDashboardSectionPanelImageConfigSrc":{"properties":{"file":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelImageConfigSrcFile:KibanaDashboardSectionPanelImageConfigSrcFile","description":"Use an uploaded file as the image source. Mutually exclusive with <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span> inside <span pulumi-lang-nodejs=\"`src`\" pulumi-lang-dotnet=\"`Src`\" pulumi-lang-go=\"`src`\" pulumi-lang-python=\"`src`\" pulumi-lang-yaml=\"`src`\" pulumi-lang-java=\"`src`\">`src`</span>.\n"},"url":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelImageConfigSrcUrl:KibanaDashboardSectionPanelImageConfigSrcUrl","description":"Use an external URL as the image source. Mutually exclusive with <span pulumi-lang-nodejs=\"`file`\" pulumi-lang-dotnet=\"`File`\" pulumi-lang-go=\"`file`\" pulumi-lang-python=\"`file`\" pulumi-lang-yaml=\"`file`\" pulumi-lang-java=\"`file`\">`file`</span> inside <span pulumi-lang-nodejs=\"`src`\" pulumi-lang-dotnet=\"`Src`\" pulumi-lang-go=\"`src`\" pulumi-lang-python=\"`src`\" pulumi-lang-yaml=\"`src`\" pulumi-lang-java=\"`src`\">`src`</span>.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelImageConfigSrcFile:KibanaDashboardSectionPanelImageConfigSrcFile":{"properties":{"fileId":{"description":"Kibana file identifier for the uploaded image.\n","type":"string"}},"required":["fileId"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelImageConfigSrcUrl:KibanaDashboardSectionPanelImageConfigSrcUrl":{"properties":{"url":{"description":"HTTPS or HTTP URL of the image.\n","type":"string"}},"required":["url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelMarkdownConfig:KibanaDashboardSectionPanelMarkdownConfig":{"properties":{"byReference":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelMarkdownConfigByReference:KibanaDashboardSectionPanelMarkdownConfigByReference","description":"Reference an existing markdown library item via <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>. Optional <span pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\">`description`</span>, <span pulumi-lang-nodejs=\"`hideTitle`\" pulumi-lang-dotnet=\"`HideTitle`\" pulumi-lang-go=\"`hideTitle`\" pulumi-lang-python=\"`hide_title`\" pulumi-lang-yaml=\"`hideTitle`\" pulumi-lang-java=\"`hideTitle`\">`hide_title`</span>, <span pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\">`title`</span>, and <span pulumi-lang-nodejs=\"`hideBorder`\" pulumi-lang-dotnet=\"`HideBorder`\" pulumi-lang-go=\"`hideBorder`\" pulumi-lang-python=\"`hide_border`\" pulumi-lang-yaml=\"`hideBorder`\" pulumi-lang-java=\"`hideBorder`\">`hide_border`</span>.\n"},"byValue":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelMarkdownConfigByValue:KibanaDashboardSectionPanelMarkdownConfigByValue","description":"Inline markdown: required <span pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\">`content`</span> and nested <span pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\">`settings`</span> (API <span pulumi-lang-nodejs=\"`settings`\" pulumi-lang-dotnet=\"`Settings`\" pulumi-lang-go=\"`settings`\" pulumi-lang-python=\"`settings`\" pulumi-lang-yaml=\"`settings`\" pulumi-lang-java=\"`settings`\">`settings`</span> object). Optional <span pulumi-lang-nodejs=\"`description`\" pulumi-lang-dotnet=\"`Description`\" pulumi-lang-go=\"`description`\" pulumi-lang-python=\"`description`\" pulumi-lang-yaml=\"`description`\" pulumi-lang-java=\"`description`\">`description`</span>, <span pulumi-lang-nodejs=\"`hideTitle`\" pulumi-lang-dotnet=\"`HideTitle`\" pulumi-lang-go=\"`hideTitle`\" pulumi-lang-python=\"`hide_title`\" pulumi-lang-yaml=\"`hideTitle`\" pulumi-lang-java=\"`hideTitle`\">`hide_title`</span>, <span pulumi-lang-nodejs=\"`title`\" pulumi-lang-dotnet=\"`Title`\" pulumi-lang-go=\"`title`\" pulumi-lang-python=\"`title`\" pulumi-lang-yaml=\"`title`\" pulumi-lang-java=\"`title`\">`title`</span>, and <span pulumi-lang-nodejs=\"`hideBorder`\" pulumi-lang-dotnet=\"`HideBorder`\" pulumi-lang-go=\"`hideBorder`\" pulumi-lang-python=\"`hide_border`\" pulumi-lang-yaml=\"`hideBorder`\" pulumi-lang-java=\"`hideBorder`\">`hide_border`</span>.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelMarkdownConfigByReference:KibanaDashboardSectionPanelMarkdownConfigByReference":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"refId":{"description":"Unique identifier of the markdown library item (API <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>). The provider does not verify the item exists at plan time.\n","type":"string"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["refId"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelMarkdownConfigByValue:KibanaDashboardSectionPanelMarkdownConfigByValue":{"properties":{"content":{"description":"Markdown source for the panel body (API <span pulumi-lang-nodejs=\"`content`\" pulumi-lang-dotnet=\"`Content`\" pulumi-lang-go=\"`content`\" pulumi-lang-python=\"`content`\" pulumi-lang-yaml=\"`content`\" pulumi-lang-java=\"`content`\">`content`</span>).\n","type":"string"},"description":{"description":"Optional panel description.\n","type":"string"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"settings":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelMarkdownConfigByValueSettings:KibanaDashboardSectionPanelMarkdownConfigByValueSettings","description":"Required settings object for by-value markdown. <span pulumi-lang-nodejs=\"`openLinksInNewTab`\" pulumi-lang-dotnet=\"`OpenLinksInNewTab`\" pulumi-lang-go=\"`openLinksInNewTab`\" pulumi-lang-python=\"`open_links_in_new_tab`\" pulumi-lang-yaml=\"`openLinksInNewTab`\" pulumi-lang-java=\"`openLinksInNewTab`\">`open_links_in_new_tab`</span> is optional; when unset, Kibana applies its default (<span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>).\n"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["content","settings"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelMarkdownConfigByValueSettings:KibanaDashboardSectionPanelMarkdownConfigByValueSettings":{"properties":{"openLinksInNewTab":{"description":"When true, links in the markdown open in a new tab. When omitted, Kibana defaults to true.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelOptionsListControlConfig:KibanaDashboardSectionPanelOptionsListControlConfig":{"properties":{"dataViewId":{"description":"The ID of the data view that the control is tied to.\n","type":"string"},"displaySettings":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelOptionsListControlConfigDisplaySettings:KibanaDashboardSectionPanelOptionsListControlConfigDisplaySettings","description":"Display preferences for the control widget.\n"},"exclude":{"description":"When true, selected options are used as an exclusion filter rather than an inclusion filter.\n","type":"boolean"},"existsSelected":{"description":"When true, the control filters for documents where the field exists.\n","type":"boolean"},"fieldName":{"description":"The name of the field in the data view that the control is tied to.\n","type":"string"},"ignoreValidations":{"description":"Whether the control skips field-level validation against the data view.\n","type":"boolean"},"runPastTimeout":{"description":"When true, the control continues to show results even when the underlying query times out.\n","type":"boolean"},"searchTechnique":{"description":"The technique used to match suggestions. Must be one of <span pulumi-lang-nodejs=\"`prefix`\" pulumi-lang-dotnet=\"`Prefix`\" pulumi-lang-go=\"`prefix`\" pulumi-lang-python=\"`prefix`\" pulumi-lang-yaml=\"`prefix`\" pulumi-lang-java=\"`prefix`\">`prefix`</span>, <span pulumi-lang-nodejs=\"`wildcard`\" pulumi-lang-dotnet=\"`Wildcard`\" pulumi-lang-go=\"`wildcard`\" pulumi-lang-python=\"`wildcard`\" pulumi-lang-yaml=\"`wildcard`\" pulumi-lang-java=\"`wildcard`\">`wildcard`</span>, or <span pulumi-lang-nodejs=\"`exact`\" pulumi-lang-dotnet=\"`Exact`\" pulumi-lang-go=\"`exact`\" pulumi-lang-python=\"`exact`\" pulumi-lang-yaml=\"`exact`\" pulumi-lang-java=\"`exact`\">`exact`</span> when set.\n","type":"string"},"selectedOptions":{"description":"The initially or persistently selected option values. All values are represented as strings.\n","items":{"type":"string"},"type":"array"},"singleSelect":{"description":"When true, only one option may be selected at a time.\n","type":"boolean"},"sort":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelOptionsListControlConfigSort:KibanaDashboardSectionPanelOptionsListControlConfigSort","description":"Default sort configuration for the suggestion list.\n"},"title":{"description":"Human-readable label displayed above the control.\n","type":"string"},"useGlobalFilters":{"description":"Whether the control applies the dashboard's global filters to its own query.\n","type":"boolean"}},"required":["dataViewId","fieldName"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelOptionsListControlConfigDisplaySettings:KibanaDashboardSectionPanelOptionsListControlConfigDisplaySettings":{"properties":{"hideActionBar":{"description":"When true, hides the action bar on the control.\n","type":"boolean"},"hideExclude":{"description":"When true, hides the exclude toggle.\n","type":"boolean"},"hideExists":{"description":"When true, hides the exists filter option.\n","type":"boolean"},"hideSort":{"description":"When true, hides the sort control.\n","type":"boolean"},"placeholder":{"description":"Placeholder text shown when no option is selected.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelOptionsListControlConfigSort:KibanaDashboardSectionPanelOptionsListControlConfigSort":{"properties":{"by":{"description":"The field or criterion to sort by. Must be one of `_count` or `_key`.\n","type":"string"},"direction":{"description":"The sort direction. Must be one of <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span> or <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.\n","type":"string"}},"required":["by","direction"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelRangeSliderControlConfig:KibanaDashboardSectionPanelRangeSliderControlConfig":{"properties":{"dataViewId":{"description":"The ID of the data view that the control is tied to.\n","type":"string"},"fieldName":{"description":"The name of the field in the data view that the control is tied to.\n","type":"string"},"ignoreValidations":{"description":"Whether to suppress validation errors during intermediate states.\n","type":"boolean"},"step":{"description":"The step size for the range slider. Stored as float32 to match the Kibana API type and avoid refresh drift.\n","type":"number"},"title":{"description":"A human-readable title for the control.\n","type":"string"},"useGlobalFilters":{"description":"Whether the control respects dashboard-level filters.\n","type":"boolean"},"values":{"description":"Initial range as a list of exactly 2 strings: [min, max].\n","items":{"type":"string"},"type":"array"}},"required":["dataViewId","fieldName"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloAlertsConfig:KibanaDashboardSectionPanelSloAlertsConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Optional URL drilldown links (at most 100). The embeddable fixes <span pulumi-lang-nodejs=\"`trigger`\" pulumi-lang-dotnet=\"`Trigger`\" pulumi-lang-go=\"`trigger`\" pulumi-lang-python=\"`trigger`\" pulumi-lang-yaml=\"`trigger`\" pulumi-lang-java=\"`trigger`\">`trigger`</span> to <span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span> and <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> to <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span> when writing to the Kibana API.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloAlertsConfigDrilldown:KibanaDashboardSectionPanelSloAlertsConfigDrilldown"},"type":"array"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"slos":{"description":"SLO entries whose alerts this panel displays (at least one, at most 100). Each entry references an SLO by <span pulumi-lang-nodejs=\"`sloId`\" pulumi-lang-dotnet=\"`SloId`\" pulumi-lang-go=\"`sloId`\" pulumi-lang-python=\"`slo_id`\" pulumi-lang-yaml=\"`sloId`\" pulumi-lang-java=\"`sloId`\">`slo_id`</span>; set <span pulumi-lang-nodejs=\"`sloInstanceId`\" pulumi-lang-dotnet=\"`SloInstanceId`\" pulumi-lang-go=\"`sloInstanceId`\" pulumi-lang-python=\"`slo_instance_id`\" pulumi-lang-yaml=\"`sloInstanceId`\" pulumi-lang-java=\"`sloInstanceId`\">`slo_instance_id`</span> only when the SLO is grouped and you need a specific instance.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloAlertsConfigSlo:KibanaDashboardSectionPanelSloAlertsConfigSlo"},"type":"array"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["slos"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloAlertsConfigDrilldown:KibanaDashboardSectionPanelSloAlertsConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded. Omit to use the API default.\n","type":"boolean"},"label":{"description":"Display label shown in the drilldown menu.\n","type":"string"},"openInNewTab":{"description":"When true, the URL opens in a new browser tab. Omit to use the API default.\n","type":"boolean"},"url":{"description":"Templated URL for the drilldown.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloAlertsConfigSlo:KibanaDashboardSectionPanelSloAlertsConfigSlo":{"properties":{"sloId":{"description":"Identifier of the SLO to include.\n","type":"string"},"sloInstanceId":{"description":"SLO instance ID when the SLO uses grouping. Omit for all instances (API default `\"*\"`). Unset values stay null when the API echoes that default (REQ-009).\n","type":"string"}},"required":["sloId"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloBurnRateConfig:KibanaDashboardSectionPanelSloBurnRateConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Optional list of URL drilldowns attached to the panel.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloBurnRateConfigDrilldown:KibanaDashboardSectionPanelSloBurnRateConfigDrilldown"},"type":"array"},"duration":{"description":"Duration for the burn rate chart in the format `[value][unit]`, where unit is <span pulumi-lang-nodejs=\"`m`\" pulumi-lang-dotnet=\"`M`\" pulumi-lang-go=\"`m`\" pulumi-lang-python=\"`m`\" pulumi-lang-yaml=\"`m`\" pulumi-lang-java=\"`m`\">`m`</span> (minutes), <span pulumi-lang-nodejs=\"`h`\" pulumi-lang-dotnet=\"`H`\" pulumi-lang-go=\"`h`\" pulumi-lang-python=\"`h`\" pulumi-lang-yaml=\"`h`\" pulumi-lang-java=\"`h`\">`h`</span> (hours), or <span pulumi-lang-nodejs=\"`d`\" pulumi-lang-dotnet=\"`D`\" pulumi-lang-go=\"`d`\" pulumi-lang-python=\"`d`\" pulumi-lang-yaml=\"`d`\" pulumi-lang-java=\"`d`\">`d`</span> (days). For example: <span pulumi-lang-nodejs=\"`5m`\" pulumi-lang-dotnet=\"`5m`\" pulumi-lang-go=\"`5m`\" pulumi-lang-python=\"`5m`\" pulumi-lang-yaml=\"`5m`\" pulumi-lang-java=\"`5m`\">`5m`</span>, <span pulumi-lang-nodejs=\"`3h`\" pulumi-lang-dotnet=\"`3h`\" pulumi-lang-go=\"`3h`\" pulumi-lang-python=\"`3h`\" pulumi-lang-yaml=\"`3h`\" pulumi-lang-java=\"`3h`\">`3h`</span>, <span pulumi-lang-nodejs=\"`6d`\" pulumi-lang-dotnet=\"`6d`\" pulumi-lang-go=\"`6d`\" pulumi-lang-python=\"`6d`\" pulumi-lang-yaml=\"`6d`\" pulumi-lang-java=\"`6d`\">`6d`</span>.\n","type":"string"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"sloId":{"description":"The ID of the SLO to display the burn rate for.\n","type":"string"},"sloInstanceId":{"description":"ID of the SLO instance. Set when the SLO uses <span pulumi-lang-nodejs=\"`groupBy`\" pulumi-lang-dotnet=\"`GroupBy`\" pulumi-lang-go=\"`groupBy`\" pulumi-lang-python=\"`group_by`\" pulumi-lang-yaml=\"`groupBy`\" pulumi-lang-java=\"`groupBy`\">`group_by`</span>; identifies which instance to show. Omit to show all instances (API default `\"*\"`).\n","type":"string"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["duration","sloId"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloBurnRateConfigDrilldown:KibanaDashboardSectionPanelSloBurnRateConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded. Omit to use the API default.\n","type":"boolean"},"label":{"description":"Display label shown in the drilldown menu.\n","type":"string"},"openInNewTab":{"description":"When true, the URL opens in a new browser tab. Omit to use the API default.\n","type":"boolean"},"url":{"description":"Templated URL for the drilldown.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloErrorBudgetConfig:KibanaDashboardSectionPanelSloErrorBudgetConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"URL drilldowns to configure on the panel.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloErrorBudgetConfigDrilldown:KibanaDashboardSectionPanelSloErrorBudgetConfigDrilldown"},"type":"array"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"sloId":{"description":"The ID of the SLO to display the error budget for.\n","type":"string"},"sloInstanceId":{"description":"ID of the SLO instance. Set when the SLO uses group_by; identifies which instance to show. Defaults to `*` (all instances) when omitted.\n","type":"string"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["sloId"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloErrorBudgetConfigDrilldown:KibanaDashboardSectionPanelSloErrorBudgetConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is escaped using percent encoding. Defaults to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> when omitted.\n","type":"boolean"},"label":{"description":"The label displayed for the drilldown.\n","type":"string"},"openInNewTab":{"description":"When true, the drilldown URL opens in a new browser tab. Defaults to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> when omitted.\n","type":"boolean"},"url":{"description":"Templated URL. Variables documented at https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloOverviewConfig:KibanaDashboardSectionPanelSloOverviewConfig":{"properties":{"groups":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloOverviewConfigGroups:KibanaDashboardSectionPanelSloOverviewConfigGroups","description":"Configuration for a grouped SLO overview panel. Mutually exclusive with <span pulumi-lang-nodejs=\"`single`\" pulumi-lang-dotnet=\"`Single`\" pulumi-lang-go=\"`single`\" pulumi-lang-python=\"`single`\" pulumi-lang-yaml=\"`single`\" pulumi-lang-java=\"`single`\">`single`</span>.\n"},"single":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloOverviewConfigSingle:KibanaDashboardSectionPanelSloOverviewConfigSingle","description":"Configuration for a single-SLO overview panel. Mutually exclusive with <span pulumi-lang-nodejs=\"`groups`\" pulumi-lang-dotnet=\"`Groups`\" pulumi-lang-go=\"`groups`\" pulumi-lang-python=\"`groups`\" pulumi-lang-yaml=\"`groups`\" pulumi-lang-java=\"`groups`\">`groups`</span>.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloOverviewConfigGroups:KibanaDashboardSectionPanelSloOverviewConfigGroups":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"URL drilldowns attached to the panel. The trigger (<span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span>) and type (<span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>) are set automatically.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloOverviewConfigGroupsDrilldown:KibanaDashboardSectionPanelSloOverviewConfigGroupsDrilldown"},"type":"array"},"groupFilters":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloOverviewConfigGroupsGroupFilters:KibanaDashboardSectionPanelSloOverviewConfigGroupsGroupFilters","description":"Optional filters for grouped SLO overview mode.\n"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloOverviewConfigGroupsDrilldown:KibanaDashboardSectionPanelSloOverviewConfigGroupsDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded.\n","type":"boolean"},"label":{"description":"The display label for the drilldown link.\n","type":"string"},"openInNewTab":{"description":"When true, the drilldown URL opens in a new browser tab.\n","type":"boolean"},"url":{"description":"The URL template for the drilldown. Variables are documented at https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloOverviewConfigGroupsGroupFilters:KibanaDashboardSectionPanelSloOverviewConfigGroupsGroupFilters":{"properties":{"filtersJson":{"description":"AS-code filter array as a JSON string. Accepts the polymorphic filter schema (condition, group, DSL, spatial).\n","type":"string"},"groupBy":{"description":"Group SLOs by this field. Valid values are `slo.tags`, <span pulumi-lang-nodejs=\"`status`\" pulumi-lang-dotnet=\"`Status`\" pulumi-lang-go=\"`status`\" pulumi-lang-python=\"`status`\" pulumi-lang-yaml=\"`status`\" pulumi-lang-java=\"`status`\">`status`</span>, `slo.indicator.type`, `_index`.\n","type":"string"},"groups":{"description":"List of group values to include (maximum 100).\n","items":{"type":"string"},"type":"array"},"kqlQuery":{"description":"KQL query string to filter the SLOs shown in the group overview.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloOverviewConfigSingle:KibanaDashboardSectionPanelSloOverviewConfigSingle":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"URL drilldowns attached to the panel. The trigger (<span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span>) and type (<span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>) are set automatically.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSloOverviewConfigSingleDrilldown:KibanaDashboardSectionPanelSloOverviewConfigSingleDrilldown"},"type":"array"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"remoteName":{"description":"The name of the remote cluster where the SLO is defined.\n","type":"string"},"sloId":{"description":"The unique identifier of the SLO to display.\n","type":"string"},"sloInstanceId":{"description":"The SLO instance ID. Set when the SLO uses group_by; identifies which instance to display. Defaults to `*` (all instances) when omitted.\n","type":"string"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"required":["sloId"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSloOverviewConfigSingleDrilldown:KibanaDashboardSectionPanelSloOverviewConfigSingleDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded.\n","type":"boolean"},"label":{"description":"The display label for the drilldown link.\n","type":"string"},"openInNewTab":{"description":"When true, the drilldown URL opens in a new browser tab.\n","type":"boolean"},"url":{"description":"The URL template for the drilldown. Variables are documented at https://www.elastic.co/docs/explore-analyze/dashboards/drilldowns#url-template-variable.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsMonitorsConfig:KibanaDashboardSectionPanelSyntheticsMonitorsConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"filters":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsMonitorsConfigFilters:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFilters","description":"Optional filter configuration for the Synthetics monitors panel. Omit to show all monitors.\n"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"},"view":{"description":"View mode for the panel. Valid values are `cardView` and `compactView`.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsMonitorsConfigFilters:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFilters":{"properties":{"locations":{"description":"Filter by monitor locations. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (location ID).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersLocation:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersLocation"},"type":"array"},"monitorIds":{"description":"Filter by monitor IDs. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (monitor ID). The Kibana API accepts up to 5000 items.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersMonitorId:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersMonitorId"},"type":"array"},"monitorTypes":{"description":"Filter by monitor types. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (monitor type, e.g. <span pulumi-lang-nodejs=\"`browser`\" pulumi-lang-dotnet=\"`Browser`\" pulumi-lang-go=\"`browser`\" pulumi-lang-python=\"`browser`\" pulumi-lang-yaml=\"`browser`\" pulumi-lang-java=\"`browser`\">`browser`</span>, <span pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\">`http`</span>, <span pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\">`tcp`</span>, <span pulumi-lang-nodejs=\"`icmp`\" pulumi-lang-dotnet=\"`Icmp`\" pulumi-lang-go=\"`icmp`\" pulumi-lang-python=\"`icmp`\" pulumi-lang-yaml=\"`icmp`\" pulumi-lang-java=\"`icmp`\">`icmp`</span>).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersMonitorType:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersMonitorType"},"type":"array"},"projects":{"description":"Filter by project. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (project ID).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersProject:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersProject"},"type":"array"},"tags":{"description":"Filter by tags. Each entry has a <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> (display name) and a <span pulumi-lang-nodejs=\"`value`\" pulumi-lang-dotnet=\"`Value`\" pulumi-lang-go=\"`value`\" pulumi-lang-python=\"`value`\" pulumi-lang-yaml=\"`value`\" pulumi-lang-java=\"`value`\">`value`</span> (tag).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersTag:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersTag"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersLocation:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersLocation":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersMonitorId:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersMonitorId":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersMonitorType:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersMonitorType":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersProject:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersProject":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersTag:KibanaDashboardSectionPanelSyntheticsMonitorsConfigFiltersTag":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsStatsOverviewConfig:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfig":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Optional list of URL drilldown actions attached to the panel. The API allows up to 100 drilldowns per panel.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsStatsOverviewConfigDrilldown:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigDrilldown"},"type":"array"},"filters":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFilters:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFilters","description":"Optional Synthetics monitor filter constraints. Each filter category accepts a list of `{ label, value }` objects. Omit the block or individual categories to apply no filtering for those dimensions.\n"},"hideBorder":{"description":"When true, hides the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, hides the panel title.\n","type":"boolean"},"title":{"description":"Optional panel title shown in the panel header.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigDrilldown:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigDrilldown":{"properties":{"encodeUrl":{"description":"When true, the URL is percent-encoded. Omit to use the API default.\n","type":"boolean"},"label":{"description":"Display label shown in the drilldown menu.\n","type":"string"},"openInNewTab":{"description":"When true, the URL opens in a new browser tab. Omit to use the API default.\n","type":"boolean"},"url":{"description":"Templated URL for the drilldown.\n","type":"string"}},"required":["label","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFilters:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFilters":{"properties":{"locations":{"description":"Filter by monitor location.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersLocation:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersLocation"},"type":"array"},"monitorIds":{"description":"Filter by monitor ID. The API accepts up to 5000 entries.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersMonitorId:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersMonitorId"},"type":"array"},"monitorTypes":{"description":"Filter by monitor type (e.g. <span pulumi-lang-nodejs=\"`browser`\" pulumi-lang-dotnet=\"`Browser`\" pulumi-lang-go=\"`browser`\" pulumi-lang-python=\"`browser`\" pulumi-lang-yaml=\"`browser`\" pulumi-lang-java=\"`browser`\">`browser`</span>, <span pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\">`http`</span>).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersMonitorType:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersMonitorType"},"type":"array"},"projects":{"description":"Filter by Synthetics project.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersProject:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersProject"},"type":"array"},"tags":{"description":"Filter by monitor tag.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersTag:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersTag"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersLocation:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersLocation":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersMonitorId:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersMonitorId":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersMonitorType:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersMonitorType":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersProject:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersProject":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersTag:KibanaDashboardSectionPanelSyntheticsStatsOverviewConfigFiltersTag":{"properties":{"label":{"description":"Display label for the filter option.\n","type":"string"},"value":{"description":"Value for the filter option.\n","type":"string"}},"required":["label","value"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelTimeSliderControlConfig:KibanaDashboardSectionPanelTimeSliderControlConfig":{"properties":{"endPercentageOfTimeRange":{"description":"End of the visible time window as a fraction of the dashboard global range (0.0–1.0). Float32 in state matches the Kibana API and avoids refresh drift.\n","type":"number"},"isAnchored":{"description":"Whether the start of the time window is anchored (fixed), so only the end slides.\n","type":"boolean"},"startPercentageOfTimeRange":{"description":"Start of the visible time window as a fraction of the dashboard global range (0.0–1.0). Float32 in state matches the Kibana API and avoids refresh drift.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfig:KibanaDashboardSectionPanelVisConfig":{"properties":{"byReference":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByReference:KibanaDashboardSectionPanelVisConfigByReference","description":"By-reference <span pulumi-lang-nodejs=\"`vis`\" pulumi-lang-dotnet=\"`Vis`\" pulumi-lang-go=\"`vis`\" pulumi-lang-python=\"`vis`\" pulumi-lang-yaml=\"`vis`\" pulumi-lang-java=\"`vis`\">`vis`</span> configuration: structured <span pulumi-lang-nodejs=\"`drilldowns`\" pulumi-lang-dotnet=\"`Drilldowns`\" pulumi-lang-go=\"`drilldowns`\" pulumi-lang-python=\"`drilldowns`\" pulumi-lang-yaml=\"`drilldowns`\" pulumi-lang-java=\"`drilldowns`\">`drilldowns`</span>, <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>, optional <span pulumi-lang-nodejs=\"`referencesJson`\" pulumi-lang-dotnet=\"`ReferencesJson`\" pulumi-lang-go=\"`referencesJson`\" pulumi-lang-python=\"`references_json`\" pulumi-lang-yaml=\"`referencesJson`\" pulumi-lang-java=\"`referencesJson`\">`references_json`</span>, and optional <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>.\n"},"byValue":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValue:KibanaDashboardSectionPanelVisConfigByValue","description":"Inline by-value Lens visualization configuration for `type = \"vis\"` panels (<span pulumi-lang-nodejs=\"`visConfig`\" pulumi-lang-dotnet=\"`VisConfig`\" pulumi-lang-go=\"`visConfig`\" pulumi-lang-python=\"`vis_config`\" pulumi-lang-yaml=\"`visConfig`\" pulumi-lang-java=\"`visConfig`\">`vis_config`</span>). Exactly one typed chart kind must be set (no raw JSON here — use panel-level <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span> for that).\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByReference:KibanaDashboardSectionPanelVisConfigByReference":{"properties":{"description":{"description":"Optional panel description.\n","type":"string"},"drilldowns":{"description":"Structured dashboard, Discover, or URL drilldown entries for by-reference panels — shared by `vis_config.by_reference` (<span pulumi-lang-nodejs=\"`vis`\" pulumi-lang-dotnet=\"`Vis`\" pulumi-lang-go=\"`vis`\" pulumi-lang-python=\"`vis`\" pulumi-lang-yaml=\"`vis`\" pulumi-lang-java=\"`vis`\">`vis`</span> panels). Each element must contain exactly one of <span pulumi-lang-nodejs=\"`dashboard`\" pulumi-lang-dotnet=\"`Dashboard`\" pulumi-lang-go=\"`dashboard`\" pulumi-lang-python=\"`dashboard`\" pulumi-lang-yaml=\"`dashboard`\" pulumi-lang-java=\"`dashboard`\">`dashboard`</span>, <span pulumi-lang-nodejs=\"`discover`\" pulumi-lang-dotnet=\"`Discover`\" pulumi-lang-go=\"`discover`\" pulumi-lang-python=\"`discover`\" pulumi-lang-yaml=\"`discover`\" pulumi-lang-java=\"`discover`\">`discover`</span>, or <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span>; the provider sets API <span pulumi-lang-nodejs=\"`type`\" pulumi-lang-dotnet=\"`Type`\" pulumi-lang-go=\"`type`\" pulumi-lang-python=\"`type`\" pulumi-lang-yaml=\"`type`\" pulumi-lang-java=\"`type`\">`type`</span> and (for dashboard/discover) <span pulumi-lang-nodejs=\"`trigger`\" pulumi-lang-dotnet=\"`Trigger`\" pulumi-lang-go=\"`trigger`\" pulumi-lang-python=\"`trigger`\" pulumi-lang-yaml=\"`trigger`\" pulumi-lang-java=\"`trigger`\">`trigger`</span> automatically.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByReferenceDrilldown:KibanaDashboardSectionPanelVisConfigByReferenceDrilldown"},"type":"array"},"hideBorder":{"description":"When true, suppresses the panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the panel title.\n","type":"boolean"},"refId":{"description":"Reference name in the API <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span> field. When <span pulumi-lang-nodejs=\"`referencesJson`\" pulumi-lang-dotnet=\"`ReferencesJson`\" pulumi-lang-go=\"`referencesJson`\" pulumi-lang-python=\"`references_json`\" pulumi-lang-yaml=\"`referencesJson`\" pulumi-lang-java=\"`referencesJson`\">`references_json`</span> is set, <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span> typically should match a <span pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\">`name`</span> in that list so the link resolves as expected.\n","type":"string"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list (for example wiring a <span pulumi-lang-nodejs=\"`lens`\" pulumi-lang-dotnet=\"`Lens`\" pulumi-lang-go=\"`lens`\" pulumi-lang-python=\"`lens`\" pulumi-lang-yaml=\"`lens`\" pulumi-lang-java=\"`lens`\">`lens`</span> saved object to <span pulumi-lang-nodejs=\"`refId`\" pulumi-lang-dotnet=\"`RefId`\" pulumi-lang-go=\"`refId`\" pulumi-lang-python=\"`ref_id`\" pulumi-lang-yaml=\"`refId`\" pulumi-lang-java=\"`refId`\">`ref_id`</span>).\n","type":"string"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByReferenceTimeRange:KibanaDashboardSectionPanelVisConfigByReferenceTimeRange","description":"Optional time range for the by-reference panel config (`vis_config.by_reference`). Omitted from the API payload when unset.\n"},"title":{"description":"Optional panel title.\n","type":"string"}},"required":["refId"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByReferenceDrilldown:KibanaDashboardSectionPanelVisConfigByReferenceDrilldown":{"properties":{"dashboard":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByReferenceDrilldownDashboard:KibanaDashboardSectionPanelVisConfigByReferenceDrilldownDashboard","description":"Open another dashboard (<span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>). <span pulumi-lang-nodejs=\"`dashboardId`\" pulumi-lang-dotnet=\"`DashboardId`\" pulumi-lang-go=\"`dashboardId`\" pulumi-lang-python=\"`dashboard_id`\" pulumi-lang-yaml=\"`dashboardId`\" pulumi-lang-java=\"`dashboardId`\">`dashboard_id`</span> and <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span> are required; remaining fields mirror optional API knobs.\n"},"discover":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByReferenceDrilldownDiscover:KibanaDashboardSectionPanelVisConfigByReferenceDrilldownDiscover","description":"Open in Discover (<span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>). Requires <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span>.\n"},"url":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByReferenceDrilldownUrl:KibanaDashboardSectionPanelVisConfigByReferenceDrilldownUrl","description":"Custom URL drilldown (<span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>). Requires <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span>, <span pulumi-lang-nodejs=\"`label`\" pulumi-lang-dotnet=\"`Label`\" pulumi-lang-go=\"`label`\" pulumi-lang-python=\"`label`\" pulumi-lang-yaml=\"`label`\" pulumi-lang-java=\"`label`\">`label`</span>, and <span pulumi-lang-nodejs=\"`trigger`\" pulumi-lang-dotnet=\"`Trigger`\" pulumi-lang-go=\"`trigger`\" pulumi-lang-python=\"`trigger`\" pulumi-lang-yaml=\"`trigger`\" pulumi-lang-java=\"`trigger`\">`trigger`</span> (one of <span pulumi-lang-nodejs=\"`onClickRow`\" pulumi-lang-dotnet=\"`OnClickRow`\" pulumi-lang-go=\"`onClickRow`\" pulumi-lang-python=\"`on_click_row`\" pulumi-lang-yaml=\"`onClickRow`\" pulumi-lang-java=\"`onClickRow`\">`on_click_row`</span>, <span pulumi-lang-nodejs=\"`onClickValue`\" pulumi-lang-dotnet=\"`OnClickValue`\" pulumi-lang-go=\"`onClickValue`\" pulumi-lang-python=\"`on_click_value`\" pulumi-lang-yaml=\"`onClickValue`\" pulumi-lang-java=\"`onClickValue`\">`on_click_value`</span>, <span pulumi-lang-nodejs=\"`onOpenPanelMenu`\" pulumi-lang-dotnet=\"`OnOpenPanelMenu`\" pulumi-lang-go=\"`onOpenPanelMenu`\" pulumi-lang-python=\"`on_open_panel_menu`\" pulumi-lang-yaml=\"`onOpenPanelMenu`\" pulumi-lang-java=\"`onOpenPanelMenu`\">`on_open_panel_menu`</span>, <span pulumi-lang-nodejs=\"`onSelectRange`\" pulumi-lang-dotnet=\"`OnSelectRange`\" pulumi-lang-go=\"`onSelectRange`\" pulumi-lang-python=\"`on_select_range`\" pulumi-lang-yaml=\"`onSelectRange`\" pulumi-lang-java=\"`onSelectRange`\">`on_select_range`</span>). The Kibana dashboard API rejects URL drilldowns without <span pulumi-lang-nodejs=\"`trigger`\" pulumi-lang-dotnet=\"`Trigger`\" pulumi-lang-go=\"`trigger`\" pulumi-lang-python=\"`trigger`\" pulumi-lang-yaml=\"`trigger`\" pulumi-lang-java=\"`trigger`\">`trigger`</span>.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByReferenceDrilldownDashboard:KibanaDashboardSectionPanelVisConfigByReferenceDrilldownDashboard":{"properties":{"dashboardId":{"description":"Target dashboard ID.\n","type":"string"},"label":{"description":"Display label.\n","type":"string"},"openInNewTab":{"description":"Open in a new browser tab when set.\n","type":"boolean"},"useFilters":{"description":"Pass filters to the target dashboard when set.\n","type":"boolean"},"useTimeRange":{"description":"Pass the current time range to the target dashboard when set.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByReferenceDrilldownDiscover:KibanaDashboardSectionPanelVisConfigByReferenceDrilldownDiscover":{"properties":{"label":{"description":"Display label.\n","type":"string"},"openInNewTab":{"description":"Open in a new browser tab when set.\n","type":"boolean"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByReferenceDrilldownUrl:KibanaDashboardSectionPanelVisConfigByReferenceDrilldownUrl":{"properties":{"encodeUrl":{"description":"Escape the URL via percent-encoding when set.\n","type":"boolean"},"label":{"description":"Display label.\n","type":"string"},"openInNewTab":{"description":"Open in a new browser tab when set.\n","type":"boolean"},"trigger":{"description":"Trigger that activates the drilldown. Required; the Kibana dashboard API rejects URL drilldowns when this field is omitted.\n","type":"string"},"url":{"description":"URL template with variables documented in Kibana URL drilldown documentation.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByReferenceTimeRange:KibanaDashboardSectionPanelVisConfigByReferenceTimeRange":{"properties":{"from":{"description":"Start of the time range (e.g., 'now-15m', '2023-01-01T00:00:00Z').\n","type":"string"},"mode":{"description":"Optional time range mode. When set, must be <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>.\n","type":"string"},"to":{"description":"End of the time range (e.g., 'now', '2023-12-31T23:59:59Z').\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValue:KibanaDashboardSectionPanelVisConfigByValue":{"properties":{"datatableConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfig:KibanaDashboardSectionPanelVisConfigByValueDatatableConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.datatable_config`.\n"},"gaugeConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfig:KibanaDashboardSectionPanelVisConfigByValueGaugeConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.gauge_config`.\n"},"heatmapConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfig:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.heatmap_config`.\n"},"legacyMetricConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfig:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.legacy_metric_config`.\n"},"metricChartConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfig:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.metric_chart_config`.\n"},"mosaicConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfig:KibanaDashboardSectionPanelVisConfigByValueMosaicConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.mosaic_config`.\n"},"pieChartConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfig:KibanaDashboardSectionPanelVisConfigByValuePieChartConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.pie_chart_config`.\n"},"regionMapConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueRegionMapConfig:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.region_map_config`.\n"},"tagcloudConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfig:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.tagcloud_config`.\n"},"treemapConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfig:KibanaDashboardSectionPanelVisConfigByValueTreemapConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.treemap_config`.\n"},"waffleConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfig:KibanaDashboardSectionPanelVisConfigByValueWaffleConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.waffle_config`.\n"},"xyChartConfig":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfig:KibanaDashboardSectionPanelVisConfigByValueXyChartConfig","description":"Typed Lens visualization inside `vis_config.by_value`. Mutually exclusive with the other chart blocks in the same <span pulumi-lang-nodejs=\"`byValue`\" pulumi-lang-dotnet=\"`ByValue`\" pulumi-lang-go=\"`byValue`\" pulumi-lang-python=\"`by_value`\" pulumi-lang-yaml=\"`byValue`\" pulumi-lang-java=\"`byValue`\">`by_value`</span> block. Shares the attribute shape with `vis_config.by_value.xy_chart_config`.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfig:KibanaDashboardSectionPanelVisConfigByValueDatatableConfig":{"properties":{"esql":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsql:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsql","description":"Datatable configuration for ES|QL queries.\n"},"noEsql":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsql:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsql","description":"Datatable configuration for standard (non-ES|QL) queries.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsql:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsql":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metrics","sampling","styling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For ES|QL, this specifies the ES|QL query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlFilter:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metrics":{"description":"Array of metric configurations as JSON. Each entry defines a datatable metric column.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlMetric"},"type":"array"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"rows":{"description":"Array of row configurations as JSON. Each entry defines a row split operation.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlRow:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlRow"},"type":"array"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"splitMetricsBies":{"description":"Array of split-metrics configurations as JSON. Each entry defines a split operation for metric columns.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlSplitMetricsBy:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlSplitMetricsBy"},"type":"array"},"styling":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStyling:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStyling","description":"Datatable styling and display configuration.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlTimeRange:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metrics","styling"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlFilter:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlMetric":{"properties":{"configJson":{"description":"Metric configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlRow:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlRow":{"properties":{"configJson":{"description":"Row configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlSplitMetricsBy:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlSplitMetricsBy":{"properties":{"configJson":{"description":"Split metrics configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStyling:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStyling":{"properties":{"density":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensity:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensity","description":"Density configuration for the datatable.\n"},"paging":{"description":"Enables pagination and sets the number of rows to display per page.\n","type":"number"},"sortByJson":{"description":"Sort configuration as JSON. Only one column can be sorted at a time.\n","type":"string"}},"required":["density"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensity:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensity":{"properties":{"height":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeight:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeight","description":"Header and value height configuration.\n"},"mode":{"description":"Density mode. Valid values: 'compact', 'default', 'expanded'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeight:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeight":{"properties":{"header":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightHeader:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightHeader","description":"Header height configuration.\n"},"value":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightValue:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightValue","description":"Value height configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightHeader:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightHeader":{"properties":{"maxLines":{"description":"Maximum number of lines to use before header is truncated (for custom header height).\n","type":"number"},"type":{"description":"Header height type. Valid values: 'auto', 'custom'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightValue:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlStylingDensityHeightValue":{"properties":{"lines":{"description":"Number of lines to display per table body cell (for custom value height).\n","type":"number"},"type":{"description":"Value height type. Valid values: 'auto', 'custom'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlTimeRange:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigEsqlTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsql:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsql":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metrics","query","sampling","styling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For standard datatables, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlFilter:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metrics":{"description":"Array of metric configurations as JSON. Each entry defines a datatable metric column.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlMetric"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlQuery:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlQuery","description":"Query configuration for filtering data.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"rows":{"description":"Array of row configurations as JSON. Each entry defines a row split operation.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlRow:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlRow"},"type":"array"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"splitMetricsBies":{"description":"Array of split-metrics configurations as JSON. Each entry defines a split operation for metric columns.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlSplitMetricsBy:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlSplitMetricsBy"},"type":"array"},"styling":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStyling:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStyling","description":"Datatable styling and display configuration.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlTimeRange:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metrics","query","styling"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlFilter:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlMetric":{"properties":{"configJson":{"description":"Metric configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlQuery:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlRow:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlRow":{"properties":{"configJson":{"description":"Row configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlSplitMetricsBy:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlSplitMetricsBy":{"properties":{"configJson":{"description":"Split metrics configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStyling:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStyling":{"properties":{"density":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensity:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensity","description":"Density configuration for the datatable.\n"},"paging":{"description":"Enables pagination and sets the number of rows to display per page.\n","type":"number"},"sortByJson":{"description":"Sort configuration as JSON. Only one column can be sorted at a time.\n","type":"string"}},"required":["density"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensity:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensity":{"properties":{"height":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeight:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeight","description":"Header and value height configuration.\n"},"mode":{"description":"Density mode. Valid values: 'compact', 'default', 'expanded'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeight:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeight":{"properties":{"header":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightHeader:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightHeader","description":"Header height configuration.\n"},"value":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightValue:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightValue","description":"Value height configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightHeader:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightHeader":{"properties":{"maxLines":{"description":"Maximum number of lines to use before header is truncated (for custom header height).\n","type":"number"},"type":{"description":"Header height type. Valid values: 'auto', 'custom'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightValue:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlStylingDensityHeightValue":{"properties":{"lines":{"description":"Number of lines to display per table body cell (for custom value height).\n","type":"number"},"type":{"description":"Value height type. Valid values: 'auto', 'custom'.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlTimeRange:KibanaDashboardSectionPanelVisConfigByValueDatatableConfigNoEsqlTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfig:KibanaDashboardSectionPanelVisConfigByValueGaugeConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","sampling","styling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For standard layers, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldown"},"type":"array"},"esqlMetric":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetric","description":"Typed metric column for ES|QL gauges. Mutually exclusive with <span pulumi-lang-nodejs=\"`metricJson`\" pulumi-lang-dotnet=\"`MetricJson`\" pulumi-lang-go=\"`metricJson`\" pulumi-lang-python=\"`metric_json`\" pulumi-lang-yaml=\"`metricJson`\" pulumi-lang-java=\"`metricJson`\">`metric_json`</span>.\n"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigFilter:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metricJson":{"description":"Metric configuration as JSON. Supports metric operations such as count, unique count, min, max, average, median, standard deviation, sum, last value, percentile, percentile ranks, or formula. Required for non-ES|QL gauges; mutually exclusive with <span pulumi-lang-nodejs=\"`esqlMetric`\" pulumi-lang-dotnet=\"`EsqlMetric`\" pulumi-lang-go=\"`esqlMetric`\" pulumi-lang-python=\"`esql_metric`\" pulumi-lang-yaml=\"`esqlMetric`\" pulumi-lang-java=\"`esqlMetric`\">`esql_metric`</span>.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigQuery:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL gauges; omit for ES|QL mode.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"styling":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigStyling:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigStyling","description":"Gauge styling configuration.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","styling"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetric":{"properties":{"colorJson":{"description":"Gauge fill color configuration as JSON (`colorByValue`, `noColor`, or `autoColor` union).\n","type":"string"},"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"goal":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricGoal:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricGoal","description":"Goal column reference.\n"},"label":{"description":"Optional label for the metric.\n","type":"string"},"max":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricMax:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricMax","description":"Max column reference.\n"},"min":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricMin:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricMin","description":"Min column reference.\n"},"subtitle":{"description":"Subtitle text rendered below the gauge value.\n","type":"string"},"ticks":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricTicks:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricTicks","description":"Tick configuration.\n"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricTitle:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricTitle","description":"Title configuration.\n"}},"required":["column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricGoal:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricGoal":{"properties":{"column":{"description":"ES|QL column name.\n","type":"string"},"label":{"description":"Optional label for the operation.\n","type":"string"}},"required":["column"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricMax:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricMax":{"properties":{"column":{"description":"ES|QL column name.\n","type":"string"},"label":{"description":"Optional label for the operation.\n","type":"string"}},"required":["column"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricMin:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricMin":{"properties":{"column":{"description":"ES|QL column name.\n","type":"string"},"label":{"description":"Optional label for the operation.\n","type":"string"}},"required":["column"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricTicks:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricTicks":{"properties":{"mode":{"description":"Tick placement mode.\n","type":"string"},"visible":{"description":"Whether tick marks are displayed.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricTitle:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigEsqlMetricTitle":{"properties":{"text":{"description":"Title text.\n","type":"string"},"visible":{"description":"Whether the title is displayed.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigFilter:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigQuery:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigStyling:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigStyling":{"properties":{"shapeJson":{"description":"Gauge shape configuration as JSON. Supports bullet and circular gauges.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueGaugeConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueGaugeConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfig:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfig":{"language":{"nodejs":{"requiredOutputs":["axis","dataSourceJson","ignoreGlobalFilters","legend","metricJson","sampling","styling","xAxisJson"]}},"properties":{"axis":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxis:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxis","description":"Axis configuration for X and Y axes.\n"},"dataSourceJson":{"description":"Dataset configuration as JSON. For standard heatmaps, this specifies the data view or index; for ES|QL, this specifies the ES|QL query dataset.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigFilter:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigLegend:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigLegend","description":"Legend configuration for the heatmap.\n"},"metricJson":{"description":"Metric configuration as JSON. For non-ES|QL, this can be a field metric, pipeline metric, or formula. For ES|QL, this is the metric column/operation/color configuration.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigQuery:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL heatmaps.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"styling":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStyling:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStyling","description":"Heatmap styling configuration.\n"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"},"xAxisJson":{"description":"Breakdown dimension configuration for the X axis as JSON. This specifies the operation (e.g., <span pulumi-lang-nodejs=\"`terms`\" pulumi-lang-dotnet=\"`Terms`\" pulumi-lang-go=\"`terms`\" pulumi-lang-python=\"`terms`\" pulumi-lang-yaml=\"`terms`\" pulumi-lang-java=\"`terms`\">`terms`</span>, <span pulumi-lang-nodejs=\"`dateHistogram`\" pulumi-lang-dotnet=\"`DateHistogram`\" pulumi-lang-go=\"`dateHistogram`\" pulumi-lang-python=\"`date_histogram`\" pulumi-lang-yaml=\"`dateHistogram`\" pulumi-lang-java=\"`dateHistogram`\">`date_histogram`</span>, <span pulumi-lang-nodejs=\"`histogram`\" pulumi-lang-dotnet=\"`Histogram`\" pulumi-lang-go=\"`histogram`\" pulumi-lang-python=\"`histogram`\" pulumi-lang-yaml=\"`histogram`\" pulumi-lang-java=\"`histogram`\">`histogram`</span>, <span pulumi-lang-nodejs=\"`range`\" pulumi-lang-dotnet=\"`Range`\" pulumi-lang-go=\"`range`\" pulumi-lang-python=\"`range`\" pulumi-lang-yaml=\"`range`\" pulumi-lang-java=\"`range`\">`range`</span>, <span pulumi-lang-nodejs=\"`filters`\" pulumi-lang-dotnet=\"`Filters`\" pulumi-lang-go=\"`filters`\" pulumi-lang-python=\"`filters`\" pulumi-lang-yaml=\"`filters`\" pulumi-lang-java=\"`filters`\">`filters`</span>) and its parameters.\n","type":"string"},"yAxisJson":{"description":"Breakdown dimension configuration for the Y axis as JSON. When omitted, the heatmap renders without a Y breakdown.\n","type":"string"}},"required":["axis","dataSourceJson","legend","metricJson","styling","xAxisJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxis:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxis":{"properties":{"x":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisX:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisX","description":"X-axis configuration.\n"},"y":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisY:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisY","description":"Y-axis configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisX:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisX":{"properties":{"labels":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisXLabels:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisXLabels","description":"X-axis label configuration.\n"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisXTitle:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisXTitle","description":"Axis title configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisXLabels:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisXLabels":{"properties":{"orientation":{"description":"Orientation of the axis labels.\n","type":"string"},"visible":{"description":"Whether to show axis labels.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisXTitle:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisXTitle":{"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisY:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisY":{"properties":{"labels":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisYLabels:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisYLabels","description":"Y-axis label configuration.\n"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisYTitle:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisYTitle","description":"Axis title configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisYLabels:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisYLabels":{"properties":{"visible":{"description":"Whether to show axis labels.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisYTitle:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigAxisYTitle":{"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigFilter:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigLegend:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigLegend":{"properties":{"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visibility":{"description":"Legend visibility. Valid values are <span pulumi-lang-nodejs=\"`visible`\" pulumi-lang-dotnet=\"`Visible`\" pulumi-lang-go=\"`visible`\" pulumi-lang-python=\"`visible`\" pulumi-lang-yaml=\"`visible`\" pulumi-lang-java=\"`visible`\">`visible`</span> or <span pulumi-lang-nodejs=\"`hidden`\" pulumi-lang-dotnet=\"`Hidden`\" pulumi-lang-go=\"`hidden`\" pulumi-lang-python=\"`hidden`\" pulumi-lang-yaml=\"`hidden`\" pulumi-lang-java=\"`hidden`\">`hidden`</span>.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigQuery:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStyling:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStyling":{"properties":{"cells":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStylingCells:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStylingCells","description":"Cells configuration for the heatmap.\n"}},"required":["cells"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStylingCells:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStylingCells":{"properties":{"labels":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStylingCellsLabels:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStylingCellsLabels","description":"Cell label configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStylingCellsLabels:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigStylingCellsLabels":{"properties":{"visible":{"description":"Whether to show cell labels.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueHeatmapConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfig:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metricJson","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. Use `dataView` or <span pulumi-lang-nodejs=\"`index`\" pulumi-lang-dotnet=\"`Index`\" pulumi-lang-go=\"`index`\" pulumi-lang-python=\"`index`\" pulumi-lang-yaml=\"`index`\" pulumi-lang-java=\"`index`\">`index`</span> for standard data sources, and <span pulumi-lang-nodejs=\"`esql`\" pulumi-lang-dotnet=\"`Esql`\" pulumi-lang-go=\"`esql`\" pulumi-lang-python=\"`esql`\" pulumi-lang-yaml=\"`esql`\" pulumi-lang-java=\"`esql`\">`esql`</span> or <span pulumi-lang-nodejs=\"`table`\" pulumi-lang-dotnet=\"`Table`\" pulumi-lang-go=\"`table`\" pulumi-lang-python=\"`table`\" pulumi-lang-yaml=\"`table`\" pulumi-lang-java=\"`table`\">`table`</span> for ES|QL sources.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigFilter:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metricJson":{"description":"Metric configuration as JSON. For standard datasets, use a metric operation or formula. For ES|QL datasets, include format, operation, column, and color configuration.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigQuery:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL datasets.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metricJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigFilter:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigQuery:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueLegacyMetricConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfig:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metrics","sampling"]}},"properties":{"breakdownByJson":{"description":"Breakdown configuration as JSON. Groups metrics by a dimension. Can use operations like date histogram, terms, histogram, range, filters, or for ES|QL datasets, value operations with columns. Includes optional columns count and<span pulumi-lang-nodejs=\" collapseBy \" pulumi-lang-dotnet=\" CollapseBy \" pulumi-lang-go=\" collapseBy \" pulumi-lang-python=\" collapse_by \" pulumi-lang-yaml=\" collapseBy \" pulumi-lang-java=\" collapseBy \"> collapse_by </span>configuration.\n","type":"string"},"dataSourceJson":{"description":"Dataset configuration as JSON. Can be a data view dataset (`type: 'dataview'`), index dataset (`type: 'index'`), ES|QL dataset (`type: 'esql'`), or table ES|QL dataset (`type: 'tableESQLDatasetType`).\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfigFilter:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metrics":{"description":"Array of metrics to display (1-2 items). Each metric can be a primary metric (displays prominently) or secondary metric (displays as comparison). Metrics can use field operations (count, unique count, min, max, avg, median, std dev, sum, last value, percentile, percentile ranks), pipeline operations (differences, moving average, cumulative sum, counter rate), formula operations, or for ES|QL datasets, column-based value operations.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfigMetric:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigMetric"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfigQuery:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL datasets.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metrics"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigFilter:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigMetric:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigMetric":{"properties":{"configJson":{"description":"Metric configuration as JSON. For primary metrics: includes type ('primary'), operation, format, alignments, icon, and optional fields like sub*label, fit, color, apply*color*to, and background*chart. For secondary metrics: includes type ('secondary'), operation, format, and optional fields like label, prefix, compare, and color.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigQuery:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueMetricChartConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfig:KibanaDashboardSectionPanelVisConfigByValueMosaicConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","groupBreakdownByJson","ignoreGlobalFilters","legend","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For non-ES|QL, this specifies the data view or index; for ES|QL, this specifies the ES|QL query dataset.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldown"},"type":"array"},"esqlGroupBies":{"description":"Breakdown columns for ES|QL mosaics. Mutually exclusive with <span pulumi-lang-nodejs=\"`groupByJson`\" pulumi-lang-dotnet=\"`GroupByJson`\" pulumi-lang-go=\"`groupByJson`\" pulumi-lang-python=\"`group_by_json`\" pulumi-lang-yaml=\"`groupByJson`\" pulumi-lang-java=\"`groupByJson`\">`group_by_json`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigEsqlGroupBy:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigEsqlGroupBy"},"type":"array"},"esqlMetrics":{"description":"Metric columns for ES|QL mosaics (exactly 1). Mutually exclusive with <span pulumi-lang-nodejs=\"`metricsJson`\" pulumi-lang-dotnet=\"`MetricsJson`\" pulumi-lang-go=\"`metricsJson`\" pulumi-lang-python=\"`metrics_json`\" pulumi-lang-yaml=\"`metricsJson`\" pulumi-lang-java=\"`metricsJson`\">`metrics_json`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigEsqlMetric"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigFilter:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigFilter"},"type":"array"},"groupBreakdownByJson":{"description":"Array of secondary breakdown dimensions as JSON (minimum 1). Mosaic charts require both group*by and group*breakdown_by. For non-ES|QL, each item can be date histogram, terms, histogram, range, or filters operations; for ES|QL, each item is the column/operation/color configuration.\n","type":"string"},"groupByJson":{"description":"Array of primary breakdown dimensions as JSON (minimum 1). For non-ES|QL, each item can be date histogram, terms, histogram, range, or filters operations; for ES|QL, each item is the column/operation/color configuration.\n","type":"string"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigLegend:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigLegend","description":"Legend configuration for the mosaic chart.\n"},"metricsJson":{"description":"Array of metric configurations as JSON (exactly 1 required). For non-ES|QL, each item can be a field metric, pipeline metric, or formula; for ES|QL, each item is the column/operation/color/format configuration.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigQuery:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL partition charts.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"},"valueDisplay":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigValueDisplay:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigValueDisplay","description":"Configuration for displaying values in chart cells.\n"}},"required":["dataSourceJson","groupBreakdownByJson","legend"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigEsqlGroupBy:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigEsqlGroupBy":{"properties":{"collapseBy":{"description":"Collapse function when multiple rows map to the same bucket.\n","type":"string"},"colorJson":{"description":"Color mapping as JSON (`colorMapping` union).\n","type":"string"},"column":{"description":"ES|QL column for the breakdown.\n","type":"string"},"formatJson":{"description":"Column format as JSON (e.g. `{\"type\":\"number\"}`). Defaults to numeric format when omitted.\n","type":"string"},"label":{"description":"Optional label for the group-by column.\n","type":"string"}},"required":["collapseBy","colorJson","column"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigEsqlMetric":{"properties":{"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the metric.\n","type":"string"}},"required":["column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigFilter:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigLegend:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigLegend":{"properties":{"nested":{"description":"Show nested legend with hierarchical breakdown levels.\n","type":"boolean"},"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visible":{"description":"Legend visibility: auto, visible, or hidden.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigQuery:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueMosaicConfigValueDisplay:KibanaDashboardSectionPanelVisConfigByValueMosaicConfigValueDisplay":{"properties":{"mode":{"description":"Value display mode: hidden, absolute, or percentage.\n","type":"string"},"percentDecimals":{"description":"Decimal places for percentage display (0-10).\n","type":"number"}},"required":["mode"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfig:KibanaDashboardSectionPanelVisConfigByValuePieChartConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","legend","metrics","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For standard layers, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"donutHole":{"description":"Donut hole size: none (pie), s, m, or l.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigFilter:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigFilter"},"type":"array"},"groupBies":{"description":"Array of breakdown dimensions (minimum 1).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigGroupBy:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigGroupBy"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"labelPosition":{"description":"Position of slice labels: hidden, inside, or outside.\n","type":"string"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigLegend:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigLegend"},"metrics":{"description":"Array of metric configurations (minimum 1).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigMetric:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigMetric"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigQuery:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigQuery","description":"Query configuration for filtering data.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metrics"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigFilter:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigGroupBy:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigGroupBy":{"properties":{"configJson":{"description":"Group by configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigLegend:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigLegend":{"properties":{"nested":{"description":"Show nested legend with hierarchical breakdown levels.\n","type":"boolean"},"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visible":{"description":"Legend visibility: auto, visible, or hidden.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigMetric:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigMetric":{"properties":{"configJson":{"description":"Metric configuration as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigQuery:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValuePieChartConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValuePieChartConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueRegionMapConfig:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","metricJson","regionJson","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For ES|QL, this specifies the ES|QL query. For standard layers, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueRegionMapConfigFilter:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigFilter"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metricJson":{"description":"Metric configuration as JSON. For ES|QL, this defines the metric column and format. For standard mode, this defines the metric operation or formula.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueRegionMapConfigQuery:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL region map configurations.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"regionJson":{"description":"Region configuration as JSON. For ES|QL, this defines the region column and EMS join. For standard mode, this defines the bucket operation (terms, histogram, range, filters) and optional EMS settings.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueRegionMapConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson","metricJson","regionJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigFilter:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigQuery:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueRegionMapConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfig:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For standard layers, this specifies the data view and query.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldown"},"type":"array"},"esqlMetric":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigEsqlMetric","description":"Typed metric column for ES|QL tagclouds. Mutually exclusive with <span pulumi-lang-nodejs=\"`metricJson`\" pulumi-lang-dotnet=\"`MetricJson`\" pulumi-lang-go=\"`metricJson`\" pulumi-lang-python=\"`metric_json`\" pulumi-lang-yaml=\"`metricJson`\" pulumi-lang-java=\"`metricJson`\">`metric_json`</span>.\n"},"esqlTagBy":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigEsqlTagBy:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigEsqlTagBy","description":"Typed tag-by column for ES|QL tagclouds. Mutually exclusive with <span pulumi-lang-nodejs=\"`tagByJson`\" pulumi-lang-dotnet=\"`TagByJson`\" pulumi-lang-go=\"`tagByJson`\" pulumi-lang-python=\"`tag_by_json`\" pulumi-lang-yaml=\"`tagByJson`\" pulumi-lang-java=\"`tagByJson`\">`tag_by_json`</span>.\n"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigFilter:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigFilter"},"type":"array"},"fontSize":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigFontSize:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigFontSize","description":"Minimum and maximum font size for the tags.\n"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"metricJson":{"description":"Metric configuration as JSON. Can be a field metric operation (count, unique count, min, max, avg, median, std dev, sum, last value, percentile, percentile ranks), a pipeline operation (differences, moving average, cumulative sum, counter rate), or a formula operation. Required for non-ES|QL tagclouds; mutually exclusive with <span pulumi-lang-nodejs=\"`esqlMetric`\" pulumi-lang-dotnet=\"`EsqlMetric`\" pulumi-lang-go=\"`esqlMetric`\" pulumi-lang-python=\"`esql_metric`\" pulumi-lang-yaml=\"`esqlMetric`\" pulumi-lang-java=\"`esqlMetric`\">`esql_metric`</span>.\n","type":"string"},"orientation":{"description":"Orientation of the tagcloud. Valid values: 'horizontal', 'vertical', 'angled'.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigQuery:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL tagclouds; omit for ES|QL mode.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"tagByJson":{"description":"Tag grouping configuration as JSON. Can be a date histogram, terms, histogram, range, or filters operation. This determines how tags are grouped and displayed. Required for non-ES|QL tagclouds; mutually exclusive with <span pulumi-lang-nodejs=\"`esqlTagBy`\" pulumi-lang-dotnet=\"`EsqlTagBy`\" pulumi-lang-go=\"`esqlTagBy`\" pulumi-lang-python=\"`esql_tag_by`\" pulumi-lang-yaml=\"`esqlTagBy`\" pulumi-lang-java=\"`esqlTagBy`\">`esql_tag_by`</span>.\n","type":"string"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["dataSourceJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigEsqlMetric":{"properties":{"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the metric.\n","type":"string"}},"required":["column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigEsqlTagBy:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigEsqlTagBy":{"properties":{"colorJson":{"description":"Color mapping as JSON (`colorMapping` union).\n","type":"string"},"column":{"description":"ES|QL column for the tag dimension.\n","type":"string"},"formatJson":{"description":"Column format as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the tag-by column.\n","type":"string"}},"required":["colorJson","column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigFilter:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigFontSize:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigFontSize":{"properties":{"max":{"description":"Maximum font size (default: 72, maximum: 120).\n","type":"number"},"min":{"description":"Minimum font size (default: 18, minimum: 1).\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigQuery:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueTagcloudConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfig:KibanaDashboardSectionPanelVisConfigByValueTreemapConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","legend","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For non-ES|QL, this specifies the data view or index; for ES|QL, this specifies the ES|QL query dataset.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldown"},"type":"array"},"esqlGroupBies":{"description":"Breakdown columns for ES|QL treemaps. Mutually exclusive with <span pulumi-lang-nodejs=\"`groupByJson`\" pulumi-lang-dotnet=\"`GroupByJson`\" pulumi-lang-go=\"`groupByJson`\" pulumi-lang-python=\"`group_by_json`\" pulumi-lang-yaml=\"`groupByJson`\" pulumi-lang-java=\"`groupByJson`\">`group_by_json`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlGroupBy:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlGroupBy"},"type":"array"},"esqlMetrics":{"description":"Metric columns for ES|QL treemaps. Mutually exclusive with <span pulumi-lang-nodejs=\"`metricsJson`\" pulumi-lang-dotnet=\"`MetricsJson`\" pulumi-lang-go=\"`metricsJson`\" pulumi-lang-python=\"`metrics_json`\" pulumi-lang-yaml=\"`metricsJson`\" pulumi-lang-java=\"`metricsJson`\">`metrics_json`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlMetric"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigFilter:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigFilter"},"type":"array"},"groupByJson":{"description":"Array of breakdown dimensions as JSON (minimum 1). For non-ES|QL, each item can be date histogram, terms, histogram, range, or filters operations; for ES|QL, each item is the column/operation/color configuration.\n","type":"string"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigLegend:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigLegend","description":"Legend configuration for the treemap chart.\n"},"metricsJson":{"description":"Array of metric configurations as JSON (minimum 1). For non-ES|QL, each item can be a field metric, pipeline metric, or formula; for ES|QL, each item is the column/operation/color/format configuration.\n","type":"string"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigQuery:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL partition charts.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"},"valueDisplay":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigValueDisplay:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigValueDisplay","description":"Configuration for displaying values in chart cells.\n"}},"required":["dataSourceJson","legend"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlGroupBy:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlGroupBy":{"properties":{"collapseBy":{"description":"Collapse function when multiple rows map to the same bucket.\n","type":"string"},"colorJson":{"description":"Color mapping as JSON (`colorMapping` union).\n","type":"string"},"column":{"description":"ES|QL column for the breakdown.\n","type":"string"},"formatJson":{"description":"Column format as JSON (e.g. `{\"type\":\"number\"}`). Defaults to numeric format when omitted.\n","type":"string"},"label":{"description":"Optional label for the group-by column.\n","type":"string"}},"required":["collapseBy","colorJson","column"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlMetric":{"properties":{"color":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlMetricColor:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlMetricColor","description":"Static color for the metric.\n"},"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the metric.\n","type":"string"}},"required":["color","column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlMetricColor:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigEsqlMetricColor":{"properties":{"color":{"description":"Color value (e.g. hex).\n","type":"string"},"type":{"description":"Color type; use <span pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\">`static`</span> for partition chart ES|QL metrics.\n","type":"string"}},"required":["color","type"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigFilter:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigLegend:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigLegend":{"properties":{"nested":{"description":"Show nested legend with hierarchical breakdown levels.\n","type":"boolean"},"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visible":{"description":"Legend visibility: auto, visible, or hidden.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigQuery:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueTreemapConfigValueDisplay:KibanaDashboardSectionPanelVisConfigByValueTreemapConfigValueDisplay":{"properties":{"mode":{"description":"Value display mode: hidden, absolute, or percentage.\n","type":"string"},"percentDecimals":{"description":"Decimal places for percentage display (0-10).\n","type":"number"}},"required":["mode"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfig:KibanaDashboardSectionPanelVisConfigByValueWaffleConfig":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","legend","sampling"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For non-ES|QL, this specifies the data view or index; for ES|QL, this specifies the ES|QL query dataset.\n","type":"string"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldown"},"type":"array"},"esqlGroupBies":{"description":"Breakdown columns for ES|QL waffles. Mutually exclusive with <span pulumi-lang-nodejs=\"`groupBy`\" pulumi-lang-dotnet=\"`GroupBy`\" pulumi-lang-go=\"`groupBy`\" pulumi-lang-python=\"`group_by`\" pulumi-lang-yaml=\"`groupBy`\" pulumi-lang-java=\"`groupBy`\">`group_by`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlGroupBy:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlGroupBy"},"type":"array"},"esqlMetrics":{"description":"Metric columns for ES|QL waffles (minimum 1). Mutually exclusive with <span pulumi-lang-nodejs=\"`metrics`\" pulumi-lang-dotnet=\"`Metrics`\" pulumi-lang-go=\"`metrics`\" pulumi-lang-python=\"`metrics`\" pulumi-lang-yaml=\"`metrics`\" pulumi-lang-java=\"`metrics`\">`metrics`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlMetric"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigFilter:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigFilter"},"type":"array"},"groupBies":{"description":"Breakdown dimensions for non-ES|QL waffles. Each <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span> is a JSON object (terms, date*histogram, etc.) matching the Kibana Lens waffle schema.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigGroupBy:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigGroupBy"},"type":"array"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this chart. Default is false.\n","type":"boolean"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigLegend:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigLegend","description":"Legend configuration for the waffle chart.\n"},"metrics":{"description":"Metric configurations for non-ES|QL waffles (minimum 1). Each <span pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\">`config_json`</span> is a JSON object (e.g. count, sum, or formula) matching the Kibana Lens waffle schema.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigMetric:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigMetric"},"type":"array"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigQuery:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigQuery","description":"Query configuration for filtering data. Required for non-ES|QL partition charts.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"},"valueDisplay":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigValueDisplay:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigValueDisplay","description":"Configuration for displaying values in chart cells.\n"}},"required":["dataSourceJson","legend"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlGroupBy:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlGroupBy":{"properties":{"collapseBy":{"description":"Collapse function when multiple rows map to the same bucket.\n","type":"string"},"colorJson":{"description":"Color mapping as JSON (`colorMapping` union).\n","type":"string"},"column":{"description":"ES|QL column for the breakdown.\n","type":"string"},"formatJson":{"description":"Column format as JSON (e.g. `{\"type\":\"number\"}`). Defaults to numeric format when omitted.\n","type":"string"},"label":{"description":"Optional label for the group-by column.\n","type":"string"}},"required":["collapseBy","colorJson","column"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlMetric:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlMetric":{"properties":{"color":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlMetricColor:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlMetricColor","description":"Static color for the metric.\n"},"column":{"description":"ES|QL column name for the metric.\n","type":"string"},"formatJson":{"description":"Number or other format configuration as JSON (`formatType` union).\n","type":"string"},"label":{"description":"Optional label for the metric.\n","type":"string"}},"required":["color","column","formatJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlMetricColor:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigEsqlMetricColor":{"properties":{"color":{"description":"Color value (e.g. hex).\n","type":"string"},"type":{"description":"Color type; use <span pulumi-lang-nodejs=\"`static`\" pulumi-lang-dotnet=\"`Static`\" pulumi-lang-go=\"`static`\" pulumi-lang-python=\"`static`\" pulumi-lang-yaml=\"`static`\" pulumi-lang-java=\"`static`\">`static`</span> for partition chart ES|QL metrics.\n","type":"string"}},"required":["color","type"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigFilter:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigGroupBy:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigGroupBy":{"properties":{"configJson":{"description":"Group-by operation as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigLegend:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigLegend":{"properties":{"size":{"description":"Legend size: auto, s, m, l, or xl.\n","type":"string"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"values":{"description":"Legend value display modes. For example <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> shows raw metric values in the legend.\n","items":{"type":"string"},"type":"array"},"visible":{"description":"Legend visibility: auto, visible, or hidden.\n","type":"string"}},"required":["size"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigMetric:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigMetric":{"properties":{"configJson":{"description":"Metric operation as JSON.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigQuery:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueWaffleConfigValueDisplay:KibanaDashboardSectionPanelVisConfigByValueWaffleConfigValueDisplay":{"properties":{"mode":{"description":"Value display mode: hidden, absolute, or percentage.\n","type":"string"},"percentDecimals":{"description":"Decimal places for percentage display (0-10).\n","type":"number"}},"required":["mode"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfig:KibanaDashboardSectionPanelVisConfigByValueXyChartConfig":{"properties":{"axis":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxis:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxis","description":"Axis configuration for X, Y, and secondary Y axes.\n"},"decorations":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigDecorations:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDecorations","description":"Visual enhancements and styling options for the chart.\n"},"description":{"description":"The description of the chart.\n","type":"string"},"drilldowns":{"description":"Optional drilldowns for this chart (max 100 per Kibana API). Each entry sets exactly one of <span pulumi-lang-nodejs=\"`dashboardDrilldown`\" pulumi-lang-dotnet=\"`DashboardDrilldown`\" pulumi-lang-go=\"`dashboardDrilldown`\" pulumi-lang-python=\"`dashboard_drilldown`\" pulumi-lang-yaml=\"`dashboardDrilldown`\" pulumi-lang-java=\"`dashboardDrilldown`\">`dashboard_drilldown`</span>, <span pulumi-lang-nodejs=\"`discoverDrilldown`\" pulumi-lang-dotnet=\"`DiscoverDrilldown`\" pulumi-lang-go=\"`discoverDrilldown`\" pulumi-lang-python=\"`discover_drilldown`\" pulumi-lang-yaml=\"`discoverDrilldown`\" pulumi-lang-java=\"`discoverDrilldown`\">`discover_drilldown`</span>, or <span pulumi-lang-nodejs=\"`urlDrilldown`\" pulumi-lang-dotnet=\"`UrlDrilldown`\" pulumi-lang-go=\"`urlDrilldown`\" pulumi-lang-python=\"`url_drilldown`\" pulumi-lang-yaml=\"`urlDrilldown`\" pulumi-lang-java=\"`urlDrilldown`\">`url_drilldown`</span>.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldown"},"type":"array"},"filters":{"description":"Additional filters to apply to the chart data (maximum 100).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigFilter:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigFilter"},"type":"array"},"fitting":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigFitting:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigFitting","description":"Missing data interpolation configuration. Only valid fitting types are applied per chart type.\n"},"hideBorder":{"description":"When true, suppresses the chart panel border.\n","type":"boolean"},"hideTitle":{"description":"When true, suppresses the chart title.\n","type":"boolean"},"layers":{"description":"Chart layers configuration. Minimum 1 layer required. Each layer can be a data layer or reference line layer.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayer:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayer"},"type":"array"},"legend":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigLegend:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLegend","description":"Legend configuration for the XY chart.\n"},"query":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigQuery:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigQuery","description":"Query configuration for filtering data.\n"},"referencesJson":{"description":"Optional normalized JSON array of `{ id, name, type }` saved-object references, matching the chart root API <span pulumi-lang-nodejs=\"`references`\" pulumi-lang-dotnet=\"`References`\" pulumi-lang-go=\"`references`\" pulumi-lang-python=\"`references`\" pulumi-lang-yaml=\"`references`\" pulumi-lang-java=\"`references`\">`references`</span> list.\n","type":"string"},"timeRange":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigTimeRange","description":"Chart-level time selection (<span pulumi-lang-nodejs=\"`from`\" pulumi-lang-dotnet=\"`From`\" pulumi-lang-go=\"`from`\" pulumi-lang-python=\"`from`\" pulumi-lang-yaml=\"`from`\" pulumi-lang-java=\"`from`\">`from`</span>, <span pulumi-lang-nodejs=\"`to`\" pulumi-lang-dotnet=\"`To`\" pulumi-lang-go=\"`to`\" pulumi-lang-python=\"`to`\" pulumi-lang-yaml=\"`to`\" pulumi-lang-java=\"`to`\">`to`</span>, optional <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>), same shape as the dashboard root <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>. When omitted (null), the provider omits <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> from the API payload on write and preserves null in state when the API returns no panel-level <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span> on read.\n"},"title":{"description":"The title of the chart displayed in the panel.\n","type":"string"}},"required":["axis","decorations","fitting","layers","legend"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxis:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxis":{"properties":{"x":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisX:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisX","description":"X-axis (horizontal) configuration.\n"},"y":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY","description":"Primary Y-axis configuration with scale and bounds.\n"},"y2":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY2:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY2","description":"Secondary Y-axis configuration with scale and bounds.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisX:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisX":{"language":{"nodejs":{"requiredOutputs":["domainJson","grid","labelOrientation","ticks"]}},"properties":{"domainJson":{"description":"Axis domain configuration as JSON. Can be 'fit' mode or 'custom' mode with min, max, and optional fit flags.\n","type":"string"},"grid":{"description":"Whether to show grid lines for this axis.\n","type":"boolean"},"labelOrientation":{"description":"Orientation of the axis labels.\n","type":"string"},"scale":{"description":"X-axis scale: linear (numeric), ordinal (categorical), or temporal (dates).\n","type":"string"},"ticks":{"description":"Whether to show tick marks on the axis.\n","type":"boolean"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisXTitle:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisXTitle","description":"Axis title configuration.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisXTitle:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisXTitle":{"language":{"nodejs":{"requiredOutputs":["visible"]}},"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY2:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY2":{"language":{"nodejs":{"requiredOutputs":["domainJson","scale"]}},"properties":{"domainJson":{"description":"Y-axis domain configuration as JSON. Can be 'fit' mode or 'custom' mode with min, max, and optional fit flags.\n","type":"string"},"grid":{"description":"Whether to show grid lines for this axis.\n","type":"boolean"},"labelOrientation":{"description":"Orientation of the axis labels.\n","type":"string"},"scale":{"description":"Y-axis scale type for data transformation.\n","type":"string"},"ticks":{"description":"Whether to show tick marks on the axis.\n","type":"boolean"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY2Title:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY2Title","description":"Axis title configuration.\n"}},"required":["domainJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY2Title:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY2Title":{"language":{"nodejs":{"requiredOutputs":["visible"]}},"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisY":{"language":{"nodejs":{"requiredOutputs":["domainJson","scale"]}},"properties":{"domainJson":{"description":"Y-axis domain configuration as JSON. Can be 'fit' mode or 'custom' mode with min, max, and optional fit flags.\n","type":"string"},"grid":{"description":"Whether to show grid lines for this axis.\n","type":"boolean"},"labelOrientation":{"description":"Orientation of the axis labels.\n","type":"string"},"scale":{"description":"Y-axis scale type for data transformation.\n","type":"string"},"ticks":{"description":"Whether to show tick marks on the axis.\n","type":"boolean"},"title":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisYTitle:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisYTitle","description":"Axis title configuration.\n"}},"required":["domainJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisYTitle:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigAxisYTitle":{"language":{"nodejs":{"requiredOutputs":["visible"]}},"properties":{"value":{"description":"Axis title text.\n","type":"string"},"visible":{"description":"Whether to show the title.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDecorations:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDecorations":{"language":{"nodejs":{"requiredOutputs":["fillOpacity"]}},"properties":{"fillOpacity":{"description":"Area chart fill opacity (0-1 typical, max 2 for legacy).\n","type":"number"},"lineInterpolation":{"description":"Line interpolation method.\n","type":"string"},"minimumBarHeight":{"description":"Minimum bar height in pixels.\n","type":"number"},"pointVisibility":{"description":"Show data points on lines. Valid values are: auto, always, never.\n","type":"string"},"showCurrentTimeMarker":{"description":"Show current time marker line.\n","type":"boolean"},"showEndZones":{"description":"Show end zones for partial buckets.\n","type":"boolean"},"showValueLabels":{"description":"Display value labels on data points.\n","type":"boolean"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldown:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldown":{"properties":{"dashboardDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownDashboardDrilldown","description":"Navigate to another dashboard using current filters/time range.\n"},"discoverDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownDiscoverDrilldown","description":"Open Discover with contextual filters.\n"},"urlDrilldown":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownUrlDrilldown","description":"Open a URL drilldown configured with explicit trigger semantics.\n"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownDashboardDrilldown:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownDashboardDrilldown":{"language":{"nodejs":{"requiredOutputs":["dashboardId","label","openInNewTab","trigger","useFilters","useTimeRange"]}},"properties":{"dashboardId":{"description":"Target dashboard id.\n","type":"string"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the target dashboard in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"},"useFilters":{"description":"When true, forwards filter context.\n","type":"boolean"},"useTimeRange":{"description":"When true, forwards the time range.\n","type":"boolean"}},"required":["dashboardId","label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownDiscoverDrilldown:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownDiscoverDrilldown":{"language":{"nodejs":{"requiredOutputs":["label","openInNewTab","trigger"]}},"properties":{"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens Discover in a new browser tab.\n","type":"boolean"},"trigger":{"description":"**Computed** — Kibana fixes this to <span pulumi-lang-nodejs=\"`onApplyFilter`\" pulumi-lang-dotnet=\"`OnApplyFilter`\" pulumi-lang-go=\"`onApplyFilter`\" pulumi-lang-python=\"`on_apply_filter`\" pulumi-lang-yaml=\"`onApplyFilter`\" pulumi-lang-java=\"`onApplyFilter`\">`on_apply_filter`</span>; reflected in state after apply. Do not set in configuration.\n","type":"string"}},"required":["label"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownUrlDrilldown:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigDrilldownUrlDrilldown":{"language":{"nodejs":{"requiredOutputs":["encodeUrl","label","openInNewTab","trigger","url"]}},"properties":{"encodeUrl":{"description":"When true, encodes interpolated URL parameters.\n","type":"boolean"},"label":{"description":"Human-readable drilldown label.\n","type":"string"},"openInNewTab":{"description":"When true, opens the URL in a new browser tab.\n","type":"boolean"},"trigger":{"description":"Trigger that fires this drilldown.\n","type":"string"},"url":{"description":"Destination URL.\n","type":"string"}},"required":["label","trigger","url"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigFilter:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigFilter":{"properties":{"filterJson":{"description":"Chart filter as normalized JSON. Must match the Kibana dashboard API for this chart: one of the filter union members (condition, group, DSL, or spatial) described in the dashboards OpenAPI specification.\n","type":"string"}},"required":["filterJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigFitting:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigFitting":{"properties":{"dotted":{"description":"Show fitted values as dotted lines.\n","type":"boolean"},"endValue":{"description":"How to handle the end value for fitting.\n","type":"string"},"type":{"description":"Fitting function type for missing data.\n","type":"string"}},"required":["type"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayer:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayer":{"properties":{"dataLayer":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerDataLayer:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerDataLayer","description":"Configuration for data layers (area, line, bar charts). Mutually exclusive with <span pulumi-lang-nodejs=\"`referenceLineLayer`\" pulumi-lang-dotnet=\"`ReferenceLineLayer`\" pulumi-lang-go=\"`referenceLineLayer`\" pulumi-lang-python=\"`reference_line_layer`\" pulumi-lang-yaml=\"`referenceLineLayer`\" pulumi-lang-java=\"`referenceLineLayer`\">`reference_line_layer`</span>.\n"},"referenceLineLayer":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerReferenceLineLayer:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerReferenceLineLayer","description":"Configuration for reference line layers. Mutually exclusive with <span pulumi-lang-nodejs=\"`dataLayer`\" pulumi-lang-dotnet=\"`DataLayer`\" pulumi-lang-go=\"`dataLayer`\" pulumi-lang-python=\"`data_layer`\" pulumi-lang-yaml=\"`dataLayer`\" pulumi-lang-java=\"`dataLayer`\">`data_layer`</span>.\n"},"type":{"description":"The type of layer. Valid values: 'area', 'line', 'bar', 'horizontal*bar', 'reference*lines' for NoESQL layers; 'area*chart', 'line*chart', 'bar*chart', 'horizontal*bar*chart', 'reference*lines' for ESQL layers.\n","type":"string"}},"required":["type"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerDataLayer:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerDataLayer":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","sampling","ys"]}},"properties":{"breakdownByJson":{"description":"Split series configuration as JSON. For ES|QL: column, operation, optional collapse_by, and color mapping. For standard: field, operation, and optional parameters.\n","type":"string"},"dataSourceJson":{"description":"Dataset configuration as JSON. For ES|QL layers, this specifies the ES|QL query. For standard layers, this specifies the data view and query.\n","type":"string"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this layer. Default is false.\n","type":"boolean"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"xJson":{"description":"X-axis configuration as JSON. For ES|QL: column and operation. For standard: field, operation, and optional parameters.\n","type":"string"},"ys":{"description":"Array of Y-axis metrics. Each entry defines a metric to display on the Y-axis.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerDataLayerY:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerDataLayerY"},"type":"array"}},"required":["dataSourceJson","ys"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerDataLayerY:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerDataLayerY":{"properties":{"configJson":{"description":"Y-axis metric configuration as JSON. For ES|QL: axis, color, column, and operation. For standard: axis, color, and metric definition.\n","type":"string"}},"required":["configJson"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerReferenceLineLayer:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerReferenceLineLayer":{"language":{"nodejs":{"requiredOutputs":["dataSourceJson","ignoreGlobalFilters","sampling","thresholds"]}},"properties":{"dataSourceJson":{"description":"Dataset configuration as JSON. For ES|QL layers, this specifies the ES|QL query. For standard layers, this specifies the data view and query.\n","type":"string"},"ignoreGlobalFilters":{"description":"If true, ignore global filters when fetching data for this layer. Default is false.\n","type":"boolean"},"sampling":{"description":"Sampling factor between 0 (no sampling) and 1 (full sampling). Default is 1.\n","type":"number"},"thresholds":{"description":"Array of reference line thresholds.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerReferenceLineLayerThreshold:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerReferenceLineLayerThreshold"},"type":"array"}},"required":["dataSourceJson","thresholds"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerReferenceLineLayerThreshold:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLayerReferenceLineLayerThreshold":{"properties":{"axis":{"description":"Which axis the reference line applies to. Valid values: 'left', 'right'.\n","type":"string"},"colorJson":{"description":"Color for the reference line. Can be a static color string or dynamic color configuration as JSON.\n","type":"string"},"column":{"description":"Column to use (for ES|QL layers).\n","type":"string"},"fill":{"description":"Fill direction for reference line. Valid values: 'none', 'above', 'below'.\n","type":"string"},"icon":{"description":"Icon to display on the reference line. Valid values: 'alert', 'asterisk', 'bell', 'bolt', 'bug', 'circle', 'editorComment', 'flag', 'heart', 'mapMarker', 'pinFilled', 'starEmpty', 'starFilled', 'tag', 'triangle'.\n","type":"string"},"operation":{"description":"Operation to apply (for ES|QL: aggregation function; for standard: metric calculation type).\n","type":"string"},"strokeDash":{"description":"Line style. Valid values: 'solid', 'dashed', 'dotted'.\n","type":"string"},"strokeWidth":{"description":"Line width in pixels.\n","type":"number"},"text":{"description":"Text display option for the reference line. Valid values include: 'auto', 'name', 'none', 'label'.\n","type":"string"},"valueJson":{"description":"Metric configuration as JSON (for standard layers). Defines the calculation for the threshold value.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLegend:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigLegend":{"language":{"nodejs":{"requiredOutputs":["inside","position","size","visibility"]}},"properties":{"alignment":{"description":"Legend alignment when positioned inside the chart. Valid when 'inside' is true.\n","type":"string"},"columns":{"description":"Number of legend columns when positioned inside the chart (1-5). Valid when 'inside' is true.\n","type":"number"},"inside":{"description":"Position legend inside the chart. When true, use 'columns' and 'alignment'. When false or omitted, use 'position' and 'size'.\n","type":"boolean"},"position":{"description":"Legend position when positioned outside the chart. Valid when 'inside' is false or omitted.\n","type":"string"},"size":{"description":"Legend size when positioned outside the chart. Valid for left/right outside legends. Values use the Kibana API enum: auto, s, m, l, xl.\n","type":"string"},"statistics":{"description":"Statistics to display in legend (maximum 17).\n","items":{"type":"string"},"type":"array"},"truncateAfterLines":{"description":"Maximum lines before truncating legend items (1-10).\n","type":"number"},"visibility":{"description":"Legend visibility (auto, visible, hidden).\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigQuery:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigQuery":{"language":{"nodejs":{"requiredOutputs":["expression","language"]}},"properties":{"expression":{"description":"Filter expression string.\n","type":"string"},"language":{"description":"Query language (default: 'kql').\n","type":"string"}},"required":["expression"],"type":"object"},"elasticstack:index/KibanaDashboardSectionPanelVisConfigByValueXyChartConfigTimeRange:KibanaDashboardSectionPanelVisConfigByValueXyChartConfigTimeRange":{"properties":{"from":{"description":"Start of the chart time range.\n","type":"string"},"mode":{"description":"Optional time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior chart `time_range.mode` from configuration or state (same pattern as REQ-009 on the dashboard <span pulumi-lang-nodejs=\"`timeRange`\" pulumi-lang-dotnet=\"`TimeRange`\" pulumi-lang-go=\"`timeRange`\" pulumi-lang-python=\"`time_range`\" pulumi-lang-yaml=\"`timeRange`\" pulumi-lang-java=\"`timeRange`\">`time_range`</span>).\n","type":"string"},"to":{"description":"End of the chart time range.\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDashboardTimeRange:KibanaDashboardTimeRange":{"properties":{"from":{"description":"Start of the time range (e.g., 'now-15m', '2023-01-01T00:00:00Z').\n","type":"string"},"mode":{"description":"Time range mode. Valid values are <span pulumi-lang-nodejs=\"`absolute`\" pulumi-lang-dotnet=\"`Absolute`\" pulumi-lang-go=\"`absolute`\" pulumi-lang-python=\"`absolute`\" pulumi-lang-yaml=\"`absolute`\" pulumi-lang-java=\"`absolute`\">`absolute`</span> or <span pulumi-lang-nodejs=\"`relative`\" pulumi-lang-dotnet=\"`Relative`\" pulumi-lang-go=\"`relative`\" pulumi-lang-python=\"`relative`\" pulumi-lang-yaml=\"`relative`\" pulumi-lang-java=\"`relative`\">`relative`</span>. When the GET API omits <span pulumi-lang-nodejs=\"`mode`\" pulumi-lang-dotnet=\"`Mode`\" pulumi-lang-go=\"`mode`\" pulumi-lang-python=\"`mode`\" pulumi-lang-yaml=\"`mode`\" pulumi-lang-java=\"`mode`\">`mode`</span>, the provider preserves the prior `time_range.mode` from configuration or state.\n","type":"string"},"to":{"description":"End of the time range (e.g., 'now', '2023-12-31T23:59:59Z').\n","type":"string"}},"required":["from","to"],"type":"object"},"elasticstack:index/KibanaDataViewDataView:KibanaDataViewDataView":{"language":{"nodejs":{"requiredOutputs":["allowNoIndex","fieldFormats","id","name","runtimeFieldMap","sourceFilters","timeFieldName","title"]}},"properties":{"allowNoIndex":{"description":"Allows the Data view saved object to exist before the data is available.\n","type":"boolean"},"fieldAttrs":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldAttrs:KibanaDataViewDataViewFieldAttrs"},"description":"Map of field attributes by field name.\n","type":"object"},"fieldFormats":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldFormats:KibanaDataViewDataViewFieldFormats"},"description":"Map of field formats by field name.\n","type":"object"},"id":{"description":"Saved object ID.\n","type":"string"},"name":{"description":"The Data view name.\n","type":"string"},"namespaces":{"description":"Array of space IDs for sharing the Data view between multiple spaces.\n","items":{"type":"string"},"type":"array"},"runtimeFieldMap":{"additionalProperties":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewRuntimeFieldMap:KibanaDataViewDataViewRuntimeFieldMap"},"description":"Map of runtime field definitions by field name.\n","type":"object"},"sourceFilters":{"description":"List of field names you want to filter out in Discover.\n","items":{"type":"string"},"type":"array"},"timeFieldName":{"description":"Timestamp field name, which you use for time-based Data views.\n","type":"string"},"title":{"description":"Comma-separated list of data streams, indices, and aliases that you want to search. Supports wildcards (*).\n","type":"string"}},"required":["title"],"type":"object"},"elasticstack:index/KibanaDataViewDataViewFieldAttrs:KibanaDataViewDataViewFieldAttrs":{"properties":{"count":{"description":"Popularity count for the field.\n","type":"number"},"customLabel":{"description":"Custom label for the field.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDataViewDataViewFieldFormats:KibanaDataViewDataViewFieldFormats":{"language":{"nodejs":{"requiredOutputs":["id","params"]}},"properties":{"id":{"description":"The ID of the field format. Valid values include: <span pulumi-lang-nodejs=\"`boolean`\" pulumi-lang-dotnet=\"`Boolean`\" pulumi-lang-go=\"`boolean`\" pulumi-lang-python=\"`boolean`\" pulumi-lang-yaml=\"`boolean`\" pulumi-lang-java=\"`boolean`\">`boolean`</span>, <span pulumi-lang-nodejs=\"`color`\" pulumi-lang-dotnet=\"`Color`\" pulumi-lang-go=\"`color`\" pulumi-lang-python=\"`color`\" pulumi-lang-yaml=\"`color`\" pulumi-lang-java=\"`color`\">`color`</span>, <span pulumi-lang-nodejs=\"`date`\" pulumi-lang-dotnet=\"`Date`\" pulumi-lang-go=\"`date`\" pulumi-lang-python=\"`date`\" pulumi-lang-yaml=\"`date`\" pulumi-lang-java=\"`date`\">`date`</span>, <span pulumi-lang-nodejs=\"`duration`\" pulumi-lang-dotnet=\"`Duration`\" pulumi-lang-go=\"`duration`\" pulumi-lang-python=\"`duration`\" pulumi-lang-yaml=\"`duration`\" pulumi-lang-java=\"`duration`\">`duration`</span>, <span pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\">`number`</span>, <span pulumi-lang-nodejs=\"`percent`\" pulumi-lang-dotnet=\"`Percent`\" pulumi-lang-go=\"`percent`\" pulumi-lang-python=\"`percent`\" pulumi-lang-yaml=\"`percent`\" pulumi-lang-java=\"`percent`\">`percent`</span>, <span 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`\">`relative_date`</span>, <span 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`\">`static_lookup`</span>, <span pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\">`string`</span>, <span pulumi-lang-nodejs=\"`truncate`\" pulumi-lang-dotnet=\"`Truncate`\" pulumi-lang-go=\"`truncate`\" pulumi-lang-python=\"`truncate`\" pulumi-lang-yaml=\"`truncate`\" pulumi-lang-java=\"`truncate`\">`truncate`</span>, <span pulumi-lang-nodejs=\"`url`\" pulumi-lang-dotnet=\"`Url`\" pulumi-lang-go=\"`url`\" pulumi-lang-python=\"`url`\" pulumi-lang-yaml=\"`url`\" pulumi-lang-java=\"`url`\">`url`</span>.\n","type":"string"},"params":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldFormatsParams:KibanaDataViewDataViewFieldFormatsParams"}},"required":["id"],"type":"object"},"elasticstack:index/KibanaDataViewDataViewFieldFormatsParams:KibanaDataViewDataViewFieldFormatsParams":{"properties":{"colors":{"description":"Color rules for the field.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldFormatsParamsColor:KibanaDataViewDataViewFieldFormatsParamsColor"},"type":"array"},"fieldLength":{"description":"Length to truncate the field value.\n","type":"number"},"fieldType":{"description":"Field type for color formatting (e.g., <span pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\">`string`</span>, <span pulumi-lang-nodejs=\"`number`\" pulumi-lang-dotnet=\"`Number`\" pulumi-lang-go=\"`number`\" pulumi-lang-python=\"`number`\" pulumi-lang-yaml=\"`number`\" pulumi-lang-java=\"`number`\">`number`</span>).\n","type":"string"},"height":{"description":"Height for image type URLs.\n","type":"number"},"includeSpaceWithSuffix":{"description":"Whether to include a space before the suffix in duration format.\n","type":"boolean"},"inputFormat":{"description":"Input format for duration fields (e.g., <span pulumi-lang-nodejs=\"`hours`\" pulumi-lang-dotnet=\"`Hours`\" pulumi-lang-go=\"`hours`\" pulumi-lang-python=\"`hours`\" pulumi-lang-yaml=\"`hours`\" pulumi-lang-java=\"`hours`\">`hours`</span>, <span pulumi-lang-nodejs=\"`minutes`\" pulumi-lang-dotnet=\"`Minutes`\" pulumi-lang-go=\"`minutes`\" pulumi-lang-python=\"`minutes`\" pulumi-lang-yaml=\"`minutes`\" pulumi-lang-java=\"`minutes`\">`minutes`</span>).\n","type":"string"},"labeltemplate":{"description":"Label template for the field value.\n","type":"string"},"lookupEntries":{"description":"Key-value pairs for static lookup.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaDataViewDataViewFieldFormatsParamsLookupEntry:KibanaDataViewDataViewFieldFormatsParamsLookupEntry"},"type":"array"},"outputFormat":{"description":"Output format for duration fields (e.g., `humanizePrecise`, <span pulumi-lang-nodejs=\"`humanize`\" pulumi-lang-dotnet=\"`Humanize`\" pulumi-lang-go=\"`humanize`\" pulumi-lang-python=\"`humanize`\" pulumi-lang-yaml=\"`humanize`\" pulumi-lang-java=\"`humanize`\">`humanize`</span>).\n","type":"string"},"outputPrecision":{"description":"Precision for duration output.\n","type":"number"},"pattern":{"description":"Pattern for formatting the field value.\n","type":"string"},"timezone":{"description":"Timezone for date formatting (e.g., `America/New_York`).\n","type":"string"},"transform":{"description":"Transform to apply to string fields (e.g., <span pulumi-lang-nodejs=\"`upper`\" pulumi-lang-dotnet=\"`Upper`\" pulumi-lang-go=\"`upper`\" pulumi-lang-python=\"`upper`\" pulumi-lang-yaml=\"`upper`\" pulumi-lang-java=\"`upper`\">`upper`</span>, <span pulumi-lang-nodejs=\"`lower`\" pulumi-lang-dotnet=\"`Lower`\" pulumi-lang-go=\"`lower`\" pulumi-lang-python=\"`lower`\" pulumi-lang-yaml=\"`lower`\" pulumi-lang-java=\"`lower`\">`lower`</span>).\n","type":"string"},"type":{"description":"Type of URL format (e.g., <span pulumi-lang-nodejs=\"`a`\" pulumi-lang-dotnet=\"`A`\" pulumi-lang-go=\"`a`\" pulumi-lang-python=\"`a`\" pulumi-lang-yaml=\"`a`\" pulumi-lang-java=\"`a`\">`a`</span>, <span pulumi-lang-nodejs=\"`img`\" pulumi-lang-dotnet=\"`Img`\" pulumi-lang-go=\"`img`\" pulumi-lang-python=\"`img`\" pulumi-lang-yaml=\"`img`\" pulumi-lang-java=\"`img`\">`img`</span>, <span pulumi-lang-nodejs=\"`audio`\" pulumi-lang-dotnet=\"`Audio`\" pulumi-lang-go=\"`audio`\" pulumi-lang-python=\"`audio`\" pulumi-lang-yaml=\"`audio`\" pulumi-lang-java=\"`audio`\">`audio`</span>).\n","type":"string"},"unknownKeyValue":{"description":"Value to display when key is not found in lookup.\n","type":"string"},"urltemplate":{"description":"URL template for the field value.\n","type":"string"},"useShortSuffix":{"description":"Whether to use short suffixes in duration format.\n","type":"boolean"},"width":{"description":"Width for image type URLs.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaDataViewDataViewFieldFormatsParamsColor:KibanaDataViewDataViewFieldFormatsParamsColor":{"properties":{"background":{"description":"Background color in hex format.\n","type":"string"},"range":{"description":"Range for the color rule (e.g., `-Infinity:Infinity`).\n","type":"string"},"regex":{"description":"Regex pattern for the color rule.\n","type":"string"},"text":{"description":"Text color in hex format.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDataViewDataViewFieldFormatsParamsLookupEntry:KibanaDataViewDataViewFieldFormatsParamsLookupEntry":{"properties":{"key":{"description":"Key for the lookup entry.\n","type":"string"},"value":{"description":"Value for the lookup entry.\n","type":"string"}},"required":["key","value"],"type":"object"},"elasticstack:index/KibanaDataViewDataViewRuntimeFieldMap:KibanaDataViewDataViewRuntimeFieldMap":{"properties":{"scriptSource":{"description":"Script of the runtime field.\n","type":"string"},"type":{"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":"string"}},"required":["scriptSource","type"],"type":"object"},"elasticstack:index/KibanaDataViewKibanaConnection:KibanaDataViewKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaDefaultDataViewKibanaConnection:KibanaDefaultDataViewKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"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"}},"required":["error","id","meta","title","type"],"type":"object"},"elasticstack:index/KibanaImportSavedObjectsErrorError:KibanaImportSavedObjectsErrorError":{"properties":{"type":{"type":"string"}},"required":["type"],"type":"object"},"elasticstack:index/KibanaImportSavedObjectsErrorMeta:KibanaImportSavedObjectsErrorMeta":{"properties":{"icon":{"type":"string"},"title":{"type":"string"}},"required":["icon","title"],"type":"object"},"elasticstack:index/KibanaImportSavedObjectsKibanaConnection:KibanaImportSavedObjectsKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaImportSavedObjectsSuccessResult:KibanaImportSavedObjectsSuccessResult":{"properties":{"destinationId":{"type":"string"},"id":{"type":"string"},"meta":{"$ref":"#/types/elasticstack:index%2FKibanaImportSavedObjectsSuccessResultMeta:KibanaImportSavedObjectsSuccessResultMeta"},"type":{"type":"string"}},"required":["destinationId","id","meta","type"],"type":"object"},"elasticstack:index/KibanaImportSavedObjectsSuccessResultMeta:KibanaImportSavedObjectsSuccessResultMeta":{"properties":{"icon":{"type":"string"},"title":{"type":"string"}},"required":["icon","title"],"type":"object"},"elasticstack:index/KibanaInstallPrebuiltRulesKibanaConnection:KibanaInstallPrebuiltRulesKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaMaintenanceWindowCustomSchedule:KibanaMaintenanceWindowCustomSchedule":{"language":{"nodejs":{"requiredOutputs":["duration","recurring","start","timezone"]}},"properties":{"duration":{"description":"The duration of the schedule. It allows values in `<integer><unit>` format. `<unit>` is one of <span pulumi-lang-nodejs=\"`d`\" pulumi-lang-dotnet=\"`D`\" pulumi-lang-go=\"`d`\" pulumi-lang-python=\"`d`\" pulumi-lang-yaml=\"`d`\" pulumi-lang-java=\"`d`\">`d`</span>, <span pulumi-lang-nodejs=\"`h`\" pulumi-lang-dotnet=\"`H`\" pulumi-lang-go=\"`h`\" pulumi-lang-python=\"`h`\" pulumi-lang-yaml=\"`h`\" pulumi-lang-java=\"`h`\">`h`</span>, <span pulumi-lang-nodejs=\"`m`\" pulumi-lang-dotnet=\"`M`\" pulumi-lang-go=\"`m`\" pulumi-lang-python=\"`m`\" pulumi-lang-yaml=\"`m`\" pulumi-lang-java=\"`m`\">`m`</span>, or <span pulumi-lang-nodejs=\"`s`\" pulumi-lang-dotnet=\"`S`\" pulumi-lang-go=\"`s`\" pulumi-lang-python=\"`s`\" pulumi-lang-yaml=\"`s`\" pulumi-lang-java=\"`s`\">`s`</span> for days, hours, minutes, seconds. For example: <span pulumi-lang-nodejs=\"`1d`\" pulumi-lang-dotnet=\"`1d`\" pulumi-lang-go=\"`1d`\" pulumi-lang-python=\"`1d`\" pulumi-lang-yaml=\"`1d`\" pulumi-lang-java=\"`1d`\">`1d`</span>, <span pulumi-lang-nodejs=\"`5h`\" pulumi-lang-dotnet=\"`5h`\" pulumi-lang-go=\"`5h`\" pulumi-lang-python=\"`5h`\" pulumi-lang-yaml=\"`5h`\" pulumi-lang-java=\"`5h`\">`5h`</span>, <span pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\">`30m`</span>, <span pulumi-lang-nodejs=\"`5000s`\" pulumi-lang-dotnet=\"`5000s`\" pulumi-lang-go=\"`5000s`\" pulumi-lang-python=\"`5000s`\" pulumi-lang-yaml=\"`5000s`\" pulumi-lang-java=\"`5000s`\">`5000s`</span>.\n","type":"string"},"recurring":{"$ref":"#/types/elasticstack:index%2FKibanaMaintenanceWindowCustomScheduleRecurring:KibanaMaintenanceWindowCustomScheduleRecurring","description":"A set schedule over which the maintenance window applies.\n"},"start":{"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","type":"string"},"timezone":{"description":"The timezone of the schedule. The default timezone is UTC.\n","type":"string"}},"required":["duration","recurring","start"],"type":"object"},"elasticstack:index/KibanaMaintenanceWindowCustomScheduleRecurring:KibanaMaintenanceWindowCustomScheduleRecurring":{"properties":{"end":{"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","type":"string"},"every":{"description":"The duration of the schedule. It allows values in `<integer><unit>` format. `<unit>` is one of <span pulumi-lang-nodejs=\"`d`\" pulumi-lang-dotnet=\"`D`\" pulumi-lang-go=\"`d`\" pulumi-lang-python=\"`d`\" pulumi-lang-yaml=\"`d`\" pulumi-lang-java=\"`d`\">`d`</span>, <span pulumi-lang-nodejs=\"`h`\" pulumi-lang-dotnet=\"`H`\" pulumi-lang-go=\"`h`\" pulumi-lang-python=\"`h`\" pulumi-lang-yaml=\"`h`\" pulumi-lang-java=\"`h`\">`h`</span>, <span pulumi-lang-nodejs=\"`m`\" pulumi-lang-dotnet=\"`M`\" pulumi-lang-go=\"`m`\" pulumi-lang-python=\"`m`\" pulumi-lang-yaml=\"`m`\" pulumi-lang-java=\"`m`\">`m`</span>, or <span pulumi-lang-nodejs=\"`s`\" pulumi-lang-dotnet=\"`S`\" pulumi-lang-go=\"`s`\" pulumi-lang-python=\"`s`\" pulumi-lang-yaml=\"`s`\" pulumi-lang-java=\"`s`\">`s`</span> for days, hours, minutes, seconds. For example: <span pulumi-lang-nodejs=\"`1d`\" pulumi-lang-dotnet=\"`1d`\" pulumi-lang-go=\"`1d`\" pulumi-lang-python=\"`1d`\" pulumi-lang-yaml=\"`1d`\" pulumi-lang-java=\"`1d`\">`1d`</span>, <span pulumi-lang-nodejs=\"`5h`\" pulumi-lang-dotnet=\"`5h`\" pulumi-lang-go=\"`5h`\" pulumi-lang-python=\"`5h`\" pulumi-lang-yaml=\"`5h`\" pulumi-lang-java=\"`5h`\">`5h`</span>, <span pulumi-lang-nodejs=\"`30m`\" pulumi-lang-dotnet=\"`30m`\" pulumi-lang-go=\"`30m`\" pulumi-lang-python=\"`30m`\" pulumi-lang-yaml=\"`30m`\" pulumi-lang-java=\"`30m`\">`30m`</span>, <span pulumi-lang-nodejs=\"`5000s`\" pulumi-lang-dotnet=\"`5000s`\" pulumi-lang-go=\"`5000s`\" pulumi-lang-python=\"`5000s`\" pulumi-lang-yaml=\"`5000s`\" pulumi-lang-java=\"`5000s`\">`5000s`</span>.\n","type":"string"},"occurrences":{"description":"The total number of recurrences of the schedule.\n","type":"number"},"onMonthDays":{"description":"The specific days of the month for a recurring schedule. Valid values are 1-31.\n","items":{"type":"number"},"type":"array"},"onMonths":{"description":"The specific months for a recurring schedule. Valid values are 1-12.\n","items":{"type":"number"},"type":"array"},"onWeekDays":{"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","items":{"type":"string"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaMaintenanceWindowKibanaConnection:KibanaMaintenanceWindowKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"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"}},"required":["alerting"],"type":"object"},"elasticstack:index/KibanaMaintenanceWindowScopeAlerting:KibanaMaintenanceWindowScopeAlerting":{"properties":{"kql":{"description":"A filter written in Kibana Query Language (KQL).\n","type":"string"}},"required":["kql"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleAction:KibanaSecurityDetectionRuleAction":{"language":{"nodejs":{"requiredOutputs":["actionTypeId","frequency","id","params","uuid"]}},"properties":{"actionTypeId":{"description":"The action type used for sending notifications (e.g., .slack, .email, .webhook, .pagerduty, etc.).\n","type":"string"},"alertsFilter":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleActionAlertsFilter:KibanaSecurityDetectionRuleActionAlertsFilter","description":"Conditions that affect whether the action runs. If you specify multiple conditions, all conditions must be met for the action to run.\n"},"frequency":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleActionFrequency:KibanaSecurityDetectionRuleActionFrequency","description":"The action frequency defines when the action runs.\n"},"group":{"description":"Optionally groups actions by use cases. Use 'default' for alert notifications.\n","type":"string"},"id":{"description":"The connector ID.\n","type":"string"},"params":{"description":"JSON-encoded object containing the allowed connector fields, which varies according to the connector type. Use `jsonencode({...})` to set this value.\n","type":"string"},"uuid":{"description":"A unique identifier for the action.\n","type":"string"}},"required":["actionTypeId","id","params"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleActionAlertsFilter:KibanaSecurityDetectionRuleActionAlertsFilter":{"properties":{"query":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleActionAlertsFilterQuery:KibanaSecurityDetectionRuleActionAlertsFilterQuery","description":"KQL query and Kibana filter DSL conditions that determine whether the action runs.\n"},"timeframe":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleActionAlertsFilterTimeframe:KibanaSecurityDetectionRuleActionAlertsFilterTimeframe","description":"Defines a period that limits whether the action runs.\n"}},"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleActionAlertsFilterQuery:KibanaSecurityDetectionRuleActionAlertsFilterQuery":{"language":{"nodejs":{"requiredOutputs":["filtersJson"]}},"properties":{"filtersJson":{"description":"JSON-encoded array of Kibana filter DSL objects. Use `jsonencode([])` for an empty filter list.\n","type":"string"},"kql":{"description":"Defines a KQL query filter that determines whether the action runs. Written in Kibana Query Language (KQL).\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleActionAlertsFilterTimeframe:KibanaSecurityDetectionRuleActionAlertsFilterTimeframe":{"properties":{"days":{"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","items":{"type":"number"},"type":"array"},"hoursEnd":{"description":"The end of the time frame in 24-hour notation (hh:mm).\n","type":"string"},"hoursStart":{"description":"The start of the time frame in 24-hour notation (hh:mm).\n","type":"string"},"timezone":{"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":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleActionFrequency:KibanaSecurityDetectionRuleActionFrequency":{"properties":{"notifyWhen":{"description":"Defines how often rules run actions. Valid values: onActionGroupChange, onActiveAlert, onThrottleInterval.\n","type":"string"},"summary":{"description":"Action summary indicates whether we will send a summary notification about all the generated alerts or notification per individual alert.\n","type":"boolean"},"throttle":{"description":"Time interval for throttling actions (e.g., '1h', '30m', 'no_actions', 'rule').\n","type":"string"}},"required":["notifyWhen","summary","throttle"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleAlertSuppression:KibanaSecurityDetectionRuleAlertSuppression":{"properties":{"duration":{"description":"Duration for which alerts are suppressed.\n","type":"string"},"groupBies":{"description":"Array of field names to group alerts by for suppression.\n","items":{"type":"string"},"type":"array"},"missingFieldsStrategy":{"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":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleExceptionsList:KibanaSecurityDetectionRuleExceptionsList":{"properties":{"id":{"description":"The exception container ID.\n","type":"string"},"listId":{"description":"The exception container's list ID.\n","type":"string"},"namespaceType":{"description":"The namespace type for the exception container.\n","type":"string"},"type":{"description":"The type of exception container. Valid values are <span pulumi-lang-nodejs=\"`detection`\" pulumi-lang-dotnet=\"`Detection`\" pulumi-lang-go=\"`detection`\" pulumi-lang-python=\"`detection`\" pulumi-lang-yaml=\"`detection`\" pulumi-lang-java=\"`detection`\">`detection`</span>, <span pulumi-lang-nodejs=\"`endpoint`\" pulumi-lang-dotnet=\"`Endpoint`\" pulumi-lang-go=\"`endpoint`\" pulumi-lang-python=\"`endpoint`\" pulumi-lang-yaml=\"`endpoint`\" pulumi-lang-java=\"`endpoint`\">`endpoint`</span>, <span 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`\">`endpoint_events`</span>, <span 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`\">`endpoint_host_isolation_exceptions`</span>, <span 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`\">`endpoint_blocklists`</span>, <span 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`\">`endpoint_trusted_apps`</span>, <span pulumi-lang-nodejs=\"`endpointTrustedDevices`\" pulumi-lang-dotnet=\"`EndpointTrustedDevices`\" pulumi-lang-go=\"`endpointTrustedDevices`\" pulumi-lang-python=\"`endpoint_trusted_devices`\" pulumi-lang-yaml=\"`endpointTrustedDevices`\" pulumi-lang-java=\"`endpointTrustedDevices`\">`endpoint_trusted_devices`</span>, and <span pulumi-lang-nodejs=\"`ruleDefault`\" pulumi-lang-dotnet=\"`RuleDefault`\" pulumi-lang-go=\"`ruleDefault`\" pulumi-lang-python=\"`rule_default`\" pulumi-lang-yaml=\"`ruleDefault`\" pulumi-lang-java=\"`ruleDefault`\">`rule_default`</span>.\n","type":"string"}},"required":["id","listId","namespaceType","type"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleKibanaConnection:KibanaSecurityDetectionRuleKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleRelatedIntegration:KibanaSecurityDetectionRuleRelatedIntegration":{"properties":{"integration":{"description":"Name of the specific integration.\n","type":"string"},"package":{"description":"Name of the integration package.\n","type":"string"},"version":{"description":"Version of the integration package.\n","type":"string"}},"required":["package","version"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleRequiredField:KibanaSecurityDetectionRuleRequiredField":{"language":{"nodejs":{"requiredOutputs":["ecs","name","type"]}},"properties":{"ecs":{"description":"Indicates whether the field is ECS-compliant. This is computed by the backend based on the field name and type.\n","type":"boolean"},"name":{"description":"Name of the Elasticsearch field.\n","type":"string"},"type":{"description":"Type of the Elasticsearch field.\n","type":"string"}},"required":["name","type"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleResponseAction:KibanaSecurityDetectionRuleResponseAction":{"properties":{"actionTypeId":{"description":"The action type used for response actions (.osquery, .endpoint).\n","type":"string"},"params":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseActionParams:KibanaSecurityDetectionRuleResponseActionParams","description":"Parameters for the response action. Structure varies based on action*type*id.\n"}},"required":["actionTypeId","params"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleResponseActionParams:KibanaSecurityDetectionRuleResponseActionParams":{"properties":{"command":{"description":"Command to run (endpoint only). Valid values: isolate, kill-process, suspend-process.\n","type":"string"},"comment":{"description":"Comment describing the action (endpoint only).\n","type":"string"},"config":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseActionParamsConfig:KibanaSecurityDetectionRuleResponseActionParamsConfig","description":"Configuration for process commands (endpoint only).\n"},"ecsMapping":{"additionalProperties":{"type":"string"},"description":"Map Osquery results columns to ECS fields (osquery only).\n","type":"object"},"packId":{"description":"Query pack identifier (osquery only).\n","type":"string"},"queries":{"description":"Array of queries to run (osquery only).\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleResponseActionParamsQuery:KibanaSecurityDetectionRuleResponseActionParamsQuery"},"type":"array"},"query":{"description":"SQL query to run (osquery only). Example: 'SELECT * FROM processes;'\n","type":"string"},"savedQueryId":{"description":"Saved query identifier (osquery only).\n","type":"string"},"timeout":{"description":"Timeout period in seconds (osquery only). Min: 60, Max: 900.\n","type":"number"}},"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleResponseActionParamsConfig:KibanaSecurityDetectionRuleResponseActionParamsConfig":{"language":{"nodejs":{"requiredOutputs":["field","overwrite"]}},"properties":{"field":{"description":"Field to use instead of process.pid.\n","type":"string"},"overwrite":{"description":"Whether to overwrite field with process.pid.\n","type":"boolean"}},"required":["field"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleResponseActionParamsQuery:KibanaSecurityDetectionRuleResponseActionParamsQuery":{"properties":{"ecsMapping":{"additionalProperties":{"type":"string"},"description":"ECS field mappings for this query.\n","type":"object"},"id":{"description":"Query ID.\n","type":"string"},"platform":{"description":"Platform to run the query on.\n","type":"string"},"query":{"description":"Query to run.\n","type":"string"},"removed":{"description":"Whether the query is removed.\n","type":"boolean"},"snapshot":{"description":"Whether this is a snapshot query.\n","type":"boolean"},"version":{"description":"Query version.\n","type":"string"}},"required":["id","query"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleRiskScoreMapping:KibanaSecurityDetectionRuleRiskScoreMapping":{"properties":{"field":{"description":"Source event field used to override the default risk_score.\n","type":"string"},"operator":{"description":"Operator to use for field value matching. Currently only 'equals' is supported.\n","type":"string"},"riskScore":{"description":"Risk score to use when the field matches the value (0-100). If omitted, uses the rule's default risk_score.\n","type":"number"},"value":{"description":"Value to match against the field.\n","type":"string"}},"required":["field","operator","value"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleSeverityMapping:KibanaSecurityDetectionRuleSeverityMapping":{"properties":{"field":{"description":"Source event field used to override the default severity.\n","type":"string"},"operator":{"description":"Operator to use for field value matching. Currently only 'equals' is supported.\n","type":"string"},"severity":{"description":"Severity level to use when the field matches the value.\n","type":"string"},"value":{"description":"Value to match against the field.\n","type":"string"}},"required":["field","operator","severity","value"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleThreat:KibanaSecurityDetectionRuleThreat":{"properties":{"framework":{"description":"Threat framework (typically 'MITRE ATT&CK').\n","type":"string"},"tactic":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatTactic:KibanaSecurityDetectionRuleThreatTactic","description":"MITRE ATT&CK tactic information.\n"},"techniques":{"description":"MITRE ATT&CK technique information.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatTechnique:KibanaSecurityDetectionRuleThreatTechnique"},"type":"array"}},"required":["framework","tactic"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleThreatMapping:KibanaSecurityDetectionRuleThreatMapping":{"properties":{"entries":{"description":"Array of mapping entries.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatMappingEntry:KibanaSecurityDetectionRuleThreatMappingEntry"},"type":"array"}},"required":["entries"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleThreatMappingEntry:KibanaSecurityDetectionRuleThreatMappingEntry":{"properties":{"field":{"description":"Event field to match.\n","type":"string"},"type":{"description":"Type of match (mapping).\n","type":"string"},"value":{"description":"Threat intelligence field to match against.\n","type":"string"}},"required":["field","type","value"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleThreatTactic:KibanaSecurityDetectionRuleThreatTactic":{"properties":{"id":{"description":"MITRE ATT&CK tactic ID.\n","type":"string"},"name":{"description":"MITRE ATT&CK tactic name.\n","type":"string"},"reference":{"description":"MITRE ATT&CK tactic reference URL.\n","type":"string"}},"required":["id","name","reference"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleThreatTechnique:KibanaSecurityDetectionRuleThreatTechnique":{"properties":{"id":{"description":"MITRE ATT&CK technique ID.\n","type":"string"},"name":{"description":"MITRE ATT&CK technique name.\n","type":"string"},"reference":{"description":"MITRE ATT&CK technique reference URL.\n","type":"string"},"subtechniques":{"description":"MITRE ATT&CK sub-technique information.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThreatTechniqueSubtechnique:KibanaSecurityDetectionRuleThreatTechniqueSubtechnique"},"type":"array"}},"required":["id","name","reference"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleThreatTechniqueSubtechnique:KibanaSecurityDetectionRuleThreatTechniqueSubtechnique":{"properties":{"id":{"description":"MITRE ATT&CK sub-technique ID.\n","type":"string"},"name":{"description":"MITRE ATT&CK sub-technique name.\n","type":"string"},"reference":{"description":"MITRE ATT&CK sub-technique reference URL.\n","type":"string"}},"required":["id","name","reference"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleThreshold:KibanaSecurityDetectionRuleThreshold":{"properties":{"cardinalities":{"description":"Cardinality settings for threshold rule.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityDetectionRuleThresholdCardinality:KibanaSecurityDetectionRuleThresholdCardinality"},"type":"array"},"fields":{"description":"Field(s) to use for threshold aggregation.\n","items":{"type":"string"},"type":"array"},"value":{"description":"The threshold value from which an alert is generated.\n","type":"number"}},"required":["value"],"type":"object"},"elasticstack:index/KibanaSecurityDetectionRuleThresholdCardinality:KibanaSecurityDetectionRuleThresholdCardinality":{"properties":{"field":{"description":"The field on which to calculate and compare the cardinality.\n","type":"string"},"value":{"description":"The threshold cardinality value.\n","type":"number"}},"required":["field","value"],"type":"object"},"elasticstack:index/KibanaSecurityEnableRuleKibanaConnection:KibanaSecurityEnableRuleKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityExceptionItemComment:KibanaSecurityExceptionItemComment":{"language":{"nodejs":{"requiredOutputs":["comment","id"]}},"properties":{"comment":{"description":"The comment text.\n","type":"string"},"id":{"description":"The unique identifier of the comment (auto-generated by Kibana).\n","type":"string"}},"required":["comment"],"type":"object"},"elasticstack:index/KibanaSecurityExceptionItemEntry:KibanaSecurityExceptionItemEntry":{"properties":{"entries":{"description":"Nested entries (for <span pulumi-lang-nodejs=\"`nested`\" pulumi-lang-dotnet=\"`Nested`\" pulumi-lang-go=\"`nested`\" pulumi-lang-python=\"`nested`\" pulumi-lang-yaml=\"`nested`\" pulumi-lang-java=\"`nested`\">`nested`</span> type). Only <span pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\">`match`</span>, <span 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`\">`match_any`</span>, and <span pulumi-lang-nodejs=\"`exists`\" pulumi-lang-dotnet=\"`Exists`\" pulumi-lang-go=\"`exists`\" pulumi-lang-python=\"`exists`\" pulumi-lang-yaml=\"`exists`\" pulumi-lang-java=\"`exists`\">`exists`</span> entry types are allowed as nested entries.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntryEntry:KibanaSecurityExceptionItemEntryEntry"},"type":"array"},"field":{"description":"The field name. Required for all entry types.\n","type":"string"},"list":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityExceptionItemEntryList:KibanaSecurityExceptionItemEntryList","description":"Value list reference (for <span pulumi-lang-nodejs=\"`list`\" pulumi-lang-dotnet=\"`List`\" pulumi-lang-go=\"`list`\" pulumi-lang-python=\"`list`\" pulumi-lang-yaml=\"`list`\" pulumi-lang-java=\"`list`\">`list`</span> type).\n"},"operator":{"description":"The operator to use. Valid values: <span pulumi-lang-nodejs=\"`included`\" pulumi-lang-dotnet=\"`Included`\" pulumi-lang-go=\"`included`\" pulumi-lang-python=\"`included`\" pulumi-lang-yaml=\"`included`\" pulumi-lang-java=\"`included`\">`included`</span>, <span pulumi-lang-nodejs=\"`excluded`\" pulumi-lang-dotnet=\"`Excluded`\" pulumi-lang-go=\"`excluded`\" pulumi-lang-python=\"`excluded`\" pulumi-lang-yaml=\"`excluded`\" pulumi-lang-java=\"`excluded`\">`excluded`</span>. Note: The operator field is not supported for nested entry types and will be ignored if specified.\n","type":"string"},"type":{"description":"The type of entry. Valid values: <span pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\">`match`</span>, <span 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`\">`match_any`</span>, <span pulumi-lang-nodejs=\"`list`\" pulumi-lang-dotnet=\"`List`\" pulumi-lang-go=\"`list`\" pulumi-lang-python=\"`list`\" pulumi-lang-yaml=\"`list`\" pulumi-lang-java=\"`list`\">`list`</span>, <span pulumi-lang-nodejs=\"`exists`\" pulumi-lang-dotnet=\"`Exists`\" pulumi-lang-go=\"`exists`\" pulumi-lang-python=\"`exists`\" pulumi-lang-yaml=\"`exists`\" pulumi-lang-java=\"`exists`\">`exists`</span>, <span pulumi-lang-nodejs=\"`nested`\" pulumi-lang-dotnet=\"`Nested`\" pulumi-lang-go=\"`nested`\" pulumi-lang-python=\"`nested`\" pulumi-lang-yaml=\"`nested`\" pulumi-lang-java=\"`nested`\">`nested`</span>, <span pulumi-lang-nodejs=\"`wildcard`\" pulumi-lang-dotnet=\"`Wildcard`\" pulumi-lang-go=\"`wildcard`\" pulumi-lang-python=\"`wildcard`\" pulumi-lang-yaml=\"`wildcard`\" pulumi-lang-java=\"`wildcard`\">`wildcard`</span>.\n","type":"string"},"value":{"description":"The value to match (for <span pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\">`match`</span> and <span pulumi-lang-nodejs=\"`wildcard`\" pulumi-lang-dotnet=\"`Wildcard`\" pulumi-lang-go=\"`wildcard`\" pulumi-lang-python=\"`wildcard`\" pulumi-lang-yaml=\"`wildcard`\" pulumi-lang-java=\"`wildcard`\">`wildcard`</span> types).\n","type":"string"},"values":{"description":"Array of values to match (for <span 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`\">`match_any`</span> type).\n","items":{"type":"string"},"type":"array"}},"required":["field","type"],"type":"object"},"elasticstack:index/KibanaSecurityExceptionItemEntryEntry:KibanaSecurityExceptionItemEntryEntry":{"properties":{"field":{"description":"The field name.\n","type":"string"},"operator":{"description":"The operator to use. Valid values: <span pulumi-lang-nodejs=\"`included`\" pulumi-lang-dotnet=\"`Included`\" pulumi-lang-go=\"`included`\" pulumi-lang-python=\"`included`\" pulumi-lang-yaml=\"`included`\" pulumi-lang-java=\"`included`\">`included`</span>, <span pulumi-lang-nodejs=\"`excluded`\" pulumi-lang-dotnet=\"`Excluded`\" pulumi-lang-go=\"`excluded`\" pulumi-lang-python=\"`excluded`\" pulumi-lang-yaml=\"`excluded`\" pulumi-lang-java=\"`excluded`\">`excluded`</span>.\n","type":"string"},"type":{"description":"The type of nested entry. Valid values: <span pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\">`match`</span>, <span 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`\">`match_any`</span>, <span pulumi-lang-nodejs=\"`exists`\" pulumi-lang-dotnet=\"`Exists`\" pulumi-lang-go=\"`exists`\" pulumi-lang-python=\"`exists`\" pulumi-lang-yaml=\"`exists`\" pulumi-lang-java=\"`exists`\">`exists`</span>.\n","type":"string"},"value":{"description":"The value to match (for <span pulumi-lang-nodejs=\"`match`\" pulumi-lang-dotnet=\"`Match`\" pulumi-lang-go=\"`match`\" pulumi-lang-python=\"`match`\" pulumi-lang-yaml=\"`match`\" pulumi-lang-java=\"`match`\">`match`</span> type).\n","type":"string"},"values":{"description":"Array of values to match (for <span 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`\">`match_any`</span> type).\n","items":{"type":"string"},"type":"array"}},"required":["field","operator","type"],"type":"object"},"elasticstack:index/KibanaSecurityExceptionItemEntryList:KibanaSecurityExceptionItemEntryList":{"properties":{"id":{"description":"The value list ID.\n","type":"string"},"type":{"description":"The value list type (e.g., <span pulumi-lang-nodejs=\"`keyword`\" pulumi-lang-dotnet=\"`Keyword`\" pulumi-lang-go=\"`keyword`\" pulumi-lang-python=\"`keyword`\" pulumi-lang-yaml=\"`keyword`\" pulumi-lang-java=\"`keyword`\">`keyword`</span>, <span pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\">`ip`</span>, <span 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`\">`ip_range`</span>).\n","type":"string"}},"required":["id","type"],"type":"object"},"elasticstack:index/KibanaSecurityExceptionItemKibanaConnection:KibanaSecurityExceptionItemKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityExceptionListKibanaConnection:KibanaSecurityExceptionListKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityListDataStreamsKibanaConnection:KibanaSecurityListDataStreamsKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityListItemKibanaConnection:KibanaSecurityListItemKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityListKibanaConnection:KibanaSecurityListKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityRoleElasticsearch:KibanaSecurityRoleElasticsearch":{"properties":{"clusters":{"description":"List of the cluster privileges.\n","items":{"type":"string"},"type":"array"},"indices":{"description":"A list of indices permissions entries.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearchIndex:KibanaSecurityRoleElasticsearchIndex"},"type":"array"},"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%2FKibanaSecurityRoleElasticsearchRemoteIndex:KibanaSecurityRoleElasticsearchRemoteIndex"},"type":"array"},"runAs":{"description":"A list of usernames the owners of this role can impersonate.\n","items":{"type":"string"},"type":"array"}},"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":{"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"privileges":{"description":"The index level privileges that the owners of the role have on the specified indices.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A search query that defines the documents the owners of the role have read access to.\n","type":"string"}},"required":["names","privileges"],"type":"object"},"elasticstack:index/KibanaSecurityRoleElasticsearchIndexFieldSecurity:KibanaSecurityRoleElasticsearchIndexFieldSecurity":{"properties":{"excepts":{"description":"List of the fields to which the grants will not be applied.\n","items":{"type":"string"},"type":"array"},"grants":{"description":"List of the fields to grant the access to.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaSecurityRoleElasticsearchRemoteIndex:KibanaSecurityRoleElasticsearchRemoteIndex":{"properties":{"clusters":{"description":"A list of cluster aliases to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity:KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"privileges":{"description":"The index level privileges that the owners of the role have on the specified indices.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A search query that defines the documents the owners of the role have read access to.\n","type":"string"}},"required":["clusters","names","privileges"],"type":"object"},"elasticstack:index/KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity:KibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity":{"properties":{"excepts":{"description":"List of the fields to which the grants will not be applied.\n","items":{"type":"string"},"type":"array"},"grants":{"description":"List of the fields to grant the access to.\n","items":{"type":"string"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaSecurityRoleKibana:KibanaSecurityRoleKibana":{"properties":{"bases":{"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","items":{"type":"string"},"type":"array"},"features":{"description":"List of privileges for specific features. When the feature privileges are specified, you are unable to use the \"base\" section.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSecurityRoleKibanaFeature:KibanaSecurityRoleKibanaFeature"},"type":"array"},"spaces":{"description":"The spaces to apply the privileges to. To grant access to all spaces, set to [\"*\"], or omit the value.\n","items":{"type":"string"},"type":"array"}},"required":["spaces"],"type":"object"},"elasticstack:index/KibanaSecurityRoleKibanaConnection:KibanaSecurityRoleKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSecurityRoleKibanaFeature:KibanaSecurityRoleKibanaFeature":{"properties":{"name":{"description":"Feature name.\n","type":"string"},"privileges":{"description":"Feature privileges.\n","items":{"type":"string"},"type":"array"}},"required":["name","privileges"],"type":"object"},"elasticstack:index/KibanaSloApmAvailabilityIndicator:KibanaSloApmAvailabilityIndicator":{"properties":{"environment":{"type":"string"},"filter":{"type":"string"},"index":{"type":"string"},"service":{"type":"string"},"transactionName":{"type":"string"},"transactionType":{"type":"string"}},"required":["environment","index","service","transactionName","transactionType"],"type":"object"},"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"}},"required":["environment","index","service","threshold","transactionName","transactionType"],"type":"object"},"elasticstack:index/KibanaSloArtifacts:KibanaSloArtifacts":{"language":{"nodejs":{"requiredOutputs":["dashboards"]}},"properties":{"dashboards":{"description":"Dashboard references attached to the SLO.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloArtifactsDashboard:KibanaSloArtifactsDashboard"},"type":"array"}},"type":"object"},"elasticstack:index/KibanaSloArtifactsDashboard:KibanaSloArtifactsDashboard":{"properties":{"id":{"description":"Dashboard saved object id.\n","type":"string"}},"required":["id"],"type":"object"},"elasticstack:index/KibanaSloHistogramCustomIndicator:KibanaSloHistogramCustomIndicator":{"language":{"nodejs":{"requiredOutputs":["index","timestampField"]}},"properties":{"dataViewId":{"description":"Optional data view id to use for this indicator.\n","type":"string"},"filter":{"type":"string"},"goods":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicatorGood:KibanaSloHistogramCustomIndicatorGood"},"type":"array"},"index":{"type":"string"},"timestampField":{"type":"string"},"totals":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloHistogramCustomIndicatorTotal:KibanaSloHistogramCustomIndicatorTotal"},"type":"array"}},"required":["index"],"type":"object"},"elasticstack:index/KibanaSloHistogramCustomIndicatorGood:KibanaSloHistogramCustomIndicatorGood":{"properties":{"aggregation":{"type":"string"},"field":{"type":"string"},"filter":{"type":"string"},"from":{"type":"number"},"to":{"type":"number"}},"required":["aggregation","field"],"type":"object"},"elasticstack:index/KibanaSloHistogramCustomIndicatorTotal:KibanaSloHistogramCustomIndicatorTotal":{"properties":{"aggregation":{"type":"string"},"field":{"type":"string"},"filter":{"type":"string"},"from":{"type":"number"},"to":{"type":"number"}},"required":["aggregation","field"],"type":"object"},"elasticstack:index/KibanaSloKibanaConnection:KibanaSloKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSloKqlCustomIndicator:KibanaSloKqlCustomIndicator":{"language":{"nodejs":{"requiredOutputs":["filterKql","good","goodKql","index","timestampField","total","totalKql"]}},"properties":{"dataViewId":{"description":"Optional data view id to use for this indicator.\n","type":"string"},"filter":{"type":"string"},"filterKql":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicatorFilterKql:KibanaSloKqlCustomIndicatorFilterKql"},"good":{"type":"string"},"goodKql":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicatorGoodKql:KibanaSloKqlCustomIndicatorGoodKql"},"index":{"type":"string"},"timestampField":{"type":"string"},"total":{"type":"string"},"totalKql":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicatorTotalKql:KibanaSloKqlCustomIndicatorTotalKql"}},"required":["index"],"type":"object"},"elasticstack:index/KibanaSloKqlCustomIndicatorFilterKql:KibanaSloKqlCustomIndicatorFilterKql":{"language":{"nodejs":{"requiredOutputs":["filters","kqlQuery"]}},"properties":{"filters":{"description":"Optional Kibana filter objects (query JSON) accompanying the KQL object form.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicatorFilterKqlFilter:KibanaSloKqlCustomIndicatorFilterKqlFilter"},"type":"array"},"kqlQuery":{"description":"KQL query string when using the object form.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSloKqlCustomIndicatorFilterKqlFilter:KibanaSloKqlCustomIndicatorFilterKqlFilter":{"language":{"nodejs":{"requiredOutputs":["query"]}},"properties":{"query":{"description":"Filter query as a JSON-encoded ES Query DSL object. Accepts any valid ES Query DSL (regexp, wildcard, bool, range, etc.). Use jsonencode({...}) to construct the value.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSloKqlCustomIndicatorGoodKql:KibanaSloKqlCustomIndicatorGoodKql":{"language":{"nodejs":{"requiredOutputs":["filters","kqlQuery"]}},"properties":{"filters":{"description":"Optional Kibana filter objects (query JSON) accompanying the KQL object form.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicatorGoodKqlFilter:KibanaSloKqlCustomIndicatorGoodKqlFilter"},"type":"array"},"kqlQuery":{"description":"KQL query string when using the object form.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSloKqlCustomIndicatorGoodKqlFilter:KibanaSloKqlCustomIndicatorGoodKqlFilter":{"language":{"nodejs":{"requiredOutputs":["query"]}},"properties":{"query":{"description":"Filter query as a JSON-encoded ES Query DSL object. Accepts any valid ES Query DSL (regexp, wildcard, bool, range, etc.). Use jsonencode({...}) to construct the value.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSloKqlCustomIndicatorTotalKql:KibanaSloKqlCustomIndicatorTotalKql":{"language":{"nodejs":{"requiredOutputs":["filters","kqlQuery"]}},"properties":{"filters":{"description":"Optional Kibana filter objects (query JSON) accompanying the KQL object form.\n","items":{"$ref":"#/types/elasticstack:index%2FKibanaSloKqlCustomIndicatorTotalKqlFilter:KibanaSloKqlCustomIndicatorTotalKqlFilter"},"type":"array"},"kqlQuery":{"description":"KQL query string when using the object form.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSloKqlCustomIndicatorTotalKqlFilter:KibanaSloKqlCustomIndicatorTotalKqlFilter":{"language":{"nodejs":{"requiredOutputs":["query"]}},"properties":{"query":{"description":"Filter query as a JSON-encoded ES Query DSL object. Accepts any valid ES Query DSL (regexp, wildcard, bool, range, etc.). Use jsonencode({...}) to construct the value.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSloMetricCustomIndicator:KibanaSloMetricCustomIndicator":{"language":{"nodejs":{"requiredOutputs":["index","timestampField"]}},"properties":{"dataViewId":{"description":"Optional data view id to use for this indicator.\n","type":"string"},"filter":{"type":"string"},"goods":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicatorGood:KibanaSloMetricCustomIndicatorGood"},"type":"array"},"index":{"type":"string"},"timestampField":{"type":"string"},"totals":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicatorTotal:KibanaSloMetricCustomIndicatorTotal"},"type":"array"}},"required":["index"],"type":"object"},"elasticstack:index/KibanaSloMetricCustomIndicatorGood:KibanaSloMetricCustomIndicatorGood":{"properties":{"equation":{"type":"string"},"metrics":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicatorGoodMetric:KibanaSloMetricCustomIndicatorGoodMetric"},"type":"array"}},"required":["equation"],"type":"object"},"elasticstack:index/KibanaSloMetricCustomIndicatorGoodMetric:KibanaSloMetricCustomIndicatorGoodMetric":{"properties":{"aggregation":{"type":"string"},"field":{"description":"Field to aggregate. Required for all aggregations except doc*count. Must NOT be set for doc*count.\n","type":"string"},"filter":{"type":"string"},"name":{"type":"string"}},"required":["aggregation","name"],"type":"object"},"elasticstack:index/KibanaSloMetricCustomIndicatorTotal:KibanaSloMetricCustomIndicatorTotal":{"properties":{"equation":{"type":"string"},"metrics":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloMetricCustomIndicatorTotalMetric:KibanaSloMetricCustomIndicatorTotalMetric"},"type":"array"}},"required":["equation"],"type":"object"},"elasticstack:index/KibanaSloMetricCustomIndicatorTotalMetric:KibanaSloMetricCustomIndicatorTotalMetric":{"properties":{"aggregation":{"type":"string"},"field":{"description":"Field to aggregate. Required for all aggregations except doc*count. Must NOT be set for doc*count.\n","type":"string"},"filter":{"type":"string"},"name":{"type":"string"}},"required":["aggregation","name"],"type":"object"},"elasticstack:index/KibanaSloObjective:KibanaSloObjective":{"properties":{"target":{"type":"number"},"timesliceTarget":{"type":"number"},"timesliceWindow":{"type":"string"}},"required":["target"],"type":"object"},"elasticstack:index/KibanaSloSettings:KibanaSloSettings":{"language":{"nodejs":{"requiredOutputs":["frequency","preventInitialBackfill","syncDelay","syncField"]}},"properties":{"frequency":{"type":"string"},"preventInitialBackfill":{"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","type":"boolean"},"syncDelay":{"type":"string"},"syncField":{"description":"The date field used to identify new documents in the source. When unspecified, the indicator timestamp field is used.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSloTimeWindow:KibanaSloTimeWindow":{"properties":{"duration":{"type":"string"},"type":{"type":"string"}},"required":["duration","type"],"type":"object"},"elasticstack:index/KibanaSloTimesliceMetricIndicator:KibanaSloTimesliceMetricIndicator":{"properties":{"dataViewId":{"description":"Optional data view id to use for this indicator.\n","type":"string"},"filter":{"type":"string"},"index":{"type":"string"},"metrics":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicatorMetric:KibanaSloTimesliceMetricIndicatorMetric"},"type":"array"},"timestampField":{"type":"string"}},"required":["index","timestampField"],"type":"object"},"elasticstack:index/KibanaSloTimesliceMetricIndicatorMetric:KibanaSloTimesliceMetricIndicatorMetric":{"properties":{"comparator":{"type":"string"},"equation":{"type":"string"},"metrics":{"items":{"$ref":"#/types/elasticstack:index%2FKibanaSloTimesliceMetricIndicatorMetricMetric:KibanaSloTimesliceMetricIndicatorMetricMetric"},"type":"array"},"threshold":{"type":"number"}},"required":["comparator","equation","threshold"],"type":"object"},"elasticstack:index/KibanaSloTimesliceMetricIndicatorMetricMetric:KibanaSloTimesliceMetricIndicatorMetricMetric":{"properties":{"aggregation":{"description":"The aggregation type for this metric (kbapi timeslice metric union: no value*count). One of: sum, avg, min, max, last*value, cardinality, std*deviation, percentile, doc*count. Determines which other fields are required.\n","type":"string"},"field":{"description":"Field to aggregate. Required for sum, avg, min, max, last*value, cardinality, std*deviation, percentile. Must NOT be set for doc_count.\n","type":"string"},"filter":{"description":"Optional KQL filter for this metric. Supported for all timeslice metric aggregation kinds, including doc_count, per the Kibana SLO API.\n","type":"string"},"name":{"description":"The unique name for this metric. Used as a variable in the equation field. Must be a single letter A–Z.\n","type":"string"},"percentile":{"description":"Percentile value (e.g., 99). Required if aggregation is 'percentile'. Must NOT be set for other aggregations.\n","type":"number"}},"required":["aggregation","name"],"type":"object"},"elasticstack:index/KibanaSpaceKibanaConnection:KibanaSpaceKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"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":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"type":"boolean"}},"type":"object"},"elasticstack:index/KibanaSyntheticsMonitorAlertTls:KibanaSyntheticsMonitorAlertTls":{"language":{"nodejs":{"requiredOutputs":["enabled"]}},"properties":{"enabled":{"type":"boolean"}},"type":"object"},"elasticstack:index/KibanaSyntheticsMonitorBrowser:KibanaSyntheticsMonitorBrowser":{"language":{"nodejs":{"requiredOutputs":["ignoreHttpsErrors","inlineScript","screenshots"]}},"properties":{"ignoreHttpsErrors":{"description":"Whether to ignore HTTPS errors.\n","type":"boolean"},"inlineScript":{"description":"The inline script.\n","type":"string"},"playwrightOptions":{"description":"Playwright options.. Raw JSON object, use <span pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\">`jsonencode`</span> function to represent JSON\n","type":"string"},"screenshots":{"description":"Controls the behavior of the screenshots feature.\n","type":"string"},"syntheticsArgs":{"description":"Synthetics agent CLI arguments.\n","items":{"type":"string"},"type":"array"}},"required":["inlineScript"],"type":"object"},"elasticstack:index/KibanaSyntheticsMonitorHttp:KibanaSyntheticsMonitorHttp":{"language":{"nodejs":{"requiredOutputs":["ipv4","ipv6","maxRedirects","mode","proxyUrl","sslCertificate","sslKey","sslKeyPassphrase","sslSupportedProtocols","sslVerificationMode","url"]}},"properties":{"check":{"description":"The check request settings.. Raw JSON object, use <span pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\">`jsonencode`</span> function to represent JSON\n","type":"string"},"ipv4":{"description":"Whether to ping using the ipv4 protocol.\n","type":"boolean"},"ipv6":{"description":"Whether to ping using the ipv6 protocol.\n","type":"boolean"},"maxRedirects":{"description":"The maximum number of redirects to follow. Default: <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span>\n","type":"number"},"mode":{"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","type":"string"},"password":{"description":"The password for authenticating with the server. The credentials are passed with the request.\n","type":"string"},"proxyHeader":{"description":"Additional headers to send to proxies during CONNECT requests.. Raw JSON object, use <span pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\">`jsonencode`</span> function to represent JSON\n","type":"string"},"proxyUrl":{"description":"The URL of the proxy to use for this monitor.\n","type":"string"},"response":{"description":"Controls the indexing of the HTTP response body contents to the `http.response.body.contents` field.. Raw JSON object, use <span pulumi-lang-nodejs=\"`jsonencode`\" pulumi-lang-dotnet=\"`Jsonencode`\" pulumi-lang-go=\"`jsonencode`\" pulumi-lang-python=\"`jsonencode`\" pulumi-lang-yaml=\"`jsonencode`\" pulumi-lang-java=\"`jsonencode`\">`jsonencode`</span> function to represent JSON\n","type":"string"},"sslCertificate":{"description":"Certificate.\n","type":"string"},"sslCertificateAuthorities":{"description":"The list of root certificates for verifications is required.\n","items":{"type":"string"},"type":"array"},"sslKey":{"description":"Certificate key.\n","secret":true,"type":"string"},"sslKeyPassphrase":{"description":"Key passphrase.\n","secret":true,"type":"string"},"sslSupportedProtocols":{"description":"List of allowed SSL/TLS versions.\n","items":{"type":"string"},"type":"array"},"sslVerificationMode":{"description":"Controls the verification of server certificates.\n","type":"string"},"url":{"description":"URL to monitor.\n","type":"string"},"username":{"description":"The username for authenticating with the server. The credentials are passed with the request.\n","type":"string"}},"required":["url"],"type":"object"},"elasticstack:index/KibanaSyntheticsMonitorIcmp:KibanaSyntheticsMonitorIcmp":{"language":{"nodejs":{"requiredOutputs":["host","wait"]}},"properties":{"host":{"description":"Host to ping; it can be an IP address or a hostname.\n","type":"string"},"wait":{"description":"Wait time in seconds. Default: <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span>\n","type":"number"}},"required":["host"],"type":"object"},"elasticstack:index/KibanaSyntheticsMonitorKibanaConnection:KibanaSyntheticsMonitorKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSyntheticsMonitorTcp:KibanaSyntheticsMonitorTcp":{"language":{"nodejs":{"requiredOutputs":["host","proxyUrl","proxyUseLocalResolver","sslCertificate","sslKey","sslKeyPassphrase","sslSupportedProtocols","sslVerificationMode"]}},"properties":{"checkReceive":{"description":"The expected answer.\n","type":"string"},"checkSend":{"description":"An optional payload string to send to the remote host.\n","type":"string"},"host":{"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","type":"string"},"proxyUrl":{"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 <span 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`\">`proxy_use_local_resolver`</span> option.\n","type":"string"},"proxyUseLocalResolver":{"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","type":"boolean"},"sslCertificate":{"description":"Certificate.\n","type":"string"},"sslCertificateAuthorities":{"description":"The list of root certificates for verifications is required.\n","items":{"type":"string"},"type":"array"},"sslKey":{"description":"Certificate key.\n","secret":true,"type":"string"},"sslKeyPassphrase":{"description":"Key passphrase.\n","secret":true,"type":"string"},"sslSupportedProtocols":{"description":"List of allowed SSL/TLS versions.\n","items":{"type":"string"},"type":"array"},"sslVerificationMode":{"description":"Controls the verification of server certificates.\n","type":"string"}},"required":["host"],"type":"object"},"elasticstack:index/KibanaSyntheticsParameterKibanaConnection:KibanaSyntheticsParameterKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/KibanaSyntheticsPrivateLocationGeo:KibanaSyntheticsPrivateLocationGeo":{"properties":{"lat":{"description":"The latitude of the location.\n","type":"number"},"lon":{"description":"The longitude of the location.\n","type":"number"}},"required":["lat","lon"],"type":"object"},"elasticstack:index/KibanaSyntheticsPrivateLocationKibanaConnection:KibanaSyntheticsPrivateLocationKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/ProviderElasticsearch:ProviderElasticsearch":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/ProviderFleet:ProviderFleet":{"properties":{"apiKey":{"description":"API Key to use for authentication to Fleet.\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Fleet.\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Fleet server.\n","items":{"type":"string"},"type":"array"},"endpoint":{"secret":true,"type":"string"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Fleet.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Fleet.\n","type":"string"}},"type":"object"},"elasticstack:index/ProviderKibana:ProviderKibana":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchConnectorElasticsearchConnection:getElasticsearchConnectorElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchConnectorFeatures:getElasticsearchConnectorFeatures":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"documentLevelSecurity":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorFeaturesDocumentLevelSecurity:getElasticsearchConnectorFeaturesDocumentLevelSecurity","description":"Feature flag for <span pulumi-lang-nodejs=\"`documentLevelSecurity`\" pulumi-lang-dotnet=\"`DocumentLevelSecurity`\" pulumi-lang-go=\"`documentLevelSecurity`\" pulumi-lang-python=\"`document_level_security`\" pulumi-lang-yaml=\"`documentLevelSecurity`\" pulumi-lang-java=\"`documentLevelSecurity`\">`document_level_security`</span>.\n"},"incrementalSync":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorFeaturesIncrementalSync:getElasticsearchConnectorFeaturesIncrementalSync","description":"Feature flag for <span pulumi-lang-nodejs=\"`incrementalSync`\" pulumi-lang-dotnet=\"`IncrementalSync`\" pulumi-lang-go=\"`incrementalSync`\" pulumi-lang-python=\"`incremental_sync`\" pulumi-lang-yaml=\"`incrementalSync`\" pulumi-lang-java=\"`incrementalSync`\">`incremental_sync`</span>.\n"},"nativeConnectorApiKeys":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorFeaturesNativeConnectorApiKeys:getElasticsearchConnectorFeaturesNativeConnectorApiKeys","description":"Feature flag for <span pulumi-lang-nodejs=\"`nativeConnectorApiKeys`\" pulumi-lang-dotnet=\"`NativeConnectorApiKeys`\" pulumi-lang-go=\"`nativeConnectorApiKeys`\" pulumi-lang-python=\"`native_connector_api_keys`\" pulumi-lang-yaml=\"`nativeConnectorApiKeys`\" pulumi-lang-java=\"`nativeConnectorApiKeys`\">`native_connector_api_keys`</span>.\n"},"syncRules":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorFeaturesSyncRules:getElasticsearchConnectorFeaturesSyncRules","description":"Sync rules feature flags.\n"}},"required":["documentLevelSecurity","incrementalSync","nativeConnectorApiKeys","syncRules"],"type":"object"},"elasticstack:index/getElasticsearchConnectorFeaturesDocumentLevelSecurity:getElasticsearchConnectorFeaturesDocumentLevelSecurity":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/getElasticsearchConnectorFeaturesIncrementalSync:getElasticsearchConnectorFeaturesIncrementalSync":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/getElasticsearchConnectorFeaturesNativeConnectorApiKeys:getElasticsearchConnectorFeaturesNativeConnectorApiKeys":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/getElasticsearchConnectorFeaturesSyncRules:getElasticsearchConnectorFeaturesSyncRules":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"advanced":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorFeaturesSyncRulesAdvanced:getElasticsearchConnectorFeaturesSyncRulesAdvanced","description":"Feature flag for <span pulumi-lang-nodejs=\"`advanced`\" pulumi-lang-dotnet=\"`Advanced`\" pulumi-lang-go=\"`advanced`\" pulumi-lang-python=\"`advanced`\" pulumi-lang-yaml=\"`advanced`\" pulumi-lang-java=\"`advanced`\">`advanced`</span>.\n"},"basic":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorFeaturesSyncRulesBasic:getElasticsearchConnectorFeaturesSyncRulesBasic","description":"Feature flag for <span pulumi-lang-nodejs=\"`basic`\" pulumi-lang-dotnet=\"`Basic`\" pulumi-lang-go=\"`basic`\" pulumi-lang-python=\"`basic`\" pulumi-lang-yaml=\"`basic`\" pulumi-lang-java=\"`basic`\">`basic`</span>.\n"}},"required":["advanced","basic"],"type":"object"},"elasticstack:index/getElasticsearchConnectorFeaturesSyncRulesAdvanced:getElasticsearchConnectorFeaturesSyncRulesAdvanced":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/getElasticsearchConnectorFeaturesSyncRulesBasic:getElasticsearchConnectorFeaturesSyncRulesBasic":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"Whether the feature is enabled.\n","type":"boolean"}},"required":["enabled"],"type":"object"},"elasticstack:index/getElasticsearchConnectorPipeline:getElasticsearchConnectorPipeline":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"extractBinaryContent":{"description":"Whether to extract binary content during ingestion.\n","type":"boolean"},"name":{"description":"Ingest pipeline name.\n","type":"string"},"reduceWhitespace":{"description":"Whether to reduce whitespace in extracted text.\n","type":"boolean"},"runMlInference":{"description":"Whether to run ML inference during ingestion.\n","type":"boolean"}},"required":["extractBinaryContent","name","reduceWhitespace","runMlInference"],"type":"object"},"elasticstack:index/getElasticsearchConnectorScheduling:getElasticsearchConnectorScheduling":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"accessControl":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorSchedulingAccessControl:getElasticsearchConnectorSchedulingAccessControl","description":"Schedule for the <span pulumi-lang-nodejs=\"`accessControl`\" pulumi-lang-dotnet=\"`AccessControl`\" pulumi-lang-go=\"`accessControl`\" pulumi-lang-python=\"`access_control`\" pulumi-lang-yaml=\"`accessControl`\" pulumi-lang-java=\"`accessControl`\">`access_control`</span> sync job type.\n"},"full":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorSchedulingFull:getElasticsearchConnectorSchedulingFull","description":"Schedule for the <span pulumi-lang-nodejs=\"`full`\" pulumi-lang-dotnet=\"`Full`\" pulumi-lang-go=\"`full`\" pulumi-lang-python=\"`full`\" pulumi-lang-yaml=\"`full`\" pulumi-lang-java=\"`full`\">`full`</span> sync job type.\n"},"incremental":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchConnectorSchedulingIncremental:getElasticsearchConnectorSchedulingIncremental","description":"Schedule for the <span pulumi-lang-nodejs=\"`incremental`\" pulumi-lang-dotnet=\"`Incremental`\" pulumi-lang-go=\"`incremental`\" pulumi-lang-python=\"`incremental`\" pulumi-lang-yaml=\"`incremental`\" pulumi-lang-java=\"`incremental`\">`incremental`</span> sync job type.\n"}},"required":["accessControl","full","incremental"],"type":"object"},"elasticstack:index/getElasticsearchConnectorSchedulingAccessControl:getElasticsearchConnectorSchedulingAccessControl":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"Whether this scheduled job type is enabled.\n","type":"boolean"},"interval":{"description":"Cron expression accepted by the Elasticsearch scheduler.\n","type":"string"}},"required":["enabled","interval"],"type":"object"},"elasticstack:index/getElasticsearchConnectorSchedulingFull:getElasticsearchConnectorSchedulingFull":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"Whether this scheduled job type is enabled.\n","type":"boolean"},"interval":{"description":"Cron expression accepted by the Elasticsearch scheduler.\n","type":"string"}},"required":["enabled","interval"],"type":"object"},"elasticstack:index/getElasticsearchConnectorSchedulingIncremental:getElasticsearchConnectorSchedulingIncremental":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"Whether this scheduled job type is enabled.\n","type":"boolean"},"interval":{"description":"Cron expression accepted by the Elasticsearch scheduler.\n","type":"string"}},"required":["enabled","interval"],"type":"object"},"elasticstack:index/getElasticsearchEnrichPolicyElasticsearchConnection:getElasticsearchEnrichPolicyElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateDataStream:getElasticsearchIndexTemplateDataStream":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"allowCustomRouting":{"description":"If <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, the data stream supports custom routing. Defaults to <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>. Available only in **8.x**\n","type":"boolean"},"hidden":{"description":"If true, the data stream is hidden.\n","type":"boolean"}},"required":["allowCustomRouting","hidden"],"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateElasticsearchConnection:getElasticsearchIndexTemplateElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateTemplate:getElasticsearchIndexTemplateTemplate":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"aliases":{"description":"Alias to add.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplateAlias:getElasticsearchIndexTemplateTemplateAlias"},"type":"array"},"dataStreamOptions":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplateDataStreamOptions:getElasticsearchIndexTemplateTemplateDataStreamOptions","description":"Options for data streams created by this template. Available only for Elasticsearch 9.1.0 and above.\n"},"lifecycle":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplateLifecycle:getElasticsearchIndexTemplateTemplateLifecycle","description":"Lifecycle of data stream. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/data-stream-lifecycle.html\n"},"mappings":{"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","type":"string"},"settings":{"description":"Configuration options for the index. See, https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings\n","type":"string"}},"required":["mappings","settings"],"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateTemplateAlias:getElasticsearchIndexTemplateTemplateAlias":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"filter":{"description":"Query used to limit documents the alias can access.\n","type":"string"},"indexRouting":{"description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the <span pulumi-lang-nodejs=\"`routing`\" pulumi-lang-dotnet=\"`Routing`\" pulumi-lang-go=\"`routing`\" pulumi-lang-python=\"`routing`\" pulumi-lang-yaml=\"`routing`\" pulumi-lang-java=\"`routing`\">`routing`</span> value for indexing operations.\n","type":"string"},"isHidden":{"description":"If true, the alias is hidden.\n","type":"boolean"},"isWriteIndex":{"description":"If true, the index is the write index for the alias.\n","type":"boolean"},"name":{"description":"The alias name.\n","type":"string"},"routing":{"description":"Value used to route indexing and search operations to a specific shard.\n","type":"string"},"searchRouting":{"description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n","type":"string"}},"required":["filter","indexRouting","isHidden","isWriteIndex","name","routing","searchRouting"],"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateTemplateDataStreamOptions:getElasticsearchIndexTemplateTemplateDataStreamOptions":{"properties":{"failureStore":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStore:getElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStore","description":"Failure store configuration.\n"}},"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStore:getElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStore":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"enabled":{"description":"If true, document redirection to the failure store is enabled for new matching data streams.\n","type":"boolean"},"lifecycle":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStoreLifecycle:getElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStoreLifecycle","description":"Lifecycle configuration for the failure store.\n"}},"required":["enabled"],"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStoreLifecycle:getElasticsearchIndexTemplateTemplateDataStreamOptionsFailureStoreLifecycle":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"dataRetention":{"description":"The retention period for failure store documents (e.g. \"30d\").\n","type":"string"}},"required":["dataRetention"],"type":"object"},"elasticstack:index/getElasticsearchIndexTemplateTemplateLifecycle:getElasticsearchIndexTemplateTemplateLifecycle":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"dataRetention":{"description":"The retention period of the data indexed in this data stream.\n","type":"string"}},"required":["dataRetention"],"type":"object"},"elasticstack:index/getElasticsearchIndicesElasticsearchConnection:getElasticsearchIndicesElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchIndicesIndex:getElasticsearchIndicesIndex":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"aliases":{"description":"Aliases for the index.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchIndicesIndexAlias:getElasticsearchIndicesIndexAlias"},"type":"array"},"analysisAnalyzer":{"description":"A JSON string describing the analyzers applied to the index.\n","type":"string"},"analysisCharFilter":{"description":"A JSON string describing the<span 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 \"> char_filters </span>applied to the index.\n","type":"string"},"analysisFilter":{"description":"A JSON string describing the filters applied to the index.\n","type":"string"},"analysisNormalizer":{"description":"A JSON string describing the normalizers applied to the index.\n","type":"string"},"analysisTokenizer":{"description":"A JSON string describing the tokenizers applied to the index.\n","type":"string"},"analyzeMaxTokenCount":{"description":"The maximum number of tokens that can be produced using _analyze API.\n","type":"number"},"autoExpandReplicas":{"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","type":"string"},"blocksMetadata":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable index metadata reads and writes.\n","type":"boolean"},"blocksRead":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable read operations against the index.\n","type":"boolean"},"blocksReadOnly":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to make the index and index metadata read only, <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> to allow writes and metadata changes.\n","type":"boolean"},"blocksReadOnlyAllowDelete":{"description":"Identical to `index.blocks.read_only` but allows deleting the index to free up resources.\n","type":"boolean"},"blocksWrite":{"description":"Set to <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> to disable data write operations against the index. This setting does not affect metadata.\n","type":"boolean"},"codec":{"description":"The <span pulumi-lang-nodejs=\"`default`\" pulumi-lang-dotnet=\"`Default`\" pulumi-lang-go=\"`default`\" pulumi-lang-python=\"`default`\" pulumi-lang-yaml=\"`default`\" pulumi-lang-java=\"`default`\">`default`</span> value compresses stored data with LZ4 compression, but this can be set to <span 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`\">`best_compression`</span> which uses DEFLATE for a higher compression ratio. This can be set only on creation.\n","type":"string"},"defaultPipeline":{"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","type":"string"},"deletionProtection":{"type":"boolean"},"finalPipeline":{"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","type":"string"},"gcDeletes":{"description":"The length of time that a deleted document's version number remains available for further versioned operations.\n","type":"string"},"highlightMaxAnalyzedOffset":{"description":"The maximum number of characters that will be analyzed for a highlight request.\n","type":"number"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"indexingSlowlogLevel":{"description":"Set which logging level to use for the search slow log, can be: <span pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\">`warn`</span>, <span pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\">`info`</span>, <span pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\">`debug`</span>, <span pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\">`trace`</span>\n","type":"string"},"indexingSlowlogSource":{"description":"Set the number of characters of the `_source` to include in the slowlog lines. <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span> or <span pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\">`0`</span> skips logging the source entirely; <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span> logs 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","type":"string"},"indexingSlowlogThresholdIndexDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>\n","type":"string"},"indexingSlowlogThresholdIndexInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>\n","type":"string"},"indexingSlowlogThresholdIndexTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>\n","type":"string"},"indexingSlowlogThresholdIndexWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches for indexing queries, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>\n","type":"string"},"loadFixedBitsetFiltersEagerly":{"description":"Indicates whether cached filters are pre-loaded for nested queries. This can be set only on creation.\n","type":"boolean"},"mappingCoerce":{"description":"Set index level coercion setting that is applied to all mapping types.\n","type":"boolean"},"mappings":{"description":"Mapping for fields in the index.\n","type":"string"},"masterTimeout":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>. This value is ignored when running against Serverless projects.\n","type":"string"},"maxDocvalueFieldsSearch":{"description":"The maximum number of <span 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`\">`docvalue_fields`</span> that are allowed in a query.\n","type":"number"},"maxInnerResultWindow":{"description":"The maximum value of `from + size` for inner hits definition and top hits aggregations to this index.\n","type":"number"},"maxNgramDiff":{"description":"The maximum allowed difference between<span pulumi-lang-nodejs=\" minGram \" pulumi-lang-dotnet=\" MinGram \" pulumi-lang-go=\" minGram \" pulumi-lang-python=\" min_gram \" pulumi-lang-yaml=\" minGram \" pulumi-lang-java=\" minGram \"> min_gram </span>and<span pulumi-lang-nodejs=\" maxGram \" pulumi-lang-dotnet=\" MaxGram \" pulumi-lang-go=\" maxGram \" pulumi-lang-python=\" max_gram \" pulumi-lang-yaml=\" maxGram \" pulumi-lang-java=\" maxGram \"> max_gram </span>for NGramTokenizer and NGramTokenFilter.\n","type":"number"},"maxRefreshListeners":{"description":"Maximum number of refresh listeners available on each shard of the index.\n","type":"number"},"maxRegexLength":{"description":"The maximum length of regex that can be used in Regexp Query.\n","type":"number"},"maxRescoreWindow":{"description":"The maximum value of <span 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`\">`window_size`</span> for <span pulumi-lang-nodejs=\"`rescore`\" pulumi-lang-dotnet=\"`Rescore`\" pulumi-lang-go=\"`rescore`\" pulumi-lang-python=\"`rescore`\" pulumi-lang-yaml=\"`rescore`\" pulumi-lang-java=\"`rescore`\">`rescore`</span> requests in searches of this index.\n","type":"number"},"maxResultWindow":{"description":"The maximum value of `from + size` for searches to this index.\n","type":"number"},"maxScriptFields":{"description":"The maximum number of <span 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`\">`script_fields`</span> that are allowed in a query.\n","type":"number"},"maxShingleDiff":{"description":"The maximum allowed difference between<span pulumi-lang-nodejs=\" maxShingleSize \" pulumi-lang-dotnet=\" MaxShingleSize \" pulumi-lang-go=\" maxShingleSize \" pulumi-lang-python=\" max_shingle_size \" pulumi-lang-yaml=\" maxShingleSize \" pulumi-lang-java=\" maxShingleSize \"> max_shingle_size </span>and<span pulumi-lang-nodejs=\" minShingleSize \" pulumi-lang-dotnet=\" MinShingleSize \" pulumi-lang-go=\" minShingleSize \" pulumi-lang-python=\" min_shingle_size \" pulumi-lang-yaml=\" minShingleSize \" pulumi-lang-java=\" minShingleSize \"> min_shingle_size </span>for ShingleTokenFilter.\n","type":"number"},"maxTermsCount":{"description":"The maximum number of terms that can be used in Terms Query.\n","type":"number"},"name":{"description":"Name of the index.\n","type":"string"},"numberOfReplicas":{"description":"Number of shard replicas.\n","type":"number"},"numberOfRoutingShards":{"description":"Value used with<span pulumi-lang-nodejs=\" numberOfShards \" pulumi-lang-dotnet=\" NumberOfShards \" pulumi-lang-go=\" numberOfShards \" pulumi-lang-python=\" number_of_shards \" pulumi-lang-yaml=\" numberOfShards \" pulumi-lang-java=\" numberOfShards \"> number_of_shards </span>to route documents to a primary shard. This can be set only on creation.\n","type":"number"},"numberOfShards":{"description":"Number of shards for the index. This can be set only on creation.\n","type":"number"},"queryDefaultFields":{"description":"Wildcard (*) patterns matching one or more fields. Defaults to '*', which matches all fields eligible for term-level queries, excluding metadata fields.\n","items":{"type":"string"},"type":"array"},"refreshInterval":{"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","type":"string"},"routingAllocationEnable":{"description":"Controls shard allocation for this index. It can be set to: <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span> , <span pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\">`primaries`</span> , <span 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`\">`new_primaries`</span> , <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>.\n","type":"string"},"routingPartitionSize":{"description":"The number of shards a custom routing value can go to. This can be set only on creation.\n","type":"number"},"routingRebalanceEnable":{"description":"Enables shard rebalancing for this index. It can be set to: <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span>, <span pulumi-lang-nodejs=\"`primaries`\" pulumi-lang-dotnet=\"`Primaries`\" pulumi-lang-go=\"`primaries`\" pulumi-lang-python=\"`primaries`\" pulumi-lang-yaml=\"`primaries`\" pulumi-lang-java=\"`primaries`\">`primaries`</span> , <span pulumi-lang-nodejs=\"`replicas`\" pulumi-lang-dotnet=\"`Replicas`\" pulumi-lang-go=\"`replicas`\" pulumi-lang-python=\"`replicas`\" pulumi-lang-yaml=\"`replicas`\" pulumi-lang-java=\"`replicas`\">`replicas`</span> , <span pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\">`none`</span>.\n","type":"string"},"searchIdleAfter":{"description":"How long a shard can not receive a search or get request until it’s considered search idle.\n","type":"string"},"searchSlowlogLevel":{"description":"Set which logging level to use for the search slow log, can be: <span pulumi-lang-nodejs=\"`warn`\" pulumi-lang-dotnet=\"`Warn`\" pulumi-lang-go=\"`warn`\" pulumi-lang-python=\"`warn`\" pulumi-lang-yaml=\"`warn`\" pulumi-lang-java=\"`warn`\">`warn`</span>, <span pulumi-lang-nodejs=\"`info`\" pulumi-lang-dotnet=\"`Info`\" pulumi-lang-go=\"`info`\" pulumi-lang-python=\"`info`\" pulumi-lang-yaml=\"`info`\" pulumi-lang-java=\"`info`\">`info`</span>, <span pulumi-lang-nodejs=\"`debug`\" pulumi-lang-dotnet=\"`Debug`\" pulumi-lang-go=\"`debug`\" pulumi-lang-python=\"`debug`\" pulumi-lang-yaml=\"`debug`\" pulumi-lang-java=\"`debug`\">`debug`</span>, <span pulumi-lang-nodejs=\"`trace`\" pulumi-lang-dotnet=\"`Trace`\" pulumi-lang-go=\"`trace`\" pulumi-lang-python=\"`trace`\" pulumi-lang-yaml=\"`trace`\" pulumi-lang-java=\"`trace`\">`trace`</span>\n","type":"string"},"searchSlowlogThresholdFetchDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>\n","type":"string"},"searchSlowlogThresholdFetchInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>\n","type":"string"},"searchSlowlogThresholdFetchTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>\n","type":"string"},"searchSlowlogThresholdFetchWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches in the fetch phase, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>\n","type":"string"},"searchSlowlogThresholdQueryDebug":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`2s`\" pulumi-lang-dotnet=\"`2s`\" pulumi-lang-go=\"`2s`\" pulumi-lang-python=\"`2s`\" pulumi-lang-yaml=\"`2s`\" pulumi-lang-java=\"`2s`\">`2s`</span>\n","type":"string"},"searchSlowlogThresholdQueryInfo":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`5s`\" pulumi-lang-dotnet=\"`5s`\" pulumi-lang-go=\"`5s`\" pulumi-lang-python=\"`5s`\" pulumi-lang-yaml=\"`5s`\" pulumi-lang-java=\"`5s`\">`5s`</span>\n","type":"string"},"searchSlowlogThresholdQueryTrace":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`500ms`\" pulumi-lang-dotnet=\"`500ms`\" pulumi-lang-go=\"`500ms`\" pulumi-lang-python=\"`500ms`\" pulumi-lang-yaml=\"`500ms`\" pulumi-lang-java=\"`500ms`\">`500ms`</span>\n","type":"string"},"searchSlowlogThresholdQueryWarn":{"description":"Set the cutoff for shard level slow search logging of slow searches in the query phase, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>\n","type":"string"},"settingsRaw":{"description":"All raw settings fetched from the cluster.\n","type":"string"},"shardCheckOnStartup":{"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 <span pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\">`false`</span>, <span pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\">`true`</span>, <span pulumi-lang-nodejs=\"`checksum`\" pulumi-lang-dotnet=\"`Checksum`\" pulumi-lang-go=\"`checksum`\" pulumi-lang-python=\"`checksum`\" pulumi-lang-yaml=\"`checksum`\" pulumi-lang-java=\"`checksum`\">`checksum`</span>.\n","type":"string"},"sortFields":{"description":"The field to sort shards in this index by.\n","items":{"type":"string"},"type":"array"},"sortOrders":{"description":"The direction to sort shards in. Accepts <span pulumi-lang-nodejs=\"`asc`\" pulumi-lang-dotnet=\"`Asc`\" pulumi-lang-go=\"`asc`\" pulumi-lang-python=\"`asc`\" pulumi-lang-yaml=\"`asc`\" pulumi-lang-java=\"`asc`\">`asc`</span>, <span pulumi-lang-nodejs=\"`desc`\" pulumi-lang-dotnet=\"`Desc`\" pulumi-lang-go=\"`desc`\" pulumi-lang-python=\"`desc`\" pulumi-lang-yaml=\"`desc`\" pulumi-lang-java=\"`desc`\">`desc`</span>.\n","items":{"type":"string"},"type":"array"},"timeout":{"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 <span pulumi-lang-nodejs=\"`30s`\" pulumi-lang-dotnet=\"`30s`\" pulumi-lang-go=\"`30s`\" pulumi-lang-python=\"`30s`\" pulumi-lang-yaml=\"`30s`\" pulumi-lang-java=\"`30s`\">`30s`</span>.\n","type":"string"},"unassignedNodeLeftDelayedTimeout":{"description":"Time to delay the allocation of replica shards which become unassigned because a node has left, in time units, e.g. <span pulumi-lang-nodejs=\"`10s`\" pulumi-lang-dotnet=\"`10s`\" pulumi-lang-go=\"`10s`\" pulumi-lang-python=\"`10s`\" pulumi-lang-yaml=\"`10s`\" pulumi-lang-java=\"`10s`\">`10s`</span>\n","type":"string"},"waitForActiveShards":{"description":"The number of shard copies that must be active before proceeding with the operation. Set to <span pulumi-lang-nodejs=\"`all`\" pulumi-lang-dotnet=\"`All`\" pulumi-lang-go=\"`all`\" pulumi-lang-python=\"`all`\" pulumi-lang-yaml=\"`all`\" pulumi-lang-java=\"`all`\">`all`</span> or any positive integer up to the total number of shards in the index (`number_of_replicas+1`). Default: <span pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\">`1`</span>, the primary shard. This value is ignored when running against Serverless projects.\n","type":"string"}},"required":["deletionProtection","id","mappings","masterTimeout","name","numberOfReplicas","settingsRaw","timeout","waitForActiveShards"],"type":"object"},"elasticstack:index/getElasticsearchIndicesIndexAlias:getElasticsearchIndicesIndexAlias":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"filter":{"description":"Query used to limit documents the alias can access.\n","type":"string"},"indexRouting":{"description":"Value used to route indexing operations to a specific shard. If specified, this overwrites the <span pulumi-lang-nodejs=\"`routing`\" pulumi-lang-dotnet=\"`Routing`\" pulumi-lang-go=\"`routing`\" pulumi-lang-python=\"`routing`\" pulumi-lang-yaml=\"`routing`\" pulumi-lang-java=\"`routing`\">`routing`</span> value for indexing operations.\n","type":"string"},"isHidden":{"description":"If true, the alias is hidden.\n","type":"boolean"},"isWriteIndex":{"description":"If true, the index is the write index for the alias.\n","type":"boolean"},"name":{"description":"Index alias name.\n","type":"string"},"routing":{"description":"Value used to route indexing and search operations to a specific shard.\n","type":"string"},"searchRouting":{"description":"Value used to route search operations to a specific shard. If specified, this overwrites the routing value for search operations.\n","type":"string"}},"required":["indexRouting","isHidden","isWriteIndex","name","routing","searchRouting"],"type":"object"},"elasticstack:index/getElasticsearchInfoElasticsearchConnection:getElasticsearchInfoElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchInfoVersion:getElasticsearchInfoVersion":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"buildDate":{"description":"Build date.\n","type":"string"},"buildFlavor":{"description":"Build Flavor.\n","type":"string"},"buildHash":{"description":"Short hash of the last git commit in this release.\n","type":"string"},"buildSnapshot":{"description":"Build Snapshot.\n","type":"boolean"},"buildType":{"description":"Build Type.\n","type":"string"},"luceneVersion":{"description":"Lucene Version.\n","type":"string"},"minimumIndexCompatibilityVersion":{"description":"Minimum index compatibility version.\n","type":"string"},"minimumWireCompatibilityVersion":{"description":"Minimum wire compatibility version.\n","type":"string"},"number":{"description":"Elasticsearch version number.\n","type":"string"}},"required":["buildDate","buildFlavor","buildHash","buildSnapshot","buildType","luceneVersion","minimumIndexCompatibilityVersion","minimumWireCompatibilityVersion","number"],"type":"object"},"elasticstack:index/getElasticsearchIngestProcessorInferenceInputOutput:getElasticsearchIngestProcessorInferenceInputOutput":{"properties":{"inputField":{"description":"The field name from which the inference processor reads its input value.\n","type":"string"},"outputField":{"description":"The field name to which the inference processor writes its output.\n","type":"string"}},"required":["inputField"],"type":"object"},"elasticstack:index/getElasticsearchQueryRulesetElasticsearchConnection:getElasticsearchQueryRulesetElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchQueryRulesetRule:getElasticsearchQueryRulesetRule":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"actions":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchQueryRulesetRuleActions:getElasticsearchQueryRulesetRuleActions","description":"Actions taken when the rule matches.\n"},"criterias":{"description":"Match criteria for the rule.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchQueryRulesetRuleCriteria:getElasticsearchQueryRulesetRuleCriteria"},"type":"array"},"priority":{"description":"Relative priority within the ruleset.\n","type":"number"},"ruleId":{"description":"Unique identifier for the rule within the ruleset.\n","type":"string"},"type":{"description":"Rule type: <span pulumi-lang-nodejs=\"`pinned`\" pulumi-lang-dotnet=\"`Pinned`\" pulumi-lang-go=\"`pinned`\" pulumi-lang-python=\"`pinned`\" pulumi-lang-yaml=\"`pinned`\" pulumi-lang-java=\"`pinned`\">`pinned`</span> or <span pulumi-lang-nodejs=\"`exclude`\" pulumi-lang-dotnet=\"`Exclude`\" pulumi-lang-go=\"`exclude`\" pulumi-lang-python=\"`exclude`\" pulumi-lang-yaml=\"`exclude`\" pulumi-lang-java=\"`exclude`\">`exclude`</span>.\n","type":"string"}},"required":["actions","criterias","priority","ruleId","type"],"type":"object"},"elasticstack:index/getElasticsearchQueryRulesetRuleActions:getElasticsearchQueryRulesetRuleActions":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"docs":{"description":"Documents pinned or excluded.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchQueryRulesetRuleActionsDoc:getElasticsearchQueryRulesetRuleActionsDoc"},"type":"array"},"ids":{"description":"Document IDs pinned or excluded.\n","items":{"type":"string"},"type":"array"}},"required":["docs","ids"],"type":"object"},"elasticstack:index/getElasticsearchQueryRulesetRuleActionsDoc:getElasticsearchQueryRulesetRuleActionsDoc":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"_id":{"description":"Unique document ID.\n","type":"string"},"_index":{"description":"Index containing the document.\n","type":"string"}},"required":["_id","_index"],"type":"object"},"elasticstack:index/getElasticsearchQueryRulesetRuleCriteria:getElasticsearchQueryRulesetRuleCriteria":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"metadata":{"description":"Metadata field matched against.\n","type":"string"},"type":{"description":"Criteria type.\n","type":"string"},"values":{"description":"JSON-encoded array of string or numeric values.\n","type":"string"}},"required":["metadata","type","values"],"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleApplication:getElasticsearchSecurityRoleApplication":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"application":{"description":"The name of the application to which this entry applies.\n","type":"string"},"privileges":{"description":"A list of strings, where each element is the name of an application privilege or action.\n","items":{"type":"string"},"type":"array"},"resources":{"description":"A list resources to which the privileges are applied.\n","items":{"type":"string"},"type":"array"}},"required":["application","privileges","resources"],"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleElasticsearchConnection:getElasticsearchSecurityRoleElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleIndex:getElasticsearchSecurityRoleIndex":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"allowRestrictedIndices":{"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","type":"boolean"},"fieldSecurities":{"description":"The document fields that the owners of the role have read access to.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleIndexFieldSecurity:getElasticsearchSecurityRoleIndexFieldSecurity"},"type":"array"},"names":{"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"privileges":{"description":"The index level privileges that the owners of the role have on the specified indices.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A search query that defines the documents the owners of the role have read access to.\n","type":"string"}},"required":["allowRestrictedIndices","fieldSecurities","names","privileges","query"],"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleIndexFieldSecurity:getElasticsearchSecurityRoleIndexFieldSecurity":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"excepts":{"description":"List of the fields to which the grants will not be applied.\n","items":{"type":"string"},"type":"array"},"grants":{"description":"List of the fields to grant the access to.\n","items":{"type":"string"},"type":"array"}},"required":["excepts","grants"],"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleMappingElasticsearchConnection:getElasticsearchSecurityRoleMappingElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleRemoteIndex:getElasticsearchSecurityRoleRemoteIndex":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"clusters":{"description":"A list of cluster aliases to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"fieldSecurities":{"description":"The document fields that the owners of the role have read access to.\n","items":{"$ref":"#/types/elasticstack:index%2FgetElasticsearchSecurityRoleRemoteIndexFieldSecurity:getElasticsearchSecurityRoleRemoteIndexFieldSecurity"},"type":"array"},"names":{"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"privileges":{"description":"The index level privileges that the owners of the role have on the specified indices.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A search query that defines the documents the owners of the role have read access to.\n","type":"string"}},"required":["clusters","fieldSecurities","names","privileges","query"],"type":"object"},"elasticstack:index/getElasticsearchSecurityRoleRemoteIndexFieldSecurity:getElasticsearchSecurityRoleRemoteIndexFieldSecurity":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"excepts":{"description":"List of the fields to which the grants will not be applied.\n","items":{"type":"string"},"type":"array"},"grants":{"description":"List of the fields to grant the access to.\n","items":{"type":"string"},"type":"array"}},"required":["excepts","grants"],"type":"object"},"elasticstack:index/getElasticsearchSecurityUserElasticsearchConnection:getElasticsearchSecurityUserElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryAzure:getElasticsearchSnapshotRepositoryAzure":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"basePath":{"description":"Specifies the path within the container to the repository data.\n","type":"string"},"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"client":{"description":"Azure named client to use.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"container":{"description":"Container name. You must create the Azure container before creating the repository.\n","type":"string"},"locationMode":{"description":"Location mode. <span 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`\">`primary_only`</span> or <span 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`\">`secondary_only`</span>. See the [Azure storage redundancy documentation](https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy) for more details.\n","type":"string"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"}},"required":["basePath","chunkSize","client","compress","container","locationMode","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"],"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryElasticsearchConnection:getElasticsearchSnapshotRepositoryElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryF:getElasticsearchSnapshotRepositoryF":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"location":{"description":"Location of the shared filesystem used to store and retrieve snapshots.\n","type":"string"},"maxNumberOfSnapshots":{"description":"Maximum number of snapshots the repository can contain.\n","type":"number"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"}},"required":["chunkSize","compress","location","maxNumberOfSnapshots","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"],"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryGc:getElasticsearchSnapshotRepositoryGc":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"basePath":{"description":"Specifies the path within the bucket to the repository data. Defaults to the root of the bucket.\n","type":"string"},"bucket":{"description":"The name of the bucket to be used for snapshots.\n","type":"string"},"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"client":{"description":"The name of the client to use to connect to Google Cloud Storage.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"}},"required":["basePath","bucket","chunkSize","client","compress","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly"],"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryHdf:getElasticsearchSnapshotRepositoryHdf":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"loadDefaults":{"description":"Whether to load the default Hadoop configuration or not.\n","type":"boolean"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"path":{"description":"The file path within the filesystem where data is stored/loaded.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"},"uri":{"description":"The uri address for hdfs. ex: \"hdfs://\\n\\n:\\n\\n/\".\n","type":"string"}},"required":["chunkSize","compress","loadDefaults","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","path","readonly","uri"],"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryS3:getElasticsearchSnapshotRepositoryS3":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"basePath":{"description":"Specifies the path to the repository data within its bucket.\n","type":"string"},"bucket":{"description":"Name of the S3 bucket to use for snapshots.\n","type":"string"},"bufferSize":{"description":"Minimum threshold below which the chunk is uploaded using a single request.\n","type":"string"},"cannedAcl":{"description":"The S3 repository supports all S3 canned ACLs.\n","type":"string"},"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"client":{"description":"The name of the S3 client to use to connect to S3.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"pathStyleAccess":{"description":"If true, path style access pattern will be used.\n","type":"boolean"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"},"serverSideEncryption":{"description":"When true, files are encrypted server-side using AES-256 algorithm.\n","type":"boolean"},"storageClass":{"description":"Sets the S3 storage class for objects stored in the snapshot repository.\n","type":"string"}},"required":["basePath","bucket","bufferSize","cannedAcl","chunkSize","client","compress","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","pathStyleAccess","readonly","serverSideEncryption","storageClass"],"type":"object"},"elasticstack:index/getElasticsearchSnapshotRepositoryUrl:getElasticsearchSnapshotRepositoryUrl":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"chunkSize":{"description":"Maximum size of files in snapshots.\n","type":"string"},"compress":{"description":"If true, metadata files, such as index mappings and settings, are compressed in snapshots.\n","type":"boolean"},"httpMaxRetries":{"description":"Maximum number of retries for http and https URLs.\n","type":"number"},"httpSocketTimeout":{"description":"Maximum wait time for data transfers over a connection.\n","type":"string"},"maxNumberOfSnapshots":{"description":"Maximum number of snapshots the repository can contain.\n","type":"number"},"maxRestoreBytesPerSec":{"description":"Maximum snapshot restore rate per node.\n","type":"string"},"maxSnapshotBytesPerSec":{"description":"Maximum snapshot creation rate per node.\n","type":"string"},"readonly":{"description":"If true, the repository is read-only.\n","type":"boolean"},"url":{"description":"URL location of the root of the shared filesystem repository.\n","type":"string"}},"required":["chunkSize","compress","httpMaxRetries","httpSocketTimeout","maxNumberOfSnapshots","maxRestoreBytesPerSec","maxSnapshotBytesPerSec","readonly","url"],"type":"object"},"elasticstack:index/getElasticsearchSynonymSetElasticsearchConnection:getElasticsearchSynonymSetElasticsearchConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Elasticsearch\n","secret":true,"type":"string"},"caData":{"description":"PEM-encoded custom Certificate Authority certificate\n","type":"string"},"caFile":{"description":"Path to a custom Certificate Authority certificate\n","type":"string"},"certData":{"description":"PEM encoded certificate for client auth\n","type":"string"},"certFile":{"description":"Path to a file containing the PEM encoded certificate for client auth\n","type":"string"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"esClientAuthentication":{"description":"ES Client Authentication field to be used with the JWT token\n","secret":true,"type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"A list of headers to be sent with each request to Elasticsearch.\n","secret":true,"type":"object"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"keyData":{"description":"PEM encoded private key for client auth\n","secret":true,"type":"string"},"keyFile":{"description":"Path to a file containing the PEM encoded private key for client auth\n","type":"string"},"password":{"description":"Password to use for API authentication to Elasticsearch.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Elasticsearch.\n","type":"string"}},"type":"object"},"elasticstack:index/getElasticsearchSynonymSetSynonymsSet:getElasticsearchSynonymSetSynonymsSet":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"id":{"description":"The identifier for this synonym rule.\n","type":"string"},"synonyms":{"description":"The synonym rule in Solr format (e.g. `\"i-pod, i pod => ipod\"` or `\"universe, cosmos\"`).\n","type":"string"}},"required":["id","synonyms"],"type":"object"},"elasticstack:index/getFleetEnrollmentTokensKibanaConnection:getFleetEnrollmentTokensKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getFleetEnrollmentTokensToken:getFleetEnrollmentTokensToken":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"active":{"description":"Indicates if the enrollment token is active.\n","type":"boolean"},"apiKey":{"description":"The API key.\n","secret":true,"type":"string"},"apiKeyId":{"description":"The API key identifier.\n","type":"string"},"createdAt":{"description":"The time at which the enrollment token was created.\n","type":"string"},"keyId":{"description":"The unique identifier of the enrollment token.\n","type":"string"},"name":{"description":"The name of the enrollment token.\n","type":"string"},"policyId":{"description":"The identifier of the associated agent policy.\n","type":"string"}},"required":["active","apiKey","apiKeyId","createdAt","keyId","name","policyId"],"type":"object"},"elasticstack:index/getFleetIntegrationKibanaConnection:getFleetIntegrationKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getFleetOutputKibanaConnection:getFleetOutputKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getFleetOutputOutput:getFleetOutputOutput":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"caSha256":{"description":"Fingerprint of the Elasticsearch CA certificate.\n","type":"string"},"caTrustedFingerprint":{"description":"Fingerprint of trusted CA.\n","type":"string"},"configYaml":{"description":"Advanced YAML configuration.\n","secret":true,"type":"string"},"defaultIntegrations":{"description":"This output is the default for agent integrations.\n","type":"boolean"},"defaultMonitoring":{"description":"This output is the default for agent monitoring.\n","type":"boolean"},"hosts":{"description":"A list of hosts.\n","items":{"type":"string"},"type":"array"},"id":{"description":"Unique identifier of the output.\n","type":"string"},"name":{"description":"The name of the output.\n","type":"string"},"type":{"description":"The output type.\n","type":"string"}},"required":["caSha256","caTrustedFingerprint","configYaml","defaultIntegrations","defaultMonitoring","hosts","id","name","type"],"type":"object"},"elasticstack:index/getKibanaActionConnectorKibanaConnection:getKibanaActionConnectorKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getKibanaAgentbuilderAgentKibanaConnection:getKibanaAgentbuilderAgentKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getKibanaAgentbuilderAgentTool:getKibanaAgentbuilderAgentTool":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"configuration":{"description":"The tool configuration in JSON format.\n","type":"string"},"description":{"description":"Description of what the tool does.\n","type":"string"},"id":{"description":"The tool ID to look up.\n","type":"string"},"readonly":{"description":"Whether the tool is read-only.\n","type":"boolean"},"spaceId":{"description":"An identifier for the space. If<span 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 \"> space_id </span>is not provided, the default space is used.\n","type":"string"},"tags":{"description":"Tags for categorizing and organizing tools.\n","items":{"type":"string"},"type":"array"},"toolId":{"description":"The ID of the tool.\n","type":"string"},"type":{"description":"The type of the tool (esql, index_search, workflow, mcp).\n","type":"string"},"workflowConfigurationYaml":{"description":"The YAML configuration of the referenced workflow. Only populated for workflow-type tools. Requires Elastic Stack v9.4.0 or later.\n","type":"string"},"workflowId":{"description":"The ID of the referenced workflow. Only populated for workflow-type tools. Requires Elastic Stack v9.4.0 or later.\n","type":"string"}},"required":["configuration","description","id","readonly","spaceId","tags","toolId","type","workflowConfigurationYaml","workflowId"],"type":"object"},"elasticstack:index/getKibanaAgentbuilderSkillKibanaConnection:getKibanaAgentbuilderSkillKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getKibanaAgentbuilderSkillReferencedContent:getKibanaAgentbuilderSkillReferencedContent":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"content":{"description":"Content of the reference.\n","type":"string"},"name":{"description":"Name of the referenced content.\n","type":"string"},"relativePath":{"description":"Relative path of the referenced content.\n","type":"string"}},"required":["content","name","relativePath"],"type":"object"},"elasticstack:index/getKibanaAgentbuilderToolKibanaConnection:getKibanaAgentbuilderToolKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getKibanaAgentbuilderWorkflowKibanaConnection:getKibanaAgentbuilderWorkflowKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getKibanaExportSavedObjectsKibanaConnection:getKibanaExportSavedObjectsKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getKibanaExportSavedObjectsObject:getKibanaExportSavedObjectsObject":{"properties":{"id":{"description":"The ID of the saved object.\n","type":"string"},"type":{"description":"The type of the saved object.\n","type":"string"}},"required":["id","type"],"type":"object"},"elasticstack:index/getKibanaSecurityRoleElasticsearch:getKibanaSecurityRoleElasticsearch":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"clusters":{"description":"List of the cluster privileges.\n","items":{"type":"string"},"type":"array"},"indices":{"description":"A list of indices permissions entries.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearchIndex:getKibanaSecurityRoleElasticsearchIndex"},"type":"array"},"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%2FgetKibanaSecurityRoleElasticsearchRemoteIndex:getKibanaSecurityRoleElasticsearchRemoteIndex"},"type":"array"},"runAs":{"description":"A list of usernames the owners of this role can impersonate.\n","items":{"type":"string"},"type":"array"}},"required":["clusters","indices","remoteIndices","runAs"],"type":"object"},"elasticstack:index/getKibanaSecurityRoleElasticsearchIndex:getKibanaSecurityRoleElasticsearchIndex":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearchIndexFieldSecurity:getKibanaSecurityRoleElasticsearchIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"privileges":{"description":"The index level privileges that the owners of the role have on the specified indices.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A search query that defines the documents the owners of the role have read access to.\n","type":"string"}},"required":["fieldSecurity","names","privileges","query"],"type":"object"},"elasticstack:index/getKibanaSecurityRoleElasticsearchIndexFieldSecurity:getKibanaSecurityRoleElasticsearchIndexFieldSecurity":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"excepts":{"description":"List of the fields to which the grants will not be applied.\n","items":{"type":"string"},"type":"array"},"grants":{"description":"List of the fields to grant the access to.\n","items":{"type":"string"},"type":"array"}},"required":["excepts","grants"],"type":"object"},"elasticstack:index/getKibanaSecurityRoleElasticsearchRemoteIndex:getKibanaSecurityRoleElasticsearchRemoteIndex":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"clusters":{"description":"A list of cluster aliases to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"fieldSecurity":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity:getKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity","description":"The document fields that the owners of the role have read access to.\n"},"names":{"description":"A list of indices (or index name patterns) to which the permissions in this entry apply.\n","items":{"type":"string"},"type":"array"},"privileges":{"description":"The index level privileges that the owners of the role have on the specified indices.\n","items":{"type":"string"},"type":"array"},"query":{"description":"A search query that defines the documents the owners of the role have read access to.\n","type":"string"}},"required":["clusters","fieldSecurity","names","privileges","query"],"type":"object"},"elasticstack:index/getKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity:getKibanaSecurityRoleElasticsearchRemoteIndexFieldSecurity":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"excepts":{"description":"List of the fields to which the grants will not be applied.\n","items":{"type":"string"},"type":"array"},"grants":{"description":"List of the fields to grant the access to.\n","items":{"type":"string"},"type":"array"}},"required":["excepts","grants"],"type":"object"},"elasticstack:index/getKibanaSecurityRoleKibana:getKibanaSecurityRoleKibana":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"bases":{"description":"A base privilege. When specified, the base must be [\"all\"] or [\"read\"].\n","items":{"type":"string"},"type":"array"},"features":{"description":"List of privileges for specific features.\n","items":{"$ref":"#/types/elasticstack:index%2FgetKibanaSecurityRoleKibanaFeature:getKibanaSecurityRoleKibanaFeature"},"type":"array"},"spaces":{"description":"The spaces to apply the privileges to. To grant access to all spaces, set to [\"*\"], or omit the value.\n","items":{"type":"string"},"type":"array"}},"required":["bases","features","spaces"],"type":"object"},"elasticstack:index/getKibanaSecurityRoleKibanaConnection:getKibanaSecurityRoleKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getKibanaSecurityRoleKibanaFeature:getKibanaSecurityRoleKibanaFeature":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"name":{"description":"Feature name.\n","type":"string"},"privileges":{"description":"Feature privileges.\n","items":{"type":"string"},"type":"array"}},"required":["name","privileges"],"type":"object"},"elasticstack:index/getKibanaSpacesKibanaConnection:getKibanaSpacesKibanaConnection":{"properties":{"apiKey":{"description":"API Key to use for authentication to Kibana\n","secret":true,"type":"string"},"bearerToken":{"description":"Bearer Token to use for authentication to Kibana\n","secret":true,"type":"string"},"caCerts":{"description":"A list of paths to CA certificates to validate the certificate presented by the Kibana server.\n","items":{"type":"string"},"type":"array"},"endpoints":{"items":{"type":"string"},"secret":true,"type":"array"},"insecure":{"description":"Disable TLS certificate validation\n","type":"boolean"},"password":{"description":"Password to use for API authentication to Kibana.\n","secret":true,"type":"string"},"username":{"description":"Username to use for API authentication to Kibana.\n","type":"string"}},"type":"object"},"elasticstack:index/getKibanaSpacesSpace:getKibanaSpacesSpace":{"language":{"nodejs":{"requiredInputs":[]}},"properties":{"color":{"description":"The hexadecimal color code used in the space avatar. By default, the color is automatically generated from the space name.\n","type":"string"},"description":{"description":"The description for the space.\n","type":"string"},"disabledFeatures":{"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","items":{"type":"string"},"type":"array"},"id":{"description":"Internal identifier of the resource.\n","type":"string"},"imageUrl":{"description":"The data-URL encoded image to display in the space avatar.\n","type":"string"},"initials":{"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","type":"string"},"name":{"description":"The display name for the space.\n","type":"string"},"solution":{"description":"The solution view for the space. Valid options are <span pulumi-lang-nodejs=\"`security`\" pulumi-lang-dotnet=\"`Security`\" pulumi-lang-go=\"`security`\" pulumi-lang-python=\"`security`\" pulumi-lang-yaml=\"`security`\" pulumi-lang-java=\"`security`\">`security`</span>, <span pulumi-lang-nodejs=\"`oblt`\" pulumi-lang-dotnet=\"`Oblt`\" pulumi-lang-go=\"`oblt`\" pulumi-lang-python=\"`oblt`\" pulumi-lang-yaml=\"`oblt`\" pulumi-lang-java=\"`oblt`\">`oblt`</span>, <span pulumi-lang-nodejs=\"`es`\" pulumi-lang-dotnet=\"`Es`\" pulumi-lang-go=\"`es`\" pulumi-lang-python=\"`es`\" pulumi-lang-yaml=\"`es`\" pulumi-lang-java=\"`es`\">`es`</span>, or <span pulumi-lang-nodejs=\"`classic`\" pulumi-lang-dotnet=\"`Classic`\" pulumi-lang-go=\"`classic`\" pulumi-lang-python=\"`classic`\" pulumi-lang-yaml=\"`classic`\" pulumi-lang-java=\"`classic`\">`classic`</span>.\n","type":"string"}},"required":["color","disabledFeatures","id","initials","name","solution"],"type":"object"}},"version":"0.16.1"}
