---
type: api
title: Preview rule alerts generated on specified time range
description: **Spaces method and path for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/kibana/v9/operation/operation-rulepreview
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/kibana/v9/operation/operation-rulepreview
products:
  - Kibana
---

# Preview rule alerts generated on specified time range

- Server: `https://{kibana_url}`

## Paths

- `POST` `/api/detection_engine/rules/preview`
- `POST` `/s/{space_id}/api/detection_engine/rules/preview`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/kibana/v9/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/kibana/v9/authentication#basicauth)

## Description

Refer to [Spaces](https://www.elastic.co/docs/deploy-manage/manage-spaces) for more information.

Simulates a detection rule using the same rule type and query logic as a persisted rule, over a short
time window, without persisting a rule or writing alerts. Use the response to validate queries, see sample
matching documents, and inspect execution logs. Pair `invocationCount` and `timeframeEnd` to cap run time.

## Query String Parameters

- `enable_logged_requests` (boolean)
  Enables logging and returning in response ES queries, performed during rule execution

## Request Body

`application/json`

Rule create payload (same shape as `POST /api/detection_engine/rules` for a given `type`) plus
`invocationCount` and `timeframeEnd` to control how the preview is executed. Optional
`enable_logged_requests` surfaces Elasticsearch request logging for debugging.

Any of:
- **EqlRuleCreateProps** (`type: eql`)
  - `actions` ([] object) — optional
    Array defining the automated actions (notifications) taken when alerts are generated.
    - `action_type_id` (string) — required
      The action type used for sending notifications, can be:

  - `.slack`
  - `.slack_api`
  - `.email`
  - `.index`
  - `.pagerduty`
  - `.swimlane`
  - `.webhook`
  - `.servicenow`
  - `.servicenow-itom`
  - `.servicenow-sir`
  - `.jira`
  - `.resilient`
  - `.opsgenie`
  - `.teams`
  - `.torq`
  - `.tines`
  - `.d3security`
    - `alerts_filter` (object) — optional
      Object containing an action’s conditional filters.

- `timeframe` (object, optional): Object containing the time frame for when this action can be run.
    - `days` (array of integers, required): List of days of the week on which this action will be run. Days of the week are expressed as numbers between `1-7`, where `1` is Monday and `7` is Sunday. To select all days of the week, enter an empty array.
    - `hours` (object, required): The hours of the day during which this action will run. Hours of the day are expressed as two strings in the format `hh:mm` in `24` hour time. A start of `00:00` and an end of `24:00` means the action can run all day.
        - start (string, required): Start time in `hh:mm` format.
        - end (string, required): End time in `hh:mm` format.
    - `timezone` (string, required): An ISO timezone name, such as `Europe/Madrid` or `America/New_York`. Specific offsets such as `UTC` or `UTC+1` will also work, but lack built-in DST.
- `query` (object, optional): Object containing a query filter which gets applied to an action and determines whether the action should run.
    - `kql` (string, required): A KQL string.
    - `filters` (array of objects, required): Array of filter objects, as defined in the `kbn-es-query` package.
    - `frequency` ({}) — optional
      The action frequency defines when the action runs (for example, only on rule execution or at specific time intervals).
      - `notifyWhen` (enum) — required
        Defines how often rules run actions.
        Values: `onActiveAlert`, `onThrottleInterval`, `onActionGroupChange`
      - `summary` (boolean) — required
        Action summary indicates whether we will send a summary notification about all the generate alerts or notification per individual alert
      - `throttle` (union) — required
        Defines how often rule actions are taken.
        Values: `no_actions`, `rule`
    - `group` (string) — optional
      Optionally groups actions by use cases. Use `default` for alert notifications.
    - `id` (string) — required
      The connector ID.
    - `params` (object) — required
      Object containing the allowed connector fields, which varies according to the connector type.

For Slack:

  - `message` (string, required): The notification message.

For email:

  - `to`, `cc`, `bcc` (string): Email addresses to which the notifications are sent. At least one field must have a value.
  - `subject` (string, optional): Email subject line.
  - `message` (string, required): Email body text.

For Webhook:

  - `body` (string, required): JSON payload.

For PagerDuty:

  - `severity` (string, required): Severity of on the alert notification, can be: `Critical`, `Error`, `Warning` or `Info`.
  - `eventAction` (string, required): Event [action type](https://v2.developer.pagerduty.com/docs/events-api-v2#event-action), which can be `trigger`, `resolve`, or `acknowledge`.
  - `dedupKey` (string, optional): Groups alert notifications with the same PagerDuty alert.
  - `timestamp` (DateTime, optional): ISO-8601 format [timestamp](https://v2.developer.pagerduty.com/docs/types#datetime).
  - `component` (string, optional): Source machine component responsible for the event, for example `security-solution`.
  - `group` (string, optional): Enables logical grouping of service components.
  - `source` (string, optional): The affected system. Defaults to the Kibana saved object ID of the action.
  - `summary` (string, options): Summary of the event. Defaults to `No summary provided`. Maximum length is 1024 characters.
  - `class` (string, optional): Value indicating the class/type of the event.
    - `uuid` (string · min: 1) — optional
      A string that does not contain only whitespace characters
  - `alias_purpose` (enum) — optional
    Values: `savedObjectConversion`, `savedObjectImport`
  - `alias_target_id` (string) — optional
  - `author` ([] object) — optional
    The rule’s author.
  - `building_block_type` (string) — optional
    Determines if the rule acts as a building block. If yes, the value must be `default`.
By default, building-block alerts are not displayed in the UI. These rules are used as a foundation for other rules that do generate alerts.
For more information, refer to [About building block rules](https://www.elastic.co/docs/solutions/security/detect-and-alert/about-building-block-rules).
  - `description` (string · min: 1) — required
    The rule’s description.
  - `enabled` (boolean) — optional
    Determines whether the rule is enabled. Defaults to true.
  - `exceptions_list` ([] object) — optional
    - `id` (string · min: 1) — required
      ID of the exception container
    - `list_id` (string · min: 1) — required
      List ID of the exception container
    - `namespace_type` (enum) — required
      Determines the exceptions validity in rule's Kibana space
      Values: `agnostic`, `single`
    - `type` (enum) — required
      The exception type
      Values: `detection`, `rule_default`, `endpoint`, `endpoint_trusted_apps`, `endpoint_trusted_devices`, `endpoint_events`, `endpoint_host_isolation_exceptions`, `endpoint_blocklists`
  - `false_positives` ([] object) — optional
    String array used to describe common reasons why the rule may issue false-positive alerts. Defaults to an empty array.
  - `from` (string) — optional
    Time from which data is analyzed each time the rule runs, using a date math range. For example, now-4200s means the rule analyzes data from 70 minutes before its start time. Defaults to now-6m (analyzes data from 6 minutes before the start time).
  - `interval` (string) — optional
    Frequency of rule execution, using a date math range. For example, "1h" means the rule runs every hour. Defaults to 5m (5 minutes).
  - `investigation_fields` ({}) — optional
    Schema for fields relating to investigation fields. These are user defined fields we use to highlight
in various features in the UI such as alert details flyout and exceptions auto-population from alert.
    - `field_names` ([] string · min: 1) — required
  - `license` (string) — optional
    The rule's license.
  - `max_signals` (integer · min: 1) — optional
    Maximum number of alerts the rule can create during a single run (the rule’s Max alerts per run [advanced setting](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params) value). Defaults to `100`.
> info
> This setting can be superseded by the [Kibana configuration setting](https://www.elastic.co/docs/reference/kibana/configuration-reference/alerting-settings) `xpack.alerting.rules.run.alerts.max`, which determines the maximum alerts generated by any rule in the Kibana alerting framework. For example, if `xpack.alerting.rules.run.alerts.max` is set to 1000, the rule can generate no more than 1000 alerts even if `max_signals` is set higher.
  - `meta` (object) — optional
    Placeholder for metadata about the rule.
> info
> This field is overwritten when you save changes to the rule’s settings.
  - `name` (string · min: 1) — required
    A human-readable name for the rule.
  - `namespace` (string) — optional
    Has no effect.
  - `note` (string) — optional
    Notes to help investigate alerts produced by the rule.
  - `outcome` (enum) — optional
    Values: `exactMatch`, `aliasMatch`, `conflict`
  - `output_index` (string) — optional — deprecated
    (deprecated) Has no effect.
  - `references` ([] object) — optional
    Array containing notes about or references to relevant information about the rule. Defaults to an empty array.
  - `related_integrations` ([] object) — optional
    - `integration` (string · min: 1) — optional
      A string that does not contain only whitespace characters
    - `package` (string · min: 1) — required
      A string that does not contain only whitespace characters
    - `version` (string · min: 1) — required
      A string that does not contain only whitespace characters
  - `required_fields` ([] object) — optional
    Elasticsearch fields and their types that need to be present for the rule to function.
> info
> The value of `required_fields` does not affect the rule’s behavior, and specifying it incorrectly won’t cause the rule to fail. Use `required_fields` as an informational property to document the fields that the rule expects to be present in the data.
    - `name` (string · min: 1) — required
      Name of an Elasticsearch field
    - `type` (string · min: 1) — required
      Type of the Elasticsearch field
  - `response_actions` ([] union) — optional
    - **OsqueryResponseAction**
      - `action_type_id` (enum) — required
        Values: `.osquery`
      - `params` ({}) — required
        - `ecs_mapping` (object) — optional
          Map Osquery results columns or static values to Elastic Common Schema (ECS) fields. Example: "ecs_mapping": {"process.pid": {"field": "pid"}}
        - `pack_id` (string) — optional
          To specify a query pack, use the packId field. Example: "packId": "processes_elastic"
        - `queries` ([] object) — optional
          - `ecs_mapping` (object) — optional
            Map Osquery results columns or static values to Elastic Common Schema (ECS) fields. Example: "ecs_mapping": {"process.pid": {"field": "pid"}}
          - `id` (string) — required
            Query ID
          - `platform` (string) — optional
          - `query` (string) — required
            Query to run
          - `removed` (boolean) — optional
          - `snapshot` (boolean) — optional
          - `version` (string) — optional
            Query version
        - `query` (string) — optional
          To run a single query, use the query field and enter a SQL query. Example: "query": "SELECT * FROM processes;"
        - `saved_query_id` (string) — optional
          To run a saved query, use the saved_query_id field and specify the saved query ID. Example: "saved_query_id": "processes_elastic"
        - `timeout` (number) — optional
          A timeout period, in seconds, after which the query will stop running. Overwriting the default timeout allows you to support queries that require more time to complete. The default and minimum supported value is 60. The maximum supported value is 900. Example: "timeout": 120.
    - **EndpointResponseAction**
      - `action_type_id` (enum) — required
        Values: `.endpoint`
      - `params` (union oneOf) — required
        - **DefaultParams**
          - `command` (enum) — required
            Values: `isolate`
          - `comment` (string) — optional
        - **ProcessesParams**
          - `command` (enum) — required
            To run an endpoint response action, specify a value for the command field. Example: "command": "isolate"
            Values: `kill-process`, `suspend-process`
          - `comment` (string) — optional
            Add a note that explains or describes the action. You can find your comment in the response actions history log. Example: "comment": "Check processes"
          - `config` (object) — required
            - `field` (string) — required
              Field to use instead of process.pid
            - `overwrite` (boolean · default: true) — optional
              Whether to overwrite field with process.pid
        - **RunscriptParams**
          Run a script on the Elastic Defend host that triggered the alert.
          - `command` (enum) — required
            Values: `runscript`
          - `comment` (string) — optional
            Add a note that explains or describes the action. You can find your comment in the response actions history log
          - `config` (object) — optional
            - `linux` ({}) — optional
              - `scriptId` (string) — optional
                The ID of the script to run (from the Kibana Script library)
              - `scriptInput` (string) — optional
                The arguments to pass to the script (if any)
              - `timeout` (integer) — optional
                Specify the timeout in seconds for the script execution
            - `macos` ({}) — optional
              - `scriptId` (string) — optional
                The ID of the script to run (from the Kibana Script library)
              - `scriptInput` (string) — optional
                The arguments to pass to the script (if any)
              - `timeout` (integer) — optional
                Specify the timeout in seconds for the script execution
            - `windows` ({}) — optional
              - `scriptId` (string) — optional
                The ID of the script to run (from the Kibana Script library)
              - `scriptInput` (string) — optional
                The arguments to pass to the script (if any)
              - `timeout` (integer) — optional
                Specify the timeout in seconds for the script execution
  - `risk_score` (integer · min: 0 · max: 100) — required
    A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
  - `risk_score_mapping` ([] object) — optional
    Overrides generated alerts' risk_score with a value from the source event
    - `field` (string) — required
      Source event field used to override the default `risk_score`.
    - `operator` (enum) — required
      Values: `equals`
    - `risk_score` (integer · min: 0 · max: 100) — optional
      A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
    - `value` (string) — required
  - `rule_id` (string) — optional
    A stable unique identifier for the rule object. It can be assigned during rule creation. It can be any string, but often is a UUID. It should be unique not only within a given Kibana space, but also across spaces and Elastic environments. The same prebuilt Elastic rule, when installed in two different Kibana spaces or two different Elastic environments, will have the same `rule_id`s.
  - `rule_name_override` (string) — optional
    Sets which field in the source event is used to populate the alert's `signal.rule.name` value (in the UI, this value is displayed on the Rules page in the Rule column). When unspecified, the rule’s `name` value is used. The source field must be a string data type.
  - `setup` (string) — optional
    Populates the rule’s setup guide with instructions on rule prerequisites such as required integrations, configuration steps, and anything else needed for the rule to work correctly.
  - `severity` (enum) — required
    Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
    Values: `low`, `medium`, `high`, `critical`
  - `severity_mapping` ([] object) — optional
    Overrides generated alerts' severity with values from the source event
    - `field` (string) — required
      Source event field used to override the default `severity`.
    - `operator` (enum) — required
      Values: `equals`
    - `severity` (enum) — required
      Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
      Values: `low`, `medium`, `high`, `critical`
    - `value` (string) — required
  - `tags` ([] object) — optional
    String array containing words and phrases to help categorize, filter, and search rules. Defaults to an empty array.
  - `threat` ([] object) — optional
    - `framework` (string) — required
      Relevant attack framework
    - `tactic` ({}) — required
      Object containing information on the attack type
      - `id` (string) — required
        Tactic ID
      - `name` (string) — required
        Tactic name
      - `reference` (string) — required
        Tactic reference
    - `technique` ([] object) — optional
      Array containing information on the attack techniques (optional)
      - `id` (string) — required
        Technique ID
      - `name` (string) — required
        Technique name
      - `reference` (string) — required
        Technique reference
      - `subtechnique` ([] object) — optional
        Array containing more specific information on the attack technique.
        - `id` (string) — required
          Subtechnique ID
        - `name` (string) — required
          Subtechnique name
        - `reference` (string) — required
          Subtechnique reference
  - `throttle` (union) — optional
    Defines how often rule actions are taken.
    Values: `no_actions`, `rule`
  - `timeline_id` (string) — optional
    Timeline template ID
  - `timeline_title` (string) — optional
    Timeline template title
  - `timestamp_override` (string) — optional
    Sets the time field used to query indices. When unspecified, rules query the `@timestamp` field. The source field must be an Elasticsearch date data type.
  - `timestamp_override_fallback_disabled` (boolean) — optional
    Disables the fallback to the event's @timestamp field
  - `to` (string) — optional
  - `version` (integer · min: 1) — optional
    The rule's version number.

- For prebuilt rules it represents the version of the rule's content in the source [detection-rules](https://github.com/elastic/detection-rules) repository (and the corresponding `security_detection_engine` Fleet package that is used for distributing prebuilt rules). 
- For custom rules it is set to `1` when the rule is created. 
> info
> It is not incremented on each update. Compare this to the `revision` field.
  - `language` (enum) — required
    Values: `eql`
  - `query` (string) — required
    [Query](https://www.elastic.co/docs/explore-analyze/query-filter) used by the rule to create alerts.

- For indicator match rules, only the query’s results are used to determine whether an alert is generated.
- ES|QL rules have additional query requirements. Refer to [Create ES|QL](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#create-esql-rule) rules for more information.
  - `type` (enum) — required
    Rule type
    Values: `eql`
  - `alert_suppression` ({}) — optional
    Defines alert suppression configuration.
    - `duration` ({}) — optional
      - `unit` (enum) — required
        Time unit
        Values: `s`, `m`, `h`
      - `value` (integer · min: 1) — required
    - `group_by` ([] object · min: 1 · max: 3) — required
    - `missing_fields_strategy` (enum) — optional
      Describes how alerts will be generated for documents with missing suppress by fields:
doNotSuppress - per each document a separate alert will be created
suppress - only alert will be created per suppress by bucket
      Values: `doNotSuppress`, `suppress`
  - `data_view_id` (string) — optional
  - `event_category_override` (string) — optional
  - `filters` ([] object) — optional
    The query and filter context array used to define the conditions for when alerts are created from events. Defaults to an empty array.
> info
> This field is not supported for ES|QL rules.
  - `index` ([] object) — optional
    Indices on which the rule functions. Defaults to the Security Solution indices defined on the Kibana Advanced Settings page (Kibana → Stack Management → Advanced Settings → `securitySolution:defaultIndex`).
> info
> This field is not supported for ES|QL rules.
  - `tiebreaker_field` (string) — optional
    Sets a secondary field for sorting events
  - `timestamp_field` (string) — optional
    Specifies the name of the event timestamp field used for sorting a sequence of events. Not to be confused with `timestamp_override`, which specifies the more general field used for querying events within a range. Defaults to the @timestamp ECS field.
  - `invocationCount` (integer) — required
  - `timeframeEnd` (string) — required
- **QueryRuleCreateProps** (`type: query`)
  - `actions` ([] object) — optional
    Array defining the automated actions (notifications) taken when alerts are generated.
    Same fields as `actions` in `EqlRuleCreateProps`
  - `alias_purpose` (enum) — optional
    Values: `savedObjectConversion`, `savedObjectImport`
  - `alias_target_id` (string) — optional
  - `author` ([] object) — optional
    The rule’s author.
  - `building_block_type` (string) — optional
    Determines if the rule acts as a building block. If yes, the value must be `default`.
By default, building-block alerts are not displayed in the UI. These rules are used as a foundation for other rules that do generate alerts.
For more information, refer to [About building block rules](https://www.elastic.co/docs/solutions/security/detect-and-alert/about-building-block-rules).
  - `description` (string · min: 1) — required
    The rule’s description.
  - `enabled` (boolean) — optional
    Determines whether the rule is enabled. Defaults to true.
  - `exceptions_list` ([] object) — optional
    - `id` (string · min: 1) — required
      ID of the exception container
    - `list_id` (string · min: 1) — required
      List ID of the exception container
    - `namespace_type` (enum) — required
      Determines the exceptions validity in rule's Kibana space
      Values: `agnostic`, `single`
    - `type` (enum) — required
      The exception type
      Values: `detection`, `rule_default`, `endpoint`, `endpoint_trusted_apps`, `endpoint_trusted_devices`, `endpoint_events`, `endpoint_host_isolation_exceptions`, `endpoint_blocklists`
  - `false_positives` ([] object) — optional
    String array used to describe common reasons why the rule may issue false-positive alerts. Defaults to an empty array.
  - `from` (string) — optional
    Time from which data is analyzed each time the rule runs, using a date math range. For example, now-4200s means the rule analyzes data from 70 minutes before its start time. Defaults to now-6m (analyzes data from 6 minutes before the start time).
  - `interval` (string) — optional
    Frequency of rule execution, using a date math range. For example, "1h" means the rule runs every hour. Defaults to 5m (5 minutes).
  - `investigation_fields` ({}) — optional
    Schema for fields relating to investigation fields. These are user defined fields we use to highlight
in various features in the UI such as alert details flyout and exceptions auto-population from alert.
    - `field_names` ([] string · min: 1) — required
  - `license` (string) — optional
    The rule's license.
  - `max_signals` (integer · min: 1) — optional
    Maximum number of alerts the rule can create during a single run (the rule’s Max alerts per run [advanced setting](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params) value). Defaults to `100`.
> info
> This setting can be superseded by the [Kibana configuration setting](https://www.elastic.co/docs/reference/kibana/configuration-reference/alerting-settings) `xpack.alerting.rules.run.alerts.max`, which determines the maximum alerts generated by any rule in the Kibana alerting framework. For example, if `xpack.alerting.rules.run.alerts.max` is set to 1000, the rule can generate no more than 1000 alerts even if `max_signals` is set higher.
  - `meta` (object) — optional
    Placeholder for metadata about the rule.
> info
> This field is overwritten when you save changes to the rule’s settings.
  - `name` (string · min: 1) — required
    A human-readable name for the rule.
  - `namespace` (string) — optional
    Has no effect.
  - `note` (string) — optional
    Notes to help investigate alerts produced by the rule.
  - `outcome` (enum) — optional
    Values: `exactMatch`, `aliasMatch`, `conflict`
  - `output_index` (string) — optional — deprecated
    (deprecated) Has no effect.
  - `references` ([] object) — optional
    Array containing notes about or references to relevant information about the rule. Defaults to an empty array.
  - `related_integrations` ([] object) — optional
    - `integration` (string · min: 1) — optional
      A string that does not contain only whitespace characters
    - `package` (string · min: 1) — required
      A string that does not contain only whitespace characters
    - `version` (string · min: 1) — required
      A string that does not contain only whitespace characters
  - `required_fields` ([] object) — optional
    Elasticsearch fields and their types that need to be present for the rule to function.
> info
> The value of `required_fields` does not affect the rule’s behavior, and specifying it incorrectly won’t cause the rule to fail. Use `required_fields` as an informational property to document the fields that the rule expects to be present in the data.
    - `name` (string · min: 1) — required
      Name of an Elasticsearch field
    - `type` (string · min: 1) — required
      Type of the Elasticsearch field
  - `response_actions` ([] union) — optional
    Same options as `response_actions` in `EqlRuleCreateProps`
  - `risk_score` (integer · min: 0 · max: 100) — required
    A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
  - `risk_score_mapping` ([] object) — optional
    Overrides generated alerts' risk_score with a value from the source event
    - `field` (string) — required
      Source event field used to override the default `risk_score`.
    - `operator` (enum) — required
      Values: `equals`
    - `risk_score` (integer · min: 0 · max: 100) — optional
      A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
    - `value` (string) — required
  - `rule_id` (string) — optional
    A stable unique identifier for the rule object. It can be assigned during rule creation. It can be any string, but often is a UUID. It should be unique not only within a given Kibana space, but also across spaces and Elastic environments. The same prebuilt Elastic rule, when installed in two different Kibana spaces or two different Elastic environments, will have the same `rule_id`s.
  - `rule_name_override` (string) — optional
    Sets which field in the source event is used to populate the alert's `signal.rule.name` value (in the UI, this value is displayed on the Rules page in the Rule column). When unspecified, the rule’s `name` value is used. The source field must be a string data type.
  - `setup` (string) — optional
    Populates the rule’s setup guide with instructions on rule prerequisites such as required integrations, configuration steps, and anything else needed for the rule to work correctly.
  - `severity` (enum) — required
    Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
    Values: `low`, `medium`, `high`, `critical`
  - `severity_mapping` ([] object) — optional
    Overrides generated alerts' severity with values from the source event
    - `field` (string) — required
      Source event field used to override the default `severity`.
    - `operator` (enum) — required
      Values: `equals`
    - `severity` (enum) — required
      Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
      Values: `low`, `medium`, `high`, `critical`
    - `value` (string) — required
  - `tags` ([] object) — optional
    String array containing words and phrases to help categorize, filter, and search rules. Defaults to an empty array.
  - `threat` ([] object) — optional
    Same fields as `threat` in `EqlRuleCreateProps`
  - `throttle` (union) — optional
    Defines how often rule actions are taken.
    Values: `no_actions`, `rule`
  - `timeline_id` (string) — optional
    Timeline template ID
  - `timeline_title` (string) — optional
    Timeline template title
  - `timestamp_override` (string) — optional
    Sets the time field used to query indices. When unspecified, rules query the `@timestamp` field. The source field must be an Elasticsearch date data type.
  - `timestamp_override_fallback_disabled` (boolean) — optional
    Disables the fallback to the event's @timestamp field
  - `to` (string) — optional
  - `version` (integer · min: 1) — optional
    The rule's version number.

- For prebuilt rules it represents the version of the rule's content in the source [detection-rules](https://github.com/elastic/detection-rules) repository (and the corresponding `security_detection_engine` Fleet package that is used for distributing prebuilt rules). 
- For custom rules it is set to `1` when the rule is created. 
> info
> It is not incremented on each update. Compare this to the `revision` field.
  - `type` (enum) — required
    Rule type
    Values: `query`
  - `alert_suppression` ({}) — optional
    Defines alert suppression configuration.
    - `duration` ({}) — optional
      - `unit` (enum) — required
        Time unit
        Values: `s`, `m`, `h`
      - `value` (integer · min: 1) — required
    - `group_by` ([] object · min: 1 · max: 3) — required
    - `missing_fields_strategy` (enum) — optional
      Describes how alerts will be generated for documents with missing suppress by fields:
doNotSuppress - per each document a separate alert will be created
suppress - only alert will be created per suppress by bucket
      Values: `doNotSuppress`, `suppress`
  - `data_view_id` (string) — optional
  - `filters` ([] object) — optional
    The query and filter context array used to define the conditions for when alerts are created from events. Defaults to an empty array.
> info
> This field is not supported for ES|QL rules.
  - `index` ([] object) — optional
    Indices on which the rule functions. Defaults to the Security Solution indices defined on the Kibana Advanced Settings page (Kibana → Stack Management → Advanced Settings → `securitySolution:defaultIndex`).
> info
> This field is not supported for ES|QL rules.
  - `saved_id` (string) — optional
    Kibana [saved search](https://www.elastic.co/docs/explore-analyze/discover/search-sessions) used by the rule to create alerts.
  - `language` (enum) — optional
    Values: `kuery`, `lucene`
  - `query` (string) — optional
    [Query](https://www.elastic.co/docs/explore-analyze/query-filter) used by the rule to create alerts.

- For indicator match rules, only the query’s results are used to determine whether an alert is generated.
- ES|QL rules have additional query requirements. Refer to [Create ES|QL](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#create-esql-rule) rules for more information.
  - `invocationCount` (integer) — required
  - `timeframeEnd` (string) — required
- **SavedQueryRuleCreateProps** (`type: saved_query`)
  - `actions` ([] object) — optional
    Array defining the automated actions (notifications) taken when alerts are generated.
    Same fields as `actions` in `EqlRuleCreateProps`
  - `alias_purpose` (enum) — optional
    Values: `savedObjectConversion`, `savedObjectImport`
  - `alias_target_id` (string) — optional
  - `author` ([] object) — optional
    The rule’s author.
  - `building_block_type` (string) — optional
    Determines if the rule acts as a building block. If yes, the value must be `default`.
By default, building-block alerts are not displayed in the UI. These rules are used as a foundation for other rules that do generate alerts.
For more information, refer to [About building block rules](https://www.elastic.co/docs/solutions/security/detect-and-alert/about-building-block-rules).
  - `description` (string · min: 1) — required
    The rule’s description.
  - `enabled` (boolean) — optional
    Determines whether the rule is enabled. Defaults to true.
  - `exceptions_list` ([] object) — optional
    - `id` (string · min: 1) — required
      ID of the exception container
    - `list_id` (string · min: 1) — required
      List ID of the exception container
    - `namespace_type` (enum) — required
      Determines the exceptions validity in rule's Kibana space
      Values: `agnostic`, `single`
    - `type` (enum) — required
      The exception type
      Values: `detection`, `rule_default`, `endpoint`, `endpoint_trusted_apps`, `endpoint_trusted_devices`, `endpoint_events`, `endpoint_host_isolation_exceptions`, `endpoint_blocklists`
  - `false_positives` ([] object) — optional
    String array used to describe common reasons why the rule may issue false-positive alerts. Defaults to an empty array.
  - `from` (string) — optional
    Time from which data is analyzed each time the rule runs, using a date math range. For example, now-4200s means the rule analyzes data from 70 minutes before its start time. Defaults to now-6m (analyzes data from 6 minutes before the start time).
  - `interval` (string) — optional
    Frequency of rule execution, using a date math range. For example, "1h" means the rule runs every hour. Defaults to 5m (5 minutes).
  - `investigation_fields` ({}) — optional
    Schema for fields relating to investigation fields. These are user defined fields we use to highlight
in various features in the UI such as alert details flyout and exceptions auto-population from alert.
    - `field_names` ([] string · min: 1) — required
  - `license` (string) — optional
    The rule's license.
  - `max_signals` (integer · min: 1) — optional
    Maximum number of alerts the rule can create during a single run (the rule’s Max alerts per run [advanced setting](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params) value). Defaults to `100`.
> info
> This setting can be superseded by the [Kibana configuration setting](https://www.elastic.co/docs/reference/kibana/configuration-reference/alerting-settings) `xpack.alerting.rules.run.alerts.max`, which determines the maximum alerts generated by any rule in the Kibana alerting framework. For example, if `xpack.alerting.rules.run.alerts.max` is set to 1000, the rule can generate no more than 1000 alerts even if `max_signals` is set higher.
  - `meta` (object) — optional
    Placeholder for metadata about the rule.
> info
> This field is overwritten when you save changes to the rule’s settings.
  - `name` (string · min: 1) — required
    A human-readable name for the rule.
  - `namespace` (string) — optional
    Has no effect.
  - `note` (string) — optional
    Notes to help investigate alerts produced by the rule.
  - `outcome` (enum) — optional
    Values: `exactMatch`, `aliasMatch`, `conflict`
  - `output_index` (string) — optional — deprecated
    (deprecated) Has no effect.
  - `references` ([] object) — optional
    Array containing notes about or references to relevant information about the rule. Defaults to an empty array.
  - `related_integrations` ([] object) — optional
    - `integration` (string · min: 1) — optional
      A string that does not contain only whitespace characters
    - `package` (string · min: 1) — required
      A string that does not contain only whitespace characters
    - `version` (string · min: 1) — required
      A string that does not contain only whitespace characters
  - `required_fields` ([] object) — optional
    Elasticsearch fields and their types that need to be present for the rule to function.
> info
> The value of `required_fields` does not affect the rule’s behavior, and specifying it incorrectly won’t cause the rule to fail. Use `required_fields` as an informational property to document the fields that the rule expects to be present in the data.
    - `name` (string · min: 1) — required
      Name of an Elasticsearch field
    - `type` (string · min: 1) — required
      Type of the Elasticsearch field
  - `response_actions` ([] union) — optional
    Same options as `response_actions` in `EqlRuleCreateProps`
  - `risk_score` (integer · min: 0 · max: 100) — required
    A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
  - `risk_score_mapping` ([] object) — optional
    Overrides generated alerts' risk_score with a value from the source event
    - `field` (string) — required
      Source event field used to override the default `risk_score`.
    - `operator` (enum) — required
      Values: `equals`
    - `risk_score` (integer · min: 0 · max: 100) — optional
      A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
    - `value` (string) — required
  - `rule_id` (string) — optional
    A stable unique identifier for the rule object. It can be assigned during rule creation. It can be any string, but often is a UUID. It should be unique not only within a given Kibana space, but also across spaces and Elastic environments. The same prebuilt Elastic rule, when installed in two different Kibana spaces or two different Elastic environments, will have the same `rule_id`s.
  - `rule_name_override` (string) — optional
    Sets which field in the source event is used to populate the alert's `signal.rule.name` value (in the UI, this value is displayed on the Rules page in the Rule column). When unspecified, the rule’s `name` value is used. The source field must be a string data type.
  - `setup` (string) — optional
    Populates the rule’s setup guide with instructions on rule prerequisites such as required integrations, configuration steps, and anything else needed for the rule to work correctly.
  - `severity` (enum) — required
    Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
    Values: `low`, `medium`, `high`, `critical`
  - `severity_mapping` ([] object) — optional
    Overrides generated alerts' severity with values from the source event
    - `field` (string) — required
      Source event field used to override the default `severity`.
    - `operator` (enum) — required
      Values: `equals`
    - `severity` (enum) — required
      Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
      Values: `low`, `medium`, `high`, `critical`
    - `value` (string) — required
  - `tags` ([] object) — optional
    String array containing words and phrases to help categorize, filter, and search rules. Defaults to an empty array.
  - `threat` ([] object) — optional
    Same fields as `threat` in `EqlRuleCreateProps`
  - `throttle` (union) — optional
    Defines how often rule actions are taken.
    Values: `no_actions`, `rule`
  - `timeline_id` (string) — optional
    Timeline template ID
  - `timeline_title` (string) — optional
    Timeline template title
  - `timestamp_override` (string) — optional
    Sets the time field used to query indices. When unspecified, rules query the `@timestamp` field. The source field must be an Elasticsearch date data type.
  - `timestamp_override_fallback_disabled` (boolean) — optional
    Disables the fallback to the event's @timestamp field
  - `to` (string) — optional
  - `version` (integer · min: 1) — optional
    The rule's version number.

- For prebuilt rules it represents the version of the rule's content in the source [detection-rules](https://github.com/elastic/detection-rules) repository (and the corresponding `security_detection_engine` Fleet package that is used for distributing prebuilt rules). 
- For custom rules it is set to `1` when the rule is created. 
> info
> It is not incremented on each update. Compare this to the `revision` field.
  - `saved_id` (string) — required
    Kibana [saved search](https://www.elastic.co/docs/explore-analyze/discover/search-sessions) used by the rule to create alerts.
  - `type` (enum) — required
    Rule type
    Values: `saved_query`
  - `alert_suppression` ({}) — optional
    Defines alert suppression configuration.
    - `duration` ({}) — optional
      - `unit` (enum) — required
        Time unit
        Values: `s`, `m`, `h`
      - `value` (integer · min: 1) — required
    - `group_by` ([] object · min: 1 · max: 3) — required
    - `missing_fields_strategy` (enum) — optional
      Describes how alerts will be generated for documents with missing suppress by fields:
doNotSuppress - per each document a separate alert will be created
suppress - only alert will be created per suppress by bucket
      Values: `doNotSuppress`, `suppress`
  - `data_view_id` (string) — optional
  - `filters` ([] object) — optional
    The query and filter context array used to define the conditions for when alerts are created from events. Defaults to an empty array.
> info
> This field is not supported for ES|QL rules.
  - `index` ([] object) — optional
    Indices on which the rule functions. Defaults to the Security Solution indices defined on the Kibana Advanced Settings page (Kibana → Stack Management → Advanced Settings → `securitySolution:defaultIndex`).
> info
> This field is not supported for ES|QL rules.
  - `query` (string) — optional
    [Query](https://www.elastic.co/docs/explore-analyze/query-filter) used by the rule to create alerts.

- For indicator match rules, only the query’s results are used to determine whether an alert is generated.
- ES|QL rules have additional query requirements. Refer to [Create ES|QL](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#create-esql-rule) rules for more information.
  - `language` (enum) — optional
    Values: `kuery`, `lucene`
  - `invocationCount` (integer) — required
  - `timeframeEnd` (string) — required
- **ThresholdRuleCreateProps** (`type: threshold`)
  - `actions` ([] object) — optional
    Array defining the automated actions (notifications) taken when alerts are generated.
    Same fields as `actions` in `EqlRuleCreateProps`
  - `alias_purpose` (enum) — optional
    Values: `savedObjectConversion`, `savedObjectImport`
  - `alias_target_id` (string) — optional
  - `author` ([] object) — optional
    The rule’s author.
  - `building_block_type` (string) — optional
    Determines if the rule acts as a building block. If yes, the value must be `default`.
By default, building-block alerts are not displayed in the UI. These rules are used as a foundation for other rules that do generate alerts.
For more information, refer to [About building block rules](https://www.elastic.co/docs/solutions/security/detect-and-alert/about-building-block-rules).
  - `description` (string · min: 1) — required
    The rule’s description.
  - `enabled` (boolean) — optional
    Determines whether the rule is enabled. Defaults to true.
  - `exceptions_list` ([] object) — optional
    - `id` (string · min: 1) — required
      ID of the exception container
    - `list_id` (string · min: 1) — required
      List ID of the exception container
    - `namespace_type` (enum) — required
      Determines the exceptions validity in rule's Kibana space
      Values: `agnostic`, `single`
    - `type` (enum) — required
      The exception type
      Values: `detection`, `rule_default`, `endpoint`, `endpoint_trusted_apps`, `endpoint_trusted_devices`, `endpoint_events`, `endpoint_host_isolation_exceptions`, `endpoint_blocklists`
  - `false_positives` ([] object) — optional
    String array used to describe common reasons why the rule may issue false-positive alerts. Defaults to an empty array.
  - `from` (string) — optional
    Time from which data is analyzed each time the rule runs, using a date math range. For example, now-4200s means the rule analyzes data from 70 minutes before its start time. Defaults to now-6m (analyzes data from 6 minutes before the start time).
  - `interval` (string) — optional
    Frequency of rule execution, using a date math range. For example, "1h" means the rule runs every hour. Defaults to 5m (5 minutes).
  - `investigation_fields` ({}) — optional
    Schema for fields relating to investigation fields. These are user defined fields we use to highlight
in various features in the UI such as alert details flyout and exceptions auto-population from alert.
    - `field_names` ([] string · min: 1) — required
  - `license` (string) — optional
    The rule's license.
  - `max_signals` (integer · min: 1) — optional
    Maximum number of alerts the rule can create during a single run (the rule’s Max alerts per run [advanced setting](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params) value). Defaults to `100`.
> info
> This setting can be superseded by the [Kibana configuration setting](https://www.elastic.co/docs/reference/kibana/configuration-reference/alerting-settings) `xpack.alerting.rules.run.alerts.max`, which determines the maximum alerts generated by any rule in the Kibana alerting framework. For example, if `xpack.alerting.rules.run.alerts.max` is set to 1000, the rule can generate no more than 1000 alerts even if `max_signals` is set higher.
  - `meta` (object) — optional
    Placeholder for metadata about the rule.
> info
> This field is overwritten when you save changes to the rule’s settings.
  - `name` (string · min: 1) — required
    A human-readable name for the rule.
  - `namespace` (string) — optional
    Has no effect.
  - `note` (string) — optional
    Notes to help investigate alerts produced by the rule.
  - `outcome` (enum) — optional
    Values: `exactMatch`, `aliasMatch`, `conflict`
  - `output_index` (string) — optional — deprecated
    (deprecated) Has no effect.
  - `references` ([] object) — optional
    Array containing notes about or references to relevant information about the rule. Defaults to an empty array.
  - `related_integrations` ([] object) — optional
    - `integration` (string · min: 1) — optional
      A string that does not contain only whitespace characters
    - `package` (string · min: 1) — required
      A string that does not contain only whitespace characters
    - `version` (string · min: 1) — required
      A string that does not contain only whitespace characters
  - `required_fields` ([] object) — optional
    Elasticsearch fields and their types that need to be present for the rule to function.
> info
> The value of `required_fields` does not affect the rule’s behavior, and specifying it incorrectly won’t cause the rule to fail. Use `required_fields` as an informational property to document the fields that the rule expects to be present in the data.
    - `name` (string · min: 1) — required
      Name of an Elasticsearch field
    - `type` (string · min: 1) — required
      Type of the Elasticsearch field
  - `response_actions` ([] union) — optional
    Same options as `response_actions` in `EqlRuleCreateProps`
  - `risk_score` (integer · min: 0 · max: 100) — required
    A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
  - `risk_score_mapping` ([] object) — optional
    Overrides generated alerts' risk_score with a value from the source event
    - `field` (string) — required
      Source event field used to override the default `risk_score`.
    - `operator` (enum) — required
      Values: `equals`
    - `risk_score` (integer · min: 0 · max: 100) — optional
      A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
    - `value` (string) — required
  - `rule_id` (string) — optional
    A stable unique identifier for the rule object. It can be assigned during rule creation. It can be any string, but often is a UUID. It should be unique not only within a given Kibana space, but also across spaces and Elastic environments. The same prebuilt Elastic rule, when installed in two different Kibana spaces or two different Elastic environments, will have the same `rule_id`s.
  - `rule_name_override` (string) — optional
    Sets which field in the source event is used to populate the alert's `signal.rule.name` value (in the UI, this value is displayed on the Rules page in the Rule column). When unspecified, the rule’s `name` value is used. The source field must be a string data type.
  - `setup` (string) — optional
    Populates the rule’s setup guide with instructions on rule prerequisites such as required integrations, configuration steps, and anything else needed for the rule to work correctly.
  - `severity` (enum) — required
    Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
    Values: `low`, `medium`, `high`, `critical`
  - `severity_mapping` ([] object) — optional
    Overrides generated alerts' severity with values from the source event
    - `field` (string) — required
      Source event field used to override the default `severity`.
    - `operator` (enum) — required
      Values: `equals`
    - `severity` (enum) — required
      Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
      Values: `low`, `medium`, `high`, `critical`
    - `value` (string) — required
  - `tags` ([] object) — optional
    String array containing words and phrases to help categorize, filter, and search rules. Defaults to an empty array.
  - `threat` ([] object) — optional
    Same fields as `threat` in `EqlRuleCreateProps`
  - `throttle` (union) — optional
    Defines how often rule actions are taken.
    Values: `no_actions`, `rule`
  - `timeline_id` (string) — optional
    Timeline template ID
  - `timeline_title` (string) — optional
    Timeline template title
  - `timestamp_override` (string) — optional
    Sets the time field used to query indices. When unspecified, rules query the `@timestamp` field. The source field must be an Elasticsearch date data type.
  - `timestamp_override_fallback_disabled` (boolean) — optional
    Disables the fallback to the event's @timestamp field
  - `to` (string) — optional
  - `version` (integer · min: 1) — optional
    The rule's version number.

- For prebuilt rules it represents the version of the rule's content in the source [detection-rules](https://github.com/elastic/detection-rules) repository (and the corresponding `security_detection_engine` Fleet package that is used for distributing prebuilt rules). 
- For custom rules it is set to `1` when the rule is created. 
> info
> It is not incremented on each update. Compare this to the `revision` field.
  - `query` (string) — required
    [Query](https://www.elastic.co/docs/explore-analyze/query-filter) used by the rule to create alerts.

- For indicator match rules, only the query’s results are used to determine whether an alert is generated.
- ES|QL rules have additional query requirements. Refer to [Create ES|QL](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#create-esql-rule) rules for more information.
  - `threshold` ({}) — required
    - `cardinality` ([] object) — optional
      The field on which the cardinality is applied.
      - `field` (string) — required
        The field on which to calculate and compare the cardinality.
      - `value` (integer · min: 0) — required
        The threshold value from which an alert is generated based on unique number of values of cardinality.field.
    - `field` (union) — required
      The field on which the threshold is applied. If you specify an empty array ([]), alerts are generated when the query returns at least the number of results specified in the value field.
      One of: `string[]` or `string`
    - `value` (integer · min: 1) — required
      The threshold value from which an alert is generated.
  - `type` (enum) — required
    Rule type
    Values: `threshold`
  - `alert_suppression` ({}) — optional
    Defines alert suppression configuration.
    - `duration` ({}) — required
      - `unit` (enum) — required
        Time unit
        Values: `s`, `m`, `h`
      - `value` (integer · min: 1) — required
  - `data_view_id` (string) — optional
  - `filters` ([] object) — optional
    The query and filter context array used to define the conditions for when alerts are created from events. Defaults to an empty array.
> info
> This field is not supported for ES|QL rules.
  - `index` ([] object) — optional
    Indices on which the rule functions. Defaults to the Security Solution indices defined on the Kibana Advanced Settings page (Kibana → Stack Management → Advanced Settings → `securitySolution:defaultIndex`).
> info
> This field is not supported for ES|QL rules.
  - `saved_id` (string) — optional
    Kibana [saved search](https://www.elastic.co/docs/explore-analyze/discover/search-sessions) used by the rule to create alerts.
  - `language` (enum) — optional
    Values: `kuery`, `lucene`
  - `invocationCount` (integer) — required
  - `timeframeEnd` (string) — required
- **ThreatMatchRuleCreateProps** (`type: threat_match`)
  - `actions` ([] object) — optional
    Array defining the automated actions (notifications) taken when alerts are generated.
    Same fields as `actions` in `EqlRuleCreateProps`
  - `alias_purpose` (enum) — optional
    Values: `savedObjectConversion`, `savedObjectImport`
  - `alias_target_id` (string) — optional
  - `author` ([] object) — optional
    The rule’s author.
  - `building_block_type` (string) — optional
    Determines if the rule acts as a building block. If yes, the value must be `default`.
By default, building-block alerts are not displayed in the UI. These rules are used as a foundation for other rules that do generate alerts.
For more information, refer to [About building block rules](https://www.elastic.co/docs/solutions/security/detect-and-alert/about-building-block-rules).
  - `description` (string · min: 1) — required
    The rule’s description.
  - `enabled` (boolean) — optional
    Determines whether the rule is enabled. Defaults to true.
  - `exceptions_list` ([] object) — optional
    - `id` (string · min: 1) — required
      ID of the exception container
    - `list_id` (string · min: 1) — required
      List ID of the exception container
    - `namespace_type` (enum) — required
      Determines the exceptions validity in rule's Kibana space
      Values: `agnostic`, `single`
    - `type` (enum) — required
      The exception type
      Values: `detection`, `rule_default`, `endpoint`, `endpoint_trusted_apps`, `endpoint_trusted_devices`, `endpoint_events`, `endpoint_host_isolation_exceptions`, `endpoint_blocklists`
  - `false_positives` ([] object) — optional
    String array used to describe common reasons why the rule may issue false-positive alerts. Defaults to an empty array.
  - `from` (string) — optional
    Time from which data is analyzed each time the rule runs, using a date math range. For example, now-4200s means the rule analyzes data from 70 minutes before its start time. Defaults to now-6m (analyzes data from 6 minutes before the start time).
  - `interval` (string) — optional
    Frequency of rule execution, using a date math range. For example, "1h" means the rule runs every hour. Defaults to 5m (5 minutes).
  - `investigation_fields` ({}) — optional
    Schema for fields relating to investigation fields. These are user defined fields we use to highlight
in various features in the UI such as alert details flyout and exceptions auto-population from alert.
    - `field_names` ([] string · min: 1) — required
  - `license` (string) — optional
    The rule's license.
  - `max_signals` (integer · min: 1) — optional
    Maximum number of alerts the rule can create during a single run (the rule’s Max alerts per run [advanced setting](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params) value). Defaults to `100`.
> info
> This setting can be superseded by the [Kibana configuration setting](https://www.elastic.co/docs/reference/kibana/configuration-reference/alerting-settings) `xpack.alerting.rules.run.alerts.max`, which determines the maximum alerts generated by any rule in the Kibana alerting framework. For example, if `xpack.alerting.rules.run.alerts.max` is set to 1000, the rule can generate no more than 1000 alerts even if `max_signals` is set higher.
  - `meta` (object) — optional
    Placeholder for metadata about the rule.
> info
> This field is overwritten when you save changes to the rule’s settings.
  - `name` (string · min: 1) — required
    A human-readable name for the rule.
  - `namespace` (string) — optional
    Has no effect.
  - `note` (string) — optional
    Notes to help investigate alerts produced by the rule.
  - `outcome` (enum) — optional
    Values: `exactMatch`, `aliasMatch`, `conflict`
  - `output_index` (string) — optional — deprecated
    (deprecated) Has no effect.
  - `references` ([] object) — optional
    Array containing notes about or references to relevant information about the rule. Defaults to an empty array.
  - `related_integrations` ([] object) — optional
    - `integration` (string · min: 1) — optional
      A string that does not contain only whitespace characters
    - `package` (string · min: 1) — required
      A string that does not contain only whitespace characters
    - `version` (string · min: 1) — required
      A string that does not contain only whitespace characters
  - `required_fields` ([] object) — optional
    Elasticsearch fields and their types that need to be present for the rule to function.
> info
> The value of `required_fields` does not affect the rule’s behavior, and specifying it incorrectly won’t cause the rule to fail. Use `required_fields` as an informational property to document the fields that the rule expects to be present in the data.
    - `name` (string · min: 1) — required
      Name of an Elasticsearch field
    - `type` (string · min: 1) — required
      Type of the Elasticsearch field
  - `response_actions` ([] union) — optional
    Same options as `response_actions` in `EqlRuleCreateProps`
  - `risk_score` (integer · min: 0 · max: 100) — required
    A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
  - `risk_score_mapping` ([] object) — optional
    Overrides generated alerts' risk_score with a value from the source event
    - `field` (string) — required
      Source event field used to override the default `risk_score`.
    - `operator` (enum) — required
      Values: `equals`
    - `risk_score` (integer · min: 0 · max: 100) — optional
      A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
    - `value` (string) — required
  - `rule_id` (string) — optional
    A stable unique identifier for the rule object. It can be assigned during rule creation. It can be any string, but often is a UUID. It should be unique not only within a given Kibana space, but also across spaces and Elastic environments. The same prebuilt Elastic rule, when installed in two different Kibana spaces or two different Elastic environments, will have the same `rule_id`s.
  - `rule_name_override` (string) — optional
    Sets which field in the source event is used to populate the alert's `signal.rule.name` value (in the UI, this value is displayed on the Rules page in the Rule column). When unspecified, the rule’s `name` value is used. The source field must be a string data type.
  - `setup` (string) — optional
    Populates the rule’s setup guide with instructions on rule prerequisites such as required integrations, configuration steps, and anything else needed for the rule to work correctly.
  - `severity` (enum) — required
    Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
    Values: `low`, `medium`, `high`, `critical`
  - `severity_mapping` ([] object) — optional
    Overrides generated alerts' severity with values from the source event
    - `field` (string) — required
      Source event field used to override the default `severity`.
    - `operator` (enum) — required
      Values: `equals`
    - `severity` (enum) — required
      Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
      Values: `low`, `medium`, `high`, `critical`
    - `value` (string) — required
  - `tags` ([] object) — optional
    String array containing words and phrases to help categorize, filter, and search rules. Defaults to an empty array.
  - `threat` ([] object) — optional
    Same fields as `threat` in `EqlRuleCreateProps`
  - `throttle` (union) — optional
    Defines how often rule actions are taken.
    Values: `no_actions`, `rule`
  - `timeline_id` (string) — optional
    Timeline template ID
  - `timeline_title` (string) — optional
    Timeline template title
  - `timestamp_override` (string) — optional
    Sets the time field used to query indices. When unspecified, rules query the `@timestamp` field. The source field must be an Elasticsearch date data type.
  - `timestamp_override_fallback_disabled` (boolean) — optional
    Disables the fallback to the event's @timestamp field
  - `to` (string) — optional
  - `version` (integer · min: 1) — optional
    The rule's version number.

- For prebuilt rules it represents the version of the rule's content in the source [detection-rules](https://github.com/elastic/detection-rules) repository (and the corresponding `security_detection_engine` Fleet package that is used for distributing prebuilt rules). 
- For custom rules it is set to `1` when the rule is created. 
> info
> It is not incremented on each update. Compare this to the `revision` field.
  - `query` (string) — required
    [Query](https://www.elastic.co/docs/explore-analyze/query-filter) used by the rule to create alerts.

- For indicator match rules, only the query’s results are used to determine whether an alert is generated.
- ES|QL rules have additional query requirements. Refer to [Create ES|QL](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#create-esql-rule) rules for more information.
  - `threat_index` ([] object) — required
    Elasticsearch indices used to check which field values generate alerts.
  - `threat_mapping` ([] object · min: 1) — required
    Array of entries objects that define mappings between the source event fields and the values in the Elasticsearch threat index. Each entries object must contain these fields:

- field: field from the event indices on which the rule runs
- type: must be mapping
- value: field from the Elasticsearch threat index
  
You can use Boolean and and or logic to define the conditions for when matching fields and values generate alerts. Sibling entries objects are evaluated using or logic, whereas multiple entries in a single entries object use and logic. See Example of Threat Match rule which uses both `and` and `or` logic.
    - `entries` ([] object) — required
      - `field` (string · min: 1) — required
        A string that does not contain only whitespace characters
      - `negate` (boolean) — optional
      - `type` (enum) — required
        Values: `mapping`
      - `value` (string · min: 1) — required
        A string that does not contain only whitespace characters
  - `threat_query` (string) — required
    Query used to determine which fields in the Elasticsearch index are used for generating alerts.
  - `type` (enum) — required
    Rule type
    Values: `threat_match`
  - `alert_suppression` ({}) — optional
    Defines alert suppression configuration.
    - `duration` ({}) — optional
      - `unit` (enum) — required
        Time unit
        Values: `s`, `m`, `h`
      - `value` (integer · min: 1) — required
    - `group_by` ([] object · min: 1 · max: 3) — required
    - `missing_fields_strategy` (enum) — optional
      Describes how alerts will be generated for documents with missing suppress by fields:
doNotSuppress - per each document a separate alert will be created
suppress - only alert will be created per suppress by bucket
      Values: `doNotSuppress`, `suppress`
  - `concurrent_searches` (integer · min: 1) — optional
  - `data_view_id` (string) — optional
  - `filters` ([] object) — optional
    The query and filter context array used to define the conditions for when alerts are created from events. Defaults to an empty array.
> info
> This field is not supported for ES|QL rules.
  - `index` ([] object) — optional
    Indices on which the rule functions. Defaults to the Security Solution indices defined on the Kibana Advanced Settings page (Kibana → Stack Management → Advanced Settings → `securitySolution:defaultIndex`).
> info
> This field is not supported for ES|QL rules.
  - `items_per_search` (integer · min: 1) — optional
  - `saved_id` (string) — optional
    Kibana [saved search](https://www.elastic.co/docs/explore-analyze/discover/search-sessions) used by the rule to create alerts.
  - `threat_filters` ([] object) — optional
  - `threat_indicator_path` (string) — optional
    Defines the path to the threat indicator in the indicator documents (optional)
  - `threat_language` (enum) — optional
    Values: `kuery`, `lucene`
  - `language` (enum) — optional
    Values: `kuery`, `lucene`
  - `invocationCount` (integer) — required
  - `timeframeEnd` (string) — required
- **MachineLearningRuleCreateProps** (`type: machine_learning`)
  - `actions` ([] object) — optional
    Array defining the automated actions (notifications) taken when alerts are generated.
    Same fields as `actions` in `EqlRuleCreateProps`
  - `alias_purpose` (enum) — optional
    Values: `savedObjectConversion`, `savedObjectImport`
  - `alias_target_id` (string) — optional
  - `author` ([] object) — optional
    The rule’s author.
  - `building_block_type` (string) — optional
    Determines if the rule acts as a building block. If yes, the value must be `default`.
By default, building-block alerts are not displayed in the UI. These rules are used as a foundation for other rules that do generate alerts.
For more information, refer to [About building block rules](https://www.elastic.co/docs/solutions/security/detect-and-alert/about-building-block-rules).
  - `description` (string · min: 1) — required
    The rule’s description.
  - `enabled` (boolean) — optional
    Determines whether the rule is enabled. Defaults to true.
  - `exceptions_list` ([] object) — optional
    - `id` (string · min: 1) — required
      ID of the exception container
    - `list_id` (string · min: 1) — required
      List ID of the exception container
    - `namespace_type` (enum) — required
      Determines the exceptions validity in rule's Kibana space
      Values: `agnostic`, `single`
    - `type` (enum) — required
      The exception type
      Values: `detection`, `rule_default`, `endpoint`, `endpoint_trusted_apps`, `endpoint_trusted_devices`, `endpoint_events`, `endpoint_host_isolation_exceptions`, `endpoint_blocklists`
  - `false_positives` ([] object) — optional
    String array used to describe common reasons why the rule may issue false-positive alerts. Defaults to an empty array.
  - `from` (string) — optional
    Time from which data is analyzed each time the rule runs, using a date math range. For example, now-4200s means the rule analyzes data from 70 minutes before its start time. Defaults to now-6m (analyzes data from 6 minutes before the start time).
  - `interval` (string) — optional
    Frequency of rule execution, using a date math range. For example, "1h" means the rule runs every hour. Defaults to 5m (5 minutes).
  - `investigation_fields` ({}) — optional
    Schema for fields relating to investigation fields. These are user defined fields we use to highlight
in various features in the UI such as alert details flyout and exceptions auto-population from alert.
    - `field_names` ([] string · min: 1) — required
  - `license` (string) — optional
    The rule's license.
  - `max_signals` (integer · min: 1) — optional
    Maximum number of alerts the rule can create during a single run (the rule’s Max alerts per run [advanced setting](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params) value). Defaults to `100`.
> info
> This setting can be superseded by the [Kibana configuration setting](https://www.elastic.co/docs/reference/kibana/configuration-reference/alerting-settings) `xpack.alerting.rules.run.alerts.max`, which determines the maximum alerts generated by any rule in the Kibana alerting framework. For example, if `xpack.alerting.rules.run.alerts.max` is set to 1000, the rule can generate no more than 1000 alerts even if `max_signals` is set higher.
  - `meta` (object) — optional
    Placeholder for metadata about the rule.
> info
> This field is overwritten when you save changes to the rule’s settings.
  - `name` (string · min: 1) — required
    A human-readable name for the rule.
  - `namespace` (string) — optional
    Has no effect.
  - `note` (string) — optional
    Notes to help investigate alerts produced by the rule.
  - `outcome` (enum) — optional
    Values: `exactMatch`, `aliasMatch`, `conflict`
  - `output_index` (string) — optional — deprecated
    (deprecated) Has no effect.
  - `references` ([] object) — optional
    Array containing notes about or references to relevant information about the rule. Defaults to an empty array.
  - `related_integrations` ([] object) — optional
    - `integration` (string · min: 1) — optional
      A string that does not contain only whitespace characters
    - `package` (string · min: 1) — required
      A string that does not contain only whitespace characters
    - `version` (string · min: 1) — required
      A string that does not contain only whitespace characters
  - `required_fields` ([] object) — optional
    Elasticsearch fields and their types that need to be present for the rule to function.
> info
> The value of `required_fields` does not affect the rule’s behavior, and specifying it incorrectly won’t cause the rule to fail. Use `required_fields` as an informational property to document the fields that the rule expects to be present in the data.
    - `name` (string · min: 1) — required
      Name of an Elasticsearch field
    - `type` (string · min: 1) — required
      Type of the Elasticsearch field
  - `response_actions` ([] union) — optional
    Same options as `response_actions` in `EqlRuleCreateProps`
  - `risk_score` (integer · min: 0 · max: 100) — required
    A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
  - `risk_score_mapping` ([] object) — optional
    Overrides generated alerts' risk_score with a value from the source event
    - `field` (string) — required
      Source event field used to override the default `risk_score`.
    - `operator` (enum) — required
      Values: `equals`
    - `risk_score` (integer · min: 0 · max: 100) — optional
      A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
    - `value` (string) — required
  - `rule_id` (string) — optional
    A stable unique identifier for the rule object. It can be assigned during rule creation. It can be any string, but often is a UUID. It should be unique not only within a given Kibana space, but also across spaces and Elastic environments. The same prebuilt Elastic rule, when installed in two different Kibana spaces or two different Elastic environments, will have the same `rule_id`s.
  - `rule_name_override` (string) — optional
    Sets which field in the source event is used to populate the alert's `signal.rule.name` value (in the UI, this value is displayed on the Rules page in the Rule column). When unspecified, the rule’s `name` value is used. The source field must be a string data type.
  - `setup` (string) — optional
    Populates the rule’s setup guide with instructions on rule prerequisites such as required integrations, configuration steps, and anything else needed for the rule to work correctly.
  - `severity` (enum) — required
    Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
    Values: `low`, `medium`, `high`, `critical`
  - `severity_mapping` ([] object) — optional
    Overrides generated alerts' severity with values from the source event
    - `field` (string) — required
      Source event field used to override the default `severity`.
    - `operator` (enum) — required
      Values: `equals`
    - `severity` (enum) — required
      Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
      Values: `low`, `medium`, `high`, `critical`
    - `value` (string) — required
  - `tags` ([] object) — optional
    String array containing words and phrases to help categorize, filter, and search rules. Defaults to an empty array.
  - `threat` ([] object) — optional
    Same fields as `threat` in `EqlRuleCreateProps`
  - `throttle` (union) — optional
    Defines how often rule actions are taken.
    Values: `no_actions`, `rule`
  - `timeline_id` (string) — optional
    Timeline template ID
  - `timeline_title` (string) — optional
    Timeline template title
  - `timestamp_override` (string) — optional
    Sets the time field used to query indices. When unspecified, rules query the `@timestamp` field. The source field must be an Elasticsearch date data type.
  - `timestamp_override_fallback_disabled` (boolean) — optional
    Disables the fallback to the event's @timestamp field
  - `to` (string) — optional
  - `version` (integer · min: 1) — optional
    The rule's version number.

- For prebuilt rules it represents the version of the rule's content in the source [detection-rules](https://github.com/elastic/detection-rules) repository (and the corresponding `security_detection_engine` Fleet package that is used for distributing prebuilt rules). 
- For custom rules it is set to `1` when the rule is created. 
> info
> It is not incremented on each update. Compare this to the `revision` field.
  - `anomaly_threshold` (integer · min: 0) — required
    Anomaly score threshold above which the rule creates an alert. Valid values are from 0 to 100.
  - `machine_learning_job_id` (union) — required
    Machine learning job ID(s) the rule monitors for anomaly scores.
    One of: `string[]` or `string`
  - `type` (enum) — required
    Rule type
    Values: `machine_learning`
  - `alert_suppression` ({}) — optional
    Defines alert suppression configuration.
    - `duration` ({}) — optional
      - `unit` (enum) — required
        Time unit
        Values: `s`, `m`, `h`
      - `value` (integer · min: 1) — required
    - `group_by` ([] object · min: 1 · max: 3) — required
    - `missing_fields_strategy` (enum) — optional
      Describes how alerts will be generated for documents with missing suppress by fields:
doNotSuppress - per each document a separate alert will be created
suppress - only alert will be created per suppress by bucket
      Values: `doNotSuppress`, `suppress`
  - `invocationCount` (integer) — required
  - `timeframeEnd` (string) — required
- **NewTermsRuleCreateProps** (`type: new_terms`)
  - `actions` ([] object) — optional
    Array defining the automated actions (notifications) taken when alerts are generated.
    Same fields as `actions` in `EqlRuleCreateProps`
  - `alias_purpose` (enum) — optional
    Values: `savedObjectConversion`, `savedObjectImport`
  - `alias_target_id` (string) — optional
  - `author` ([] object) — optional
    The rule’s author.
  - `building_block_type` (string) — optional
    Determines if the rule acts as a building block. If yes, the value must be `default`.
By default, building-block alerts are not displayed in the UI. These rules are used as a foundation for other rules that do generate alerts.
For more information, refer to [About building block rules](https://www.elastic.co/docs/solutions/security/detect-and-alert/about-building-block-rules).
  - `description` (string · min: 1) — required
    The rule’s description.
  - `enabled` (boolean) — optional
    Determines whether the rule is enabled. Defaults to true.
  - `exceptions_list` ([] object) — optional
    - `id` (string · min: 1) — required
      ID of the exception container
    - `list_id` (string · min: 1) — required
      List ID of the exception container
    - `namespace_type` (enum) — required
      Determines the exceptions validity in rule's Kibana space
      Values: `agnostic`, `single`
    - `type` (enum) — required
      The exception type
      Values: `detection`, `rule_default`, `endpoint`, `endpoint_trusted_apps`, `endpoint_trusted_devices`, `endpoint_events`, `endpoint_host_isolation_exceptions`, `endpoint_blocklists`
  - `false_positives` ([] object) — optional
    String array used to describe common reasons why the rule may issue false-positive alerts. Defaults to an empty array.
  - `from` (string) — optional
    Time from which data is analyzed each time the rule runs, using a date math range. For example, now-4200s means the rule analyzes data from 70 minutes before its start time. Defaults to now-6m (analyzes data from 6 minutes before the start time).
  - `interval` (string) — optional
    Frequency of rule execution, using a date math range. For example, "1h" means the rule runs every hour. Defaults to 5m (5 minutes).
  - `investigation_fields` ({}) — optional
    Schema for fields relating to investigation fields. These are user defined fields we use to highlight
in various features in the UI such as alert details flyout and exceptions auto-population from alert.
    - `field_names` ([] string · min: 1) — required
  - `license` (string) — optional
    The rule's license.
  - `max_signals` (integer · min: 1) — optional
    Maximum number of alerts the rule can create during a single run (the rule’s Max alerts per run [advanced setting](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params) value). Defaults to `100`.
> info
> This setting can be superseded by the [Kibana configuration setting](https://www.elastic.co/docs/reference/kibana/configuration-reference/alerting-settings) `xpack.alerting.rules.run.alerts.max`, which determines the maximum alerts generated by any rule in the Kibana alerting framework. For example, if `xpack.alerting.rules.run.alerts.max` is set to 1000, the rule can generate no more than 1000 alerts even if `max_signals` is set higher.
  - `meta` (object) — optional
    Placeholder for metadata about the rule.
> info
> This field is overwritten when you save changes to the rule’s settings.
  - `name` (string · min: 1) — required
    A human-readable name for the rule.
  - `namespace` (string) — optional
    Has no effect.
  - `note` (string) — optional
    Notes to help investigate alerts produced by the rule.
  - `outcome` (enum) — optional
    Values: `exactMatch`, `aliasMatch`, `conflict`
  - `output_index` (string) — optional — deprecated
    (deprecated) Has no effect.
  - `references` ([] object) — optional
    Array containing notes about or references to relevant information about the rule. Defaults to an empty array.
  - `related_integrations` ([] object) — optional
    - `integration` (string · min: 1) — optional
      A string that does not contain only whitespace characters
    - `package` (string · min: 1) — required
      A string that does not contain only whitespace characters
    - `version` (string · min: 1) — required
      A string that does not contain only whitespace characters
  - `required_fields` ([] object) — optional
    Elasticsearch fields and their types that need to be present for the rule to function.
> info
> The value of `required_fields` does not affect the rule’s behavior, and specifying it incorrectly won’t cause the rule to fail. Use `required_fields` as an informational property to document the fields that the rule expects to be present in the data.
    - `name` (string · min: 1) — required
      Name of an Elasticsearch field
    - `type` (string · min: 1) — required
      Type of the Elasticsearch field
  - `response_actions` ([] union) — optional
    Same options as `response_actions` in `EqlRuleCreateProps`
  - `risk_score` (integer · min: 0 · max: 100) — required
    A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
  - `risk_score_mapping` ([] object) — optional
    Overrides generated alerts' risk_score with a value from the source event
    - `field` (string) — required
      Source event field used to override the default `risk_score`.
    - `operator` (enum) — required
      Values: `equals`
    - `risk_score` (integer · min: 0 · max: 100) — optional
      A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
    - `value` (string) — required
  - `rule_id` (string) — optional
    A stable unique identifier for the rule object. It can be assigned during rule creation. It can be any string, but often is a UUID. It should be unique not only within a given Kibana space, but also across spaces and Elastic environments. The same prebuilt Elastic rule, when installed in two different Kibana spaces or two different Elastic environments, will have the same `rule_id`s.
  - `rule_name_override` (string) — optional
    Sets which field in the source event is used to populate the alert's `signal.rule.name` value (in the UI, this value is displayed on the Rules page in the Rule column). When unspecified, the rule’s `name` value is used. The source field must be a string data type.
  - `setup` (string) — optional
    Populates the rule’s setup guide with instructions on rule prerequisites such as required integrations, configuration steps, and anything else needed for the rule to work correctly.
  - `severity` (enum) — required
    Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
    Values: `low`, `medium`, `high`, `critical`
  - `severity_mapping` ([] object) — optional
    Overrides generated alerts' severity with values from the source event
    - `field` (string) — required
      Source event field used to override the default `severity`.
    - `operator` (enum) — required
      Values: `equals`
    - `severity` (enum) — required
      Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
      Values: `low`, `medium`, `high`, `critical`
    - `value` (string) — required
  - `tags` ([] object) — optional
    String array containing words and phrases to help categorize, filter, and search rules. Defaults to an empty array.
  - `threat` ([] object) — optional
    Same fields as `threat` in `EqlRuleCreateProps`
  - `throttle` (union) — optional
    Defines how often rule actions are taken.
    Values: `no_actions`, `rule`
  - `timeline_id` (string) — optional
    Timeline template ID
  - `timeline_title` (string) — optional
    Timeline template title
  - `timestamp_override` (string) — optional
    Sets the time field used to query indices. When unspecified, rules query the `@timestamp` field. The source field must be an Elasticsearch date data type.
  - `timestamp_override_fallback_disabled` (boolean) — optional
    Disables the fallback to the event's @timestamp field
  - `to` (string) — optional
  - `version` (integer · min: 1) — optional
    The rule's version number.

- For prebuilt rules it represents the version of the rule's content in the source [detection-rules](https://github.com/elastic/detection-rules) repository (and the corresponding `security_detection_engine` Fleet package that is used for distributing prebuilt rules). 
- For custom rules it is set to `1` when the rule is created. 
> info
> It is not incremented on each update. Compare this to the `revision` field.
  - `history_window_start` (string · min: 1) — required
    Start date to use when checking if a term has been seen before. Supports relative dates – for example, now-30d will search the last 30 days of data when checking if a term is new. We do not recommend using absolute dates, which can cause issues with rule performance due to querying increasing amounts of data over time.
  - `new_terms_fields` ([] object · min: 1 · max: 3) — required
    Fields to monitor for new values.
  - `query` (string) — required
    [Query](https://www.elastic.co/docs/explore-analyze/query-filter) used by the rule to create alerts.

- For indicator match rules, only the query’s results are used to determine whether an alert is generated.
- ES|QL rules have additional query requirements. Refer to [Create ES|QL](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#create-esql-rule) rules for more information.
  - `type` (enum) — required
    Rule type
    Values: `new_terms`
  - `alert_suppression` ({}) — optional
    Defines alert suppression configuration.
    - `duration` ({}) — optional
      - `unit` (enum) — required
        Time unit
        Values: `s`, `m`, `h`
      - `value` (integer · min: 1) — required
    - `group_by` ([] object · min: 1 · max: 3) — required
    - `missing_fields_strategy` (enum) — optional
      Describes how alerts will be generated for documents with missing suppress by fields:
doNotSuppress - per each document a separate alert will be created
suppress - only alert will be created per suppress by bucket
      Values: `doNotSuppress`, `suppress`
  - `data_view_id` (string) — optional
  - `filters` ([] object) — optional
    The query and filter context array used to define the conditions for when alerts are created from events. Defaults to an empty array.
> info
> This field is not supported for ES|QL rules.
  - `index` ([] object) — optional
    Indices on which the rule functions. Defaults to the Security Solution indices defined on the Kibana Advanced Settings page (Kibana → Stack Management → Advanced Settings → `securitySolution:defaultIndex`).
> info
> This field is not supported for ES|QL rules.
  - `language` (enum) — optional
    Values: `kuery`, `lucene`
  - `invocationCount` (integer) — required
  - `timeframeEnd` (string) — required
- **EsqlRuleCreateProps** (`type: esql`)
  - `actions` ([] object) — optional
    Array defining the automated actions (notifications) taken when alerts are generated.
    Same fields as `actions` in `EqlRuleCreateProps`
  - `alias_purpose` (enum) — optional
    Values: `savedObjectConversion`, `savedObjectImport`
  - `alias_target_id` (string) — optional
  - `author` ([] object) — optional
    The rule’s author.
  - `building_block_type` (string) — optional
    Determines if the rule acts as a building block. If yes, the value must be `default`.
By default, building-block alerts are not displayed in the UI. These rules are used as a foundation for other rules that do generate alerts.
For more information, refer to [About building block rules](https://www.elastic.co/docs/solutions/security/detect-and-alert/about-building-block-rules).
  - `description` (string · min: 1) — required
    The rule’s description.
  - `enabled` (boolean) — optional
    Determines whether the rule is enabled. Defaults to true.
  - `exceptions_list` ([] object) — optional
    - `id` (string · min: 1) — required
      ID of the exception container
    - `list_id` (string · min: 1) — required
      List ID of the exception container
    - `namespace_type` (enum) — required
      Determines the exceptions validity in rule's Kibana space
      Values: `agnostic`, `single`
    - `type` (enum) — required
      The exception type
      Values: `detection`, `rule_default`, `endpoint`, `endpoint_trusted_apps`, `endpoint_trusted_devices`, `endpoint_events`, `endpoint_host_isolation_exceptions`, `endpoint_blocklists`
  - `false_positives` ([] object) — optional
    String array used to describe common reasons why the rule may issue false-positive alerts. Defaults to an empty array.
  - `from` (string) — optional
    Time from which data is analyzed each time the rule runs, using a date math range. For example, now-4200s means the rule analyzes data from 70 minutes before its start time. Defaults to now-6m (analyzes data from 6 minutes before the start time).
  - `interval` (string) — optional
    Frequency of rule execution, using a date math range. For example, "1h" means the rule runs every hour. Defaults to 5m (5 minutes).
  - `investigation_fields` ({}) — optional
    Schema for fields relating to investigation fields. These are user defined fields we use to highlight
in various features in the UI such as alert details flyout and exceptions auto-population from alert.
    - `field_names` ([] string · min: 1) — required
  - `license` (string) — optional
    The rule's license.
  - `max_signals` (integer · min: 1) — optional
    Maximum number of alerts the rule can create during a single run (the rule’s Max alerts per run [advanced setting](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#rule-ui-advanced-params) value). Defaults to `100`.
> info
> This setting can be superseded by the [Kibana configuration setting](https://www.elastic.co/docs/reference/kibana/configuration-reference/alerting-settings) `xpack.alerting.rules.run.alerts.max`, which determines the maximum alerts generated by any rule in the Kibana alerting framework. For example, if `xpack.alerting.rules.run.alerts.max` is set to 1000, the rule can generate no more than 1000 alerts even if `max_signals` is set higher.
  - `meta` (object) — optional
    Placeholder for metadata about the rule.
> info
> This field is overwritten when you save changes to the rule’s settings.
  - `name` (string · min: 1) — required
    A human-readable name for the rule.
  - `namespace` (string) — optional
    Has no effect.
  - `note` (string) — optional
    Notes to help investigate alerts produced by the rule.
  - `outcome` (enum) — optional
    Values: `exactMatch`, `aliasMatch`, `conflict`
  - `output_index` (string) — optional — deprecated
    (deprecated) Has no effect.
  - `references` ([] object) — optional
    Array containing notes about or references to relevant information about the rule. Defaults to an empty array.
  - `related_integrations` ([] object) — optional
    - `integration` (string · min: 1) — optional
      A string that does not contain only whitespace characters
    - `package` (string · min: 1) — required
      A string that does not contain only whitespace characters
    - `version` (string · min: 1) — required
      A string that does not contain only whitespace characters
  - `required_fields` ([] object) — optional
    Elasticsearch fields and their types that need to be present for the rule to function.
> info
> The value of `required_fields` does not affect the rule’s behavior, and specifying it incorrectly won’t cause the rule to fail. Use `required_fields` as an informational property to document the fields that the rule expects to be present in the data.
    - `name` (string · min: 1) — required
      Name of an Elasticsearch field
    - `type` (string · min: 1) — required
      Type of the Elasticsearch field
  - `response_actions` ([] union) — optional
    Same options as `response_actions` in `EqlRuleCreateProps`
  - `risk_score` (integer · min: 0 · max: 100) — required
    A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
  - `risk_score_mapping` ([] object) — optional
    Overrides generated alerts' risk_score with a value from the source event
    - `field` (string) — required
      Source event field used to override the default `risk_score`.
    - `operator` (enum) — required
      Values: `equals`
    - `risk_score` (integer · min: 0 · max: 100) — optional
      A numerical representation of the alert's severity from 0 to 100, where:
* `0` - `21` represents low severity
* `22` - `47` represents medium severity
* `48` - `73` represents high severity
* `74` - `100` represents critical severity
    - `value` (string) — required
  - `rule_id` (string) — optional
    A stable unique identifier for the rule object. It can be assigned during rule creation. It can be any string, but often is a UUID. It should be unique not only within a given Kibana space, but also across spaces and Elastic environments. The same prebuilt Elastic rule, when installed in two different Kibana spaces or two different Elastic environments, will have the same `rule_id`s.
  - `rule_name_override` (string) — optional
    Sets which field in the source event is used to populate the alert's `signal.rule.name` value (in the UI, this value is displayed on the Rules page in the Rule column). When unspecified, the rule’s `name` value is used. The source field must be a string data type.
  - `setup` (string) — optional
    Populates the rule’s setup guide with instructions on rule prerequisites such as required integrations, configuration steps, and anything else needed for the rule to work correctly.
  - `severity` (enum) — required
    Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
    Values: `low`, `medium`, `high`, `critical`
  - `severity_mapping` ([] object) — optional
    Overrides generated alerts' severity with values from the source event
    - `field` (string) — required
      Source event field used to override the default `severity`.
    - `operator` (enum) — required
      Values: `equals`
    - `severity` (enum) — required
      Severity level of alerts produced by the rule, which must be one of the following:
* `low`: Alerts that are of interest but generally not considered to be security incidents
* `medium`: Alerts that require investigation
* `high`: Alerts that require immediate investigation
* `critical`: Alerts that indicate it is highly likely a security incident has occurred
      Values: `low`, `medium`, `high`, `critical`
    - `value` (string) — required
  - `tags` ([] object) — optional
    String array containing words and phrases to help categorize, filter, and search rules. Defaults to an empty array.
  - `threat` ([] object) — optional
    Same fields as `threat` in `EqlRuleCreateProps`
  - `throttle` (union) — optional
    Defines how often rule actions are taken.
    Values: `no_actions`, `rule`
  - `timeline_id` (string) — optional
    Timeline template ID
  - `timeline_title` (string) — optional
    Timeline template title
  - `timestamp_override` (string) — optional
    Sets the time field used to query indices. When unspecified, rules query the `@timestamp` field. The source field must be an Elasticsearch date data type.
  - `timestamp_override_fallback_disabled` (boolean) — optional
    Disables the fallback to the event's @timestamp field
  - `to` (string) — optional
  - `version` (integer · min: 1) — optional
    The rule's version number.

- For prebuilt rules it represents the version of the rule's content in the source [detection-rules](https://github.com/elastic/detection-rules) repository (and the corresponding `security_detection_engine` Fleet package that is used for distributing prebuilt rules). 
- For custom rules it is set to `1` when the rule is created. 
> info
> It is not incremented on each update. Compare this to the `revision` field.
  - `alert_suppression` ({}) — optional
    Defines alert suppression configuration.
    - `duration` ({}) — optional
      - `unit` (enum) — required
        Time unit
        Values: `s`, `m`, `h`
      - `value` (integer · min: 1) — required
    - `group_by` ([] object · min: 1 · max: 3) — required
    - `missing_fields_strategy` (enum) — optional
      Describes how alerts will be generated for documents with missing suppress by fields:
doNotSuppress - per each document a separate alert will be created
suppress - only alert will be created per suppress by bucket
      Values: `doNotSuppress`, `suppress`
  - `language` (enum) — required
    Values: `esql`
  - `query` (string) — required
    [Query](https://www.elastic.co/docs/explore-analyze/query-filter) used by the rule to create alerts.

- For indicator match rules, only the query’s results are used to determine whether an alert is generated.
- ES|QL rules have additional query requirements. Refer to [Create ES|QL](https://www.elastic.co/docs/solutions/security/detect-and-alert/create-detection-rule#create-esql-rule) rules for more information.
  - `type` (enum) — required
    Rule type
    Values: `esql`
  - `invocationCount` (integer) — required
  - `timeframeEnd` (string) — required

## Responses

#### `200`

Successful response

`application/json`

- `isAborted` (boolean)
- `logs` ([] object)
  - `duration` (integer)
    Execution duration in milliseconds
  - `errors` ([] string)
  - `requests` ([] object)
    - `description` (string · min: 1)
      A string that does not contain only whitespace characters
    - `duration` (integer)
    - `request` (string · min: 1)
      A string that does not contain only whitespace characters
    - `request_type` (string · min: 1)
      A string that does not contain only whitespace characters
  - `startedAt` (string · min: 1)
    A string that does not contain only whitespace characters
  - `warnings` ([] string)
- `previewId` (string · min: 1)
  A string that does not contain only whitespace characters
#### `400`

Invalid input data response

`application/json`

One of:
- **PlatformErrorResponse**
  - `error` (string)
  - `message` (string)
  - `statusCode` (integer)
- **SiemErrorResponse**
  - `message` (string)
  - `status_code` (integer)
#### `401`

Unsuccessful authentication response

`application/json`

- `error` (string)
- `message` (string)
- `statusCode` (integer)
#### `500`

Internal server error response

`application/json`

- `message` (string)
- `status_code` (integer)
## Code Examples

#### Console

```console
POST /api/detection_engine/rules/preview
{
  "description": "Find matching events",
  "from": "now-24h",
  "index": [
    "logs-*"
  ],
  "invocationCount": 1,
  "language": "kuery",
  "max_signals": 20,
  "name": "Rule preview",
  "query": "process.name : *",
  "risk_score": 25,
  "severity": "low",
  "timeframeEnd": "2025-01-20T12:00:00.000Z",
  "to": "now",
  "type": "query"
}
```

#### curl

```curl
curl -X POST "https://{kibana_url}/api/detection_engine/rules/preview" \
  -H "Content-Type: application/json" \
  -d '{
  "description": "Find matching events",
  "from": "now-24h",
  "index": [
    "logs-*"
  ],
  "invocationCount": 1,
  "language": "kuery",
  "max_signals": 20,
  "name": "Rule preview",
  "query": "process.name : *",
  "risk_score": 25,
  "severity": "low",
  "timeframeEnd": "2025-01-20T12:00:00.000Z",
  "to": "now",
  "type": "query"
}'
```

## Response Examples

#### Success

```json
{
  "isAborted": false,
  "logs": [
    {
      "duration": 45,
      "errors": [],
      "requests": [],
      "startedAt": "2025-01-20T10:00:00.000Z",
      "warnings": []
    }
  ],
  "previewId": "7f1c9d1e-4c8a-4a3e-9a5d-0d4f6e1b2a90"
}
```

#### Bad

```json
{
  "error": "Bad Request",
  "message": "[request body].timeframeEnd: expected string, received null",
  "statusCode": 400
}
```

#### Unauthorized

```json
{
  "error": "Unauthorized",
  "message": "[security_exception\n\tRoot causes:\n\t\tsecurity_exception: unable to authenticate user [elastic] for REST request [/_security/_authenticate]]: unable to authenticate user [elastic] for REST request [/_security/_authenticate]",
  "statusCode": 401
}
```

#### Server error

```json
{
  "message": "Internal Server Error",
  "status_code": 500
}
```

